syntalos
Synchronized data acquisition from diverse sources and flexible control for behavior experiments
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 2 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (19.3%) to scientific vocabulary
Keywords
Repository
Synchronized data acquisition from diverse sources and flexible control for behavior experiments
Basic Info
- Host: GitHub
- Owner: syntalos
- License: lgpl-3.0
- Language: C++
- Default Branch: master
- Homepage: https://syntalos.org
- Size: 15.4 MB
Statistics
- Stars: 45
- Watchers: 6
- Forks: 6
- Open Issues: 0
- Releases: 12
Topics
Metadata Files
README.md
Syntalos
Syntalos (formerly known as MazeAmaze) is a software for timestamp-synchronized parallel data acquisition from diverse data sources, such as cameras, microendoscopes, Intan electrophysiology amplifiers or Firmata-based serial interfaces. The software also allows user-defined closed-loop interventions via its built-in Python scripting support. It is specifically designed for use in (neuro)scientific in vivo behavior experiments.
Syntalos is built with a set of core principles in mind: * Timestamps of all data sources of an experiment should be synchronized (within tolerance limits), so data at specific points in time can be directly compared. If hardware synchronization is unavailable, a software solution is used. * A data acquistion task must not block a different acquistion or processing task. * Data is stored in a fixed directory structure (Experiment Directory Layout, EDL) with all metadata alongside the data. * The software must account for experimenter error and have sane failure modes (autocorrect bad experimenter input, never have a component fail silently, ...) * The software must never auto-adjust parameters without logging the fact * Syntalos is Linux-native: It is written to be run on Linux, which enables it to make use of some beneficial Linux-specific functionality to increase its robustness or performance (a Windows port is likely possible, but would need extensive testing).
For Users
You can install Syntalos directly from your App-Center if the Flathub repository is set up on your Linux system.
You can find quick instructions to install Syntalos on various Linux distributions via our Quick Install Guide.
We also provide more detailed installation instructions and links to prebuilt packages in the Syntalos documentation. The documentation also contains information how to best use Syntalos.
To make Syntalos work for your experimental setup, you can either create new modules and integration code, or utilize already existing modules to acquire and transform data without any required coding! You can find a list of built-in modules on our website.
Modules
Syntalos modules are self-contained entities which can perform arbitrary data acquisition, processing and/or storage tasks. All modules are supervised and driven by the Syntalos engine and can communicate with each other using data streams.
You can find a list of all currently supported modules as well as their documentation on our website. Be aware that some modules require additional software to run, e.g. camera drivers.
Citation
If you are using Syntalos for your research, we would be delighted if you would cite our software in your publication! Please use the following publication in citations:
Klumpp, M. et al. Syntalos: a software for precise synchronization of simultaneous multi-modal data acquisition and closed-loop interventions. Nat Commun 16, 708 (2025).
DOI: https://doi.org/10.1038/s41467-025-56081-9
For Developers
This section is for everyone who wants to build Syntalos from source, or wants to change its code to submit a change, bugfix or new module.
Dependencies
- C++20 compatible compiler (GCC >= 12 or Clang >= 18. GCC is recommended)
- Meson (>= 1.2.2)
- Qt6 (>= 6.4)
- Qt6 Test
- Qt6 OpenGL
- Qt6 SVG
- Qt6 SerialPort
- GLib (>= 2.58)
- Iceoryx (>= 2.0)
- Eigen3
- TOML++
- OpenCV (>= 4.1)
- FFmpeg (>= 4.1)
- GStreamer (>= 1.0)
- PipeWire
- KF6 Archive
- KF6 TextEditor
- pybind11
- libusb (>= 1.0)
- ImGui / ImPlot (optional, needed for plotting)
Quick Build Instructions
We recommend Debian 13 (Trixie) or Ubuntu 24.04 (Noble Numbat) to build & run Syntalos,
but any Linux distribution that has a recent enough C++ compiler and Qt version
should work.
On Ubuntu 24.04, you can get some required updated dependencies via the Syntalos PPA.
The PPA can be added using this command: sudo add-apt-repository -y ppa:ximion/syntalos
Some modules may require additional dependencies on libraries to communicate with hardware devices, or to implement
their repective features.
In case you get a dependency error when running meson, install the missing dependency or try to build with less modules enabled.
Before attempting to build Syntalos, ensure all dependencies (and their development files) are installed on your system.
If you are using Debian or Ubuntu, you may choose to locally run the system package installation script that the CI system uses:
sudo ./tests/ci/install-deps-deb.sh. IMPORTANT: This script runs APT with fsync/sync disabled to speed up package installation,
but this leaves the system vulnerable to data corruption in case of an unexpected power outage or other issues during installation.
If you are concerned by this, please install the packages mentioned in the script file manually.
After installing all dependencies, you should be able to build the software after configuring the build for your platform using Meson:
sh
mkdir build && cd build
meson --buildtype=debugoptimized -Doptimize-native=true ..
ninja
sudo ninja install
Modules can be enabled and disabled via the -Dmodules flag - refer to meson_options.txt for a list of possible,
comma-separated values.
Contributing
Pull-requests for new modules, bugfixes or any changes are very welcome!
(Code should be valid C++20, use 4 spaces for indentation. With clang-format installed, autoformat.py can be used
to automatically format C++ and Python code)
Owner
- Name: Syntalos Project
- Login: syntalos
- Kind: organization
- Repositories: 2
- Profile: https://github.com/syntalos
Citation (CITATION.cff)
cff-version: 1.2.0
type: software
title: Syntalos
message: >-
If you use this software, please cite it using the
preferred citation from this file.
repository-code: 'https://github.com/syntalos/syntalos'
url: 'https://syntalos.org/'
license: LGPL-3.0+
preferred-citation:
title: >-
Syntalos: a software for precise synchronization of simultaneous multi-modal
data acquisition and closed-loop interventions
type: article
issue: 1
volume: 16
journal: Nature Communications
url: 'https://www.nature.com/articles/s41467-025-56081-9'
authors:
- family-names: Klumpp
given-names: Matthias
- family-names: Embray
given-names: Lee
- family-names: Heimburg
given-names: Filippo
- family-names: Alves Dias
given-names: Ana Luiza
- family-names: Simon
given-names: Justus
- family-names: Groh
given-names: Alexander
- family-names: Draguhn
given-names: Andreas
- family-names: Both
given-names: Martin
date-published: 2025-01-15
identifiers:
- type: doi
value: 10.1038/s41467-025-56081-9
GitHub Events
Total
- Release event: 1
- Watch event: 10
- Delete event: 3
- Push event: 90
- Pull request event: 4
- Fork event: 3
- Create event: 5
Last Year
- Release event: 1
- Watch event: 10
- Delete event: 3
- Push event: 90
- Pull request event: 4
- Fork event: 3
- Create event: 5
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 0
- Total pull requests: 3
- Average time to close issues: N/A
- Average time to close pull requests: 20 minutes
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 2
- Bot issues: 0
- Bot pull requests: 3
Past Year
- Issues: 0
- Pull requests: 3
- Average time to close issues: N/A
- Average time to close pull requests: 20 minutes
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 2
- Bot issues: 0
- Bot pull requests: 3
Top Authors
Issue Authors
- athp18 (3)
- SpindleMS (2)
Pull Request Authors
- dependabot[bot] (3)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- breathe >=4.16
- cloud_sptheme *
- exhale *
- pygments >=2.6
- sphinx >=3.0
- PyQt5 *
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
