|
| 1 | +# Frequently Asked Questions |
| 2 | + |
| 3 | +## How do I use DataJoint with a GUI? |
| 4 | + |
| 5 | +1. The DataJoint Works platform is set up as a fully managed service to host and execute data pipelines. |
| 6 | + |
| 7 | +2. [LabBook](https://github.com/datajoint/datajoint-labbook) is an open source project |
| 8 | +for data entry. |
| 9 | + |
| 10 | +## Does DataJoint support other programming languages? |
| 11 | + |
| 12 | +DataJoint [Python](https://datajoint.com/docs/core/datajoint-python/) and [Matlab] |
| 13 | +(https://datajoint.com/docs/core/datajoint-matlab/) APIs are both actively supported. |
| 14 | +Previous projects implemented some DataJoint features in |
| 15 | +[Julia](https://github.com/BrainCOGS/neuronex_workshop_2018/tree/julia/julia) and |
| 16 | +[Rust](https://github.com/datajoint/datajoint-core). DataJoint's data model and data |
| 17 | +representation are largely language independent, which means that any language with a |
| 18 | +DataJoint client can work with a data pipeline defined in any other language. DataJoint |
| 19 | +clients for other programming languages will be implemented based on demand. All |
| 20 | +languages must comply to the same data model and computation approach as defined in |
| 21 | +[DataJoint: a simpler relational data model](https://arxiv.org/abs/1807.11104). |
| 22 | + |
| 23 | +## Can I use DataJoint with my current database? |
| 24 | + |
| 25 | +Researchers use many different tools to keep records, from simple formalized file |
| 26 | +heirarchies to complete software packages for colony management and standard file types |
| 27 | +like NWB. Existing projects have built interfaces with many such tools, such as |
| 28 | +[PyRAT](https://github.com/SFB1089/adamacs/blob/main/notebooks/03_pyrat_insert.ipynb). |
| 29 | +The only requirement for interface is that tool has an open API. Contact |
| 30 | +[[email protected]](mailto:[email protected]) with inquiries. The DataJoint |
| 31 | +team will consider development requests based on community demand. |
| 32 | + |
| 33 | +## Is DataJoint an ORM? |
| 34 | + |
| 35 | +Programmers are familiar with object-relational mappings (ORM) in various programming |
| 36 | +languages. Python in particular has several popular ORMs such as |
| 37 | +[SQLAlchemy](https://www.sqlalchemy.org/) and [Django ORM](https://tutorial.djangogirls.org/en/django_orm/). |
| 38 | +The purpose of ORMs is to allow representations and manipulations of objects from the |
| 39 | +host programming language as data in a relational database. ORMs allow making objects |
| 40 | +persistent between program executions by creating a bridge (i.e., mapping) between the |
| 41 | +object model used by the host language and the relational model allowed by the database. |
| 42 | +The result is always a compromise, usually toward the object model. ORMs usually forgo |
| 43 | +key concepts, features, and capabilities of the relational model for the sake of |
| 44 | +convenient programming constructs in the language. |
| 45 | + |
| 46 | +In contrast, DataJoint implements a data model that is a refinement of the relational |
| 47 | +data model without compromising its core principles of data representation and queries. |
| 48 | +DataJoint supports data integrity (entity integrity, referential integrity, and group |
| 49 | +integrity) and provides a fully capable relational query language. DataJoint remains |
| 50 | +absolutely data-centric, with the primary focus on the structure and integrity of the |
| 51 | +data pipeline. Other ORMs are more application-centric, primarily focusing on the |
| 52 | +application design while the database plays a secondary role supporting the application |
| 53 | +with object persistence and sharing. |
| 54 | + |
| 55 | +## What is the difference between DataJoint and Alyx? |
| 56 | + |
| 57 | +[Alyx](https://github.com/cortex-lab/alyx) is an experiment management database |
| 58 | +application developed in Kenneth Harris' lab at UCL. |
| 59 | + |
| 60 | +Alyx is an application with a fixed pipeline design with a nice graphical user |
| 61 | +interface. In contrast, DataJoint is a general-purpose library for designing and |
| 62 | +building data processing pipelines. |
| 63 | + |
| 64 | +Alyx is geared towards ease of data entry and tracking for a specific workflow |
| 65 | +(e.g. mouse colony information and some pre-specified experiments) and data types. |
| 66 | +DataJoint could be used as a more general purposes tool to design, implement, and |
| 67 | +execute processing on such workflows/pipelines from scratch, and DataJoint focuses on |
| 68 | +flexibility, data integrity, and ease of data analysis. The purposes are partly |
| 69 | +overlapping and complementary. The |
| 70 | +[International Brain Lab project](https://internationalbrainlab.com) is developing a |
| 71 | +bridge from Alyx to DataJoint, hosted as an |
| 72 | +[open-source project](https://github.com/datajoint-company/ibl-pipeline). It |
| 73 | +implements a DataJoint schema that replicates the major features of the Alyx |
| 74 | +application and a synchronization script from an existing Alyx database to its |
| 75 | +DataJoint counterpart. |
0 commit comments