DataJoint for MATLAB is a high-level programming interface for relational databases designed to support data processing chains in science labs. DataJoint is built on the foundation of the relational data model and prescribes a consistent method for organizing, populating, and querying data.
DataJoint was initially developed in 2009 by Dimitri Yatsenko in Andreas Tolias' Lab for the distributed processing and management of large volumes of data streaming from regular experiments. Starting in 2011, DataJoint has been available as an open-source project adopted by other labs and improved through contributions from several developers.
Installation
(Recommended) Greater than R2016b
- Utilize MATLAB built-in GUI i.e. Top Ribbon -> Add-Ons -> Get Add-Ons
- Search and Select
DataJoint
- Select Add from GitHub
Using GHToolbox (FileExchange Community Toolbox)
- Install GHToolbox using using an appropriate method in https://github.com/datajoint/GHToolbox
- run:
ghtb.install('datajoint/datajoint-matlab')
Less than R2016b
- Utilize MATLAB built-in GUI i.e. Top Ribbon -> Add-Ons -> Get Add-Ons
- Search and Select
DataJoint
- Select Download from GitHub
- Save
DataJoint.mltbx
locally - Navigate in MATLAB tree browser to saved toolbox file
- Right-Click and Select Install
- Select Install
From Source
- Download
DataJoint.mltbx
locally - Navigate in MATLAB tree browser to saved toolbox file
- Right-Click and Select Install
- Select Install
Config
For help in utilizing dj.config
(added in 3.4.0
), you may access the help via help('dj.config')
or review it online here. Formal documentation to follow.
Running Tests Locally
- Create an
.env
with desired development environment values e.g.
MATLAB_USER=rguzman
MATLAB_LICENSE=IyBCRUd... # For image usage instructions see https://github.com/guzman-raphael/matlab, https://hub.docker.com/r/raphaelguzman/matlab
MATLAB_VERSION=R2019a
MATLAB_HOSTID=XX:XX:XX:XX:XX:XX
MATLAB_UID=1000
MATLAB_GID=1000
MYSQL_TAG=5.7
MINIO_VER=RELEASE.2022-01-03T18-22-58Z
cp local-docker-compose.yaml docker-compose.yaml
docker-compose up
(Note configuredJUPYTER_PASSWORD
)- Select a means of running MATLAB e.g. Jupyter Notebook, GUI, or Terminal (see bottom)
- Add
tests
directory to path e.g. in MATLAB,addpath('tests')
- Run desired tests. Some examples are as follows:
Use Case | MATLAB Code |
---|---|
Run all tests | run(Main) |
Run one class of tests | run(TestTls) |
Run one specific test | runtests('TestTls/TestTls_testInsecureConn') |
Run tests based on test name | import matlab.unittest.TestSuite; import matlab.unittest.selectors.HasName; import matlab.unittest.constraints.ContainsSubstring; suite = TestSuite.fromClass(?Main, ... HasName(ContainsSubstring('Conn'))); run(suite) |
Launch Jupyter Notebook
- Navigate to
localhost:8888
- Input Jupyter password
- Launch a notebook i.e.
New > MATLAB
Launch MATLAB GUI (supports remote interactive debugger)
- Shell into
datajoint-matlab_app_1
i.e.docker exec -it datajoint-matlab_app_1 bash
- Launch Matlab by runnning command
matlab
Launch MATLAB Terminal
- Shell into
datajoint-matlab_app_1
i.e.docker exec -it datajoint-matlab_app_1 bash
- Launch Matlab with no GUI by runnning command
matlab -nodisplay