EEG pipelines
BrainVision, EDF+, and NPY input. Filtering, re-referencing, baseline correction, event-locked epoching, FastICA with topographies, and SSP.
Neuro Lab is a local-first neuroimaging workbench: a Tauri desktop app backed by a Rust workspace of processing crates. Recordings never leave your machine — no server, no cloud, no accounts.
{
"nodes": [
{ "type": "bandpass", "params": { "l_freq_hz": 1, "h_freq_hz": 40 } },
{ "type": "ica", "params": { "topographies": true } },
{ "type": "epoch", "params": { "tmin_s": -0.2, "tmax_s": 0.5 } }
]
}
EEG, MEG, and MRI datasets live side by side in a single local workspace with projects, experiments, and full provenance.
BrainVision, EDF+, and NPY input. Filtering, re-referencing, baseline correction, event-locked epoching, FastICA with topographies, and SSP.
FIF, CTF, KIT, BIDS, and OPM input. Compensation grades, FIF projectors, synthetic gradiometers, ICA, SSP, epoching and evoked responses — plus a low-order SSS approximation.
NIfTI and DICOM volumes with multiplanar slices, MIP, statistics, bias-field correction, heuristic skull stripping, and rigid/affine registration.
Pipelines are plain JSON node lists — filter, rereference, ICA, SSP, epoch, register — saved as named presets. Every run records its parameters and produces a manifest.
NPY, CSV, and EDF for signals; FIF output validated against MNE; BIDS datasets; NIfTI volumes; DICOM converted to NIfTI with spatial metadata preserved.
Chunked uploads with SHA-256 integrity verification, dataset versions, experiment records, and artifact provenance — all in a local workspace database.
No hidden steps — a pipeline is a JSON list of nodes you can read, save, and share. These are the same definitions the app runs.
{
"nodes": [
{ "type": "bandpass", "params": { "l_freq_hz": 1, "h_freq_hz": 40 } },
{ "type": "ica", "params": { "topographies": true } },
{ "type": "ica_remove", "params": { "components": [0, 3] } },
{ "type": "epoch", "params": { "tmin_s": -0.2, "tmax_s": 0.5 } }
]
}
{
"nodes": [
{ "type": "bandpass", "params": { "l_freq_hz": 1, "h_freq_hz": 40 } },
{ "type": "sss", "params": { "l_in": 4, "l_out": 2 } },
{ "type": "evoked", "params": {} }
]
}
$ ls crates
neuro-core shared numerics, ICA
neuro-eeg EEG readers + pipelines
neuro-meg MEG readers + pipelines
neuro-mri MRI volumes + DICOM
neuro-store workspace persistence
From raw recording to published-format export in three steps.
Point the app at a recording. Neuro Lab resolves companion files — channel manifests, event markers, digitization points — and validates the file set before analysis.
recording.eeg + .vhdr + .vmrk
Chain pipeline nodes in the UI or paste JSON directly. Filter, reject artifacts, epoch, register — save the chain as a preset and rerun it on any compatible dataset.
pipeline.json → named preset
Browse signal windows, spectra, epochs, ICA components, and MRI slices. Export to NPY, CSV, EDF, FIF, BIDS, or NIfTI — every artifact carries its provenance record.
md/ → artifacts/ with manifest
Requires Node.js + pnpm and Rust. Everything compiles locally — there is no backend service to deploy.
$ git clone https://github.com/hieudoanm/neuro.lab
$ cd neuro.lab
$ pnpm install
$ pnpm tauri:dev # desktop app in dev mode
$ pnpm tauri:build # release bundles
$ cargo test --workspace # 24 test suites
See the README for prerequisites and crate details.