DDALAB is a local-first analysis environment for performing Delay Differential Analysis (DDA) on neurophysiological time series.
It combines a Python command-line interface, a Qt desktop application, and a native Rust analysis engine. Analysis runs locally and recordings never leave the machine. The app goes online only to check for updates, search OpenNeuro, and manage NSG jobs.
- Download & Installation
- Community & Learning
- Key Features
- Architecture Overview
- Quick Start Guide
- Development
- Production Build
- Configuration & Data Storage
- Citation
- Acknowledgments
Prebuilt binaries are available for all major platforms via GitHub Releases.
Need help choosing the right file? Visit our Web Download Portal for a one-click selection for macOS, Windows, and Linux.
-
Download the latest
.dmgfrom the portal or releases page. -
Open the disk image and drag DDALAB into your
Applicationsfolder. -
Remove Quarantine Flag: macOS blocks unsigned applications by default. To allow the app to run, execute the following command in your terminal:
sudo xattr -r -d com.apple.quarantine /Applications/DDALAB.appNote: DDALAB is currently unsigned to avoid Apple Developer program constraints. All computation occurs locally; no data is transmitted externally.
-
Launch DDALAB from your Applications folder.
- Download the latest
-installer.exe, or the-portable.zipto run without installing. - Run the installer and follow the setup wizard.
- Launch DDALAB from the Start menu.
- Download the
.AppImage(x86-64, glibc 2.35 or newer). chmod +x DDALAB-*.AppImage./DDALAB-*.AppImage
For upcoming workshops, new computational tools, and the latest research from our lab, check the official DDALAB Website periodically.
These events often cover advanced DDA workflows, data interpretation strategies, and hands-on training.
- Native Desktop Experience: Qt desktop application delivered through the unified
packages/ddalabpackage. - Scriptable CLI:
ddalabcommand for health checks, dataset inspection, waveform access, ICA, and bundled DDA commands. - Bundled Native Backend:
dda-rsbinary with no separate native fallback layer or network backend required. - Broad Format Support: EDF/BDF, FIFF, BrainVision, EEGLAB, Neuroscan CNT, GDF, KIT/Yokogawa, CTF, EGI MFF, XDF, NWB, NIfTI, and ASCII/TXT/CSV.
- BIDS Compatibility: Native handling of Brain Imaging Data Structure datasets.
- OpenNeuro Search: Search the OpenNeuro catalog and open a dataset's page; download datasets with the OpenNeuro CLI or DataLad.
- NSG Job Management: Sign in to the Neuroscience Gateway (NSG) to list, refresh, download, and cancel existing jobs. Submitting jobs from DDALAB is not available yet.
- Interactive Visualization: Viewport-aware waveform, heatmap, and time-series rendering with Qt Quick/QML.
- Multi-Flavor DDA: ST, CT, CD, DE, and SY flavors; the CLI also runs the CCD family and takes per-flavor channel pairs (
--variant-pairs). - Persistent History: Analyses and metadata are stored locally using SQLite.
- Unified Python Desktop + CLI Package:
packages/ddalab - Rust Native Analysis Engine:
packages/dda-rs - SQLite: Persistent local storage for analysis history.
- Qt Quick/QML: GPU-capable, viewport-aware waveform and result visualization.
- Launch DDALAB and select a local data directory.
- Load Data: Open local files or BIDS datasets.
- Configure Parameters: Select Channels, Window length, Delay range, and DDA flavor.
- Run Analysis: Execute the workflow and monitor progress.
- Visualize: Inspect results using the interactive heatmaps and time-series views.
- Export: Save results for downstream analysis.
- Rust ≥ 1.70 (rustup.rs)
- Python 3.11 or 3.12
git clone https://github.com/sdraeger/DDALAB.git
cd DDALAB/packages/ddalab
./start.sh
packages/ddalab: unified Python package that installsddalab,ddalab-cli, andddalab-gui, bundles the localdda-rsbackend for packaged releases, and provides the PySide6 desktop applicationpackages/dda-rs: Rust implementation and native CLI used by the packaged Python application
The Python and Julia language bindings are maintained in their own repositories and may be checked out locally under packages/dda-py and packages/DelayDifferentialAnalysis.jl.
Useful helper commands:
cd packages/ddalab && ./start.sh --smoke-testcd packages/ddalab && python3 scripts/prepare_runtime.py --clean --print-dircd packages/ddalab && ./.venv/bin/python -m build --wheel
cd packages/ddalab && ./.venv/bin/pyinstaller DDALAB.spec --noconfirm --clean
DDALAB stores its data in your home directory on every platform:
~/.ddalab/state.sqlite3: analysis history, annotations, and the saved session and settings.~/.ddalab-qt/logs/: diagnostic logs.- NSG sign-in: the system keychain (macOS Keychain, Windows Credential Manager, or a Secret Service keyring such as GNOME Keyring or KWallet on Linux). Without one, DDALAB keeps the sign-in in memory until you quit.
@software{draeger-ddalab-2025,
author = {Dr{\"a}ger, Simon and Lainscsek, Claudia and Sejnowski, Terrence J},
title = {DDALAB: Delay Differential Analysis Laboratory},
year = {2025},
url = {https://github.com/sdraeger/DDALAB}
}
Developed with support from NIH grant 1RF1MH132664-01.
Disclaimer: DDALAB is a research tool. Users are responsible for validating results against established standards for their specific applications.