{"id":44652189,"url":"https://github.com/syntalos/syntalos","last_synced_at":"2026-02-14T21:08:53.452Z","repository":{"id":52014525,"uuid":"83421082","full_name":"syntalos/syntalos","owner":"syntalos","description":"Synchronized data acquisition from diverse sources and flexible control for behavior experiments","archived":false,"fork":false,"pushed_at":"2026-02-11T14:11:42.000Z","size":16429,"stargazers_count":50,"open_issues_count":3,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-02-11T14:44:49.907Z","etag":null,"topics":["behavior","camera","data-acquisition","genicam","miniscope","neuroscience","python","science"],"latest_commit_sha":null,"homepage":"https://syntalos.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syntalos.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.GPL-3.0","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-02-28T10:44:47.000Z","updated_at":"2026-02-11T14:11:46.000Z","dependencies_parsed_at":"2024-07-22T19:49:32.337Z","dependency_job_id":"63cdaea3-6ed1-4224-9b57-eee3d37b1b0e","html_url":"https://github.com/syntalos/syntalos","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/syntalos/syntalos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntalos%2Fsyntalos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntalos%2Fsyntalos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntalos%2Fsyntalos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntalos%2Fsyntalos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syntalos","download_url":"https://codeload.github.com/syntalos/syntalos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntalos%2Fsyntalos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29455630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["behavior","camera","data-acquisition","genicam","miniscope","neuroscience","python","science"],"created_at":"2026-02-14T21:08:53.271Z","updated_at":"2026-02-14T21:08:53.445Z","avatar_url":"https://github.com/syntalos.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Syntalos\n========\n\n[![Syntalos Screenshot](contrib/screenshots/v0.8.4-ui-overview.png \"Syntalos\")](https://github.com/syntalos/syntalos/tree/master/contrib/screenshots)\n![Build Test](https://github.com/syntalos/syntalos/actions/workflows/build-test.yml/badge.svg)\n\nSyntalos (formerly known as MazeAmaze) is a software for timestamp-synchronized parallel data acquisition from diverse data sources,\nsuch as cameras, microendoscopes, Intan electrophysiology amplifiers or Firmata-based serial interfaces.\nThe software also allows user-defined closed-loop interventions via its built-in Python scripting support.\nIt is specifically designed for use in (neuro)scientific in vivo behavior experiments.\n\nSyntalos is built with a set of core principles in mind:\n * Timestamps of all data sources of an experiment should be synchronized (within tolerance limits), so data at\n   specific points in time can be directly compared. If hardware synchronization is unavailable, a software solution is used.\n * A data acquistion task must not block a different acquistion or processing task.\n * Data is stored in a fixed directory structure (Experiment Directory Layout, EDL) with all metadata alongside the data.\n * The software must account for experimenter error and have sane failure modes (autocorrect bad experimenter input, never have a component fail silently, ...)\n * The software must never auto-adjust parameters without logging the fact\n * Syntalos is Linux-native: It is written to be run on Linux, which enables it to make use of some beneficial Linux-specific functionality\n   to increase its robustness or performance (a Windows port is likely possible, but would need extensive testing).\n\n## For Users\n\n\u003ca href=\"https://flathub.org/apps/org.syntalos.syntalos\"\u003e\n\u003cimg src=\"https://flathub.org/assets/badges/flathub-badge-en.png\" width=\"140\"/\u003e\n\u003c/a\u003e\n\nYou can install Syntalos directly [from your App-Center](https://flathub.org/apps/org.syntalos.syntalos)\nif the Flathub repository is set up on your Linux system.\n\nYou can find quick instructions to install Syntalos on various Linux distributions\nvia our [Quick Install Guide](https://syntalos.org/get/).\n\nWe also provide more detailed installation instructions and links to prebuilt packages\n[in the Syntalos documentation](https://syntalos.org/docs/setup/install/).\nThe documentation also contains information how to best use Syntalos.\n\nTo make Syntalos work for your experimental setup, you can either create new modules and integration code, or\nutilize already existing modules to acquire and transform data without any required coding!\nYou can find a list of built-in modules [on our website](https://syntalos.org/docs/modules/).\n\n### Modules\n\nSyntalos modules are self-contained entities which can perform arbitrary data acquisition, processing and/or storage tasks.\nAll modules are supervised and driven by the Syntalos engine and can communicate with each other using data streams.\n\nYou can find a list of all currently supported modules as well as their documentation [on our website](https://syntalos.org/docs/modules/).\nBe aware that some modules require additional software to run, e.g. camera drivers.\n\n### Citation\n\nIf you are using Syntalos for your research, we would be delighted if you would cite our software in your publication!\nPlease use the following publication in citations:\n\n\u003e Klumpp, M. *et al.* Syntalos: a software for precise synchronization of simultaneous multi-modal data acquisition and closed-loop interventions.\n\u003e *Nat Commun* **16**, 708 (2025).\n\nDOI: https://doi.org/10.1038/s41467-025-56081-9\n\n----\n\n## For Developers\n\nThis section is for everyone who wants to build Syntalos from source, or wants to change its code\nto submit a change, bugfix or new module.\n\n### Dependencies\n\n * C++20 compatible compiler\n   (GCC \u003e= 12 or Clang \u003e= 18. GCC is recommended)\n * Meson (\u003e= 1.2.2)\n * Qt6 (\u003e= 6.4)\n * Qt6 Test\n * Qt6 OpenGL\n * Qt6 SVG\n * Qt6 SerialPort\n * GLib (\u003e= 2.58)\n * [Iceoryx](https://github.com/eclipse-iceoryx/iceoryx) (\u003e= 2.0)\n * Eigen3\n * [TOML++](https://github.com/marzer/tomlplusplus/)\n * OpenCV (\u003e= 4.1)\n * FFmpeg (\u003e= 4.1)\n * GStreamer (\u003e= 1.0)\n * PipeWire\n * KF6 Archive\n * KF6 TextEditor\n * [pybind11](https://github.com/pybind/pybind11)\n * libusb (\u003e= 1.0)\n * ImGui / ImPlot (optional, needed for plotting)\n\n### Quick Build Instructions\n\nWe recommend Debian 13 (Trixie) or Ubuntu 24.04 (Noble Numbat) to build \u0026 run Syntalos,\nbut any Linux distribution that has a recent enough C++ compiler and Qt version\nshould work.\nOn Ubuntu 24.04, you can get some required updated dependencies via the Syntalos PPA.\nThe PPA can be added using this command: `sudo add-apt-repository -y ppa:ximion/syntalos`\n\nSome modules may require additional dependencies on libraries to communicate with hardware devices, or to implement\ntheir repective features.\nIn case you get a dependency error when running `meson`, install the missing dependency or try to build with less modules enabled.\n\nBefore attempting to build Syntalos, ensure all dependencies (and their development files) are installed on your system.\nIf you are using Debian or Ubuntu, you may choose to locally run the system package installation script that the CI system uses:\n`sudo ./tests/ci/install-deps-deb.sh`. *IMPORTANT:* This script runs APT with fsync/sync disabled to speed up package installation,\nbut this leaves the system vulnerable to data corruption in case of an unexpected power outage or other issues during installation.\nIf you are concerned by this, please install the packages mentioned in the script file manually.\n\nAfter installing all dependencies, you should be able to build the software after configuring the build for your platform using Meson:\n```sh\nmkdir build \u0026\u0026 cd build\nmeson --buildtype=debugoptimized -Doptimize-native=true ..\nninja\nsudo ninja install\n```\n\nModules can be enabled and disabled via the `-Dmodules` flag - refer to `meson_options.txt` for a list of possible,\ncomma-separated values.\n\n### Contributing\n\nPull-requests for new modules, bugfixes or any changes are very welcome!\n(Code should be valid C++20, use 4 spaces for indentation. With clang-format installed, `autoformat.py` can be used\nto automatically format C++ and Python code)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyntalos%2Fsyntalos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyntalos%2Fsyntalos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyntalos%2Fsyntalos/lists"}