Skip to content

Commit 0d60e3d

Browse files
committed
Add FAQ page
1 parent 799fcc9 commit 0d60e3d

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

docs/src/faq.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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

Comments
 (0)