NeuroMaestro
A modular neuroimaging preprocessing pipeline for HPC clusters, with both a GUI and CLI. Pipeline parameters and analysis workflows are configured through YAML files, allowing flexible customization without modifying the underlying code.
Full handbook: https://georgiacenterfordevelopmentalscience.github.io/NeuroMaestro/
Supported Pipelines
The pipeline is organized into four stages. The software used at each stage is configured per-project and can be customized; the examples below reflect our defaults.
| Stage | Description | Example software |
|---|---|---|
| Data preparation | Unzip raw data, convert DICOM to BIDS | dcm2bids |
| Intermediate steps | Any intermediate step required before modality pipelines (staged pipelines only) | AFNI sswarper2 |
| BIDS pipelines | Modality preprocessing that runs directly on BIDS data | fMRIPrep, XCP-D, QSIPrep, QSIRecon |
| Quality control | Image quality metrics | MRIQC |
The key distinction between pipeline types:
- Staged pipelines (
--staged-prep) require an intermediate step before modality preprocessing, by default skull stripping and nonlinear registration of the T1w image. Designed for workflows like AFNI that operate on locally processed data, but can be adapted to any pipeline requiring intermediate steps. - BIDS pipelines (
--bids-prep) run directly on BIDS-formatted data without intermediate steps (e.g. fMRIPrep, QSIPrep).
Installation
Prerequisites: Python 3.10+, HPC cluster with SLURM, neuroimaging software installed on the cluster.
pip install neuromaestro
# Verify
neuromaestro --help
neuromaestro-gui --help
To install from source in development mode:
git clone https://github.com/GeorgiaCenterforDevelopmentalScience/NeuroMaestro.git
cd NeuroMaestro
pip install -e '.[dev]'
Configuration
Each project requires a {project}_config.yaml in the project_config/ folder of your config directory, the one --config-dir points at. Run neuromaestro generate-config {project} to create one from the template, then fill in paths, HPC modules, and pipeline options.
Modalities available under --bids-prep and --staged-prep, and the output folder of each task (output_pattern), are declared in config.yaml.
Expected output files for --resume are defined in config/results_check/{project}_checks.yaml. Edit this file to specify which files should exist (and optionally their minimum size) for a subject to be considered complete.
HPC scheduler, resource profiles (memory, walltime, CPU), and submission flags are configured in hpc_config.yaml. Recommended values are pre-filled; update partition names and resource limits to match your cluster.
Quick Start
First-time setup: scaffold config and script templates into your study directory.
neuromaestro init /path/to/my_study
# Optionally export to ~/.bashrc so you can omit --config-dir on every command.
# If you skip this, pass --config-dir /path/to/my_study/config explicitly instead.
export NEUROMAESTRO_CONFIG_DIR=/path/to/my_study/config
This copies config.yaml, hpc_config.yaml, project_config/, results_check/, and script templates. Edit them to match your cluster and project before running.
# Launch the GUI
neuromaestro-gui
Open the link it prints at startup (http://127.0.0.1:8050/?token=...). Requests without the token are rejected, and a new token is made at each launch.
Or use the CLI. Start with a dry-run on one subject to verify the plan:
neuromaestro run \
--subjects 001 \
--input /data/BIDS \
--output /data/processed \
--work /data/work \
--config-dir /data/config \
--project my_study \
--session 01 \
--bids-prep rest \
--dry-run
Full pipeline (all stages, multiple subjects):
neuromaestro run \
--subjects subjects.txt \
--input /data/raw \
--output /data/processed \
--work /data/work \
--config-dir /data/config \
--project my_study \
--session 01 \
--prep unzip_recon \
--intermed volume \
--staged-prep cards,kidvid \
--staged-post cards,kidvid \
--bids-prep rest,dwi \
--bids-post rest,dwi \
--mriqc all
Dependencies are enforced automatically by the scheduler.
CLI Reference
Core options
| Option | Description |
|---|---|
--subjects |
Comma-separated subject IDs or path to a .txt file |
--input |
Input directory (raw data with --prep, BIDS data otherwise) |
--output |
Output directory |
--work |
Work directory (logs, database, intermediate files) |
--config-dir |
Path to config directory (contains config.yaml, hpc_config.yaml, project_config/). Optional if $NEUROMAESTRO_CONFIG_DIR is exported. |
--project |
Project name (must match a {project}_config.yaml) |
--session |
Session label (e.g. 01) |
Pipeline options
| Option | Description |
|---|---|
--prep |
Data preparation: unzip, recon, unzip_recon |
--intermed <tasks> |
Intermed tasks to run (comma-separated, e.g. volume). Staged prep tasks depend on these when given. Omit it only when the intermed outputs already exist from an earlier run. |
--bids-prep <modalities> |
BIDS pipeline preprocessing (comma-separated, e.g. rest,dwi) |
--bids-post <modalities> |
BIDS pipeline postprocessing (comma-separated, e.g. rest,dwi) |
--staged-prep <modalities> |
Staged pipeline preprocessing (comma-separated, e.g. cards,kidvid) |
--staged-post <modalities> |
Staged pipeline postprocessing (comma-separated, e.g. cards,kidvid) |
--mriqc |
Quality control: individual, group, all |
Run options
| Option | Description |
|---|---|
--dry-run |
Preview the execution plan without submitting jobs |
--resume |
Skip subjects whose expected outputs already exist |
--skip-bids-validation |
Skip pre-run BIDS validation |
--skip-preflight |
Skip pre-flight config checks |
--wait |
Wait for submitted jobs to finish before exiting |
--polling-interval |
Seconds between job status checks when --wait is set. Default 60. |
Resume a Partial Run
neuromaestro run \
--subjects subjects.txt \
--input /data/BIDS \
--output /data/processed \
--work /data/work \
--config-dir /data/config \
--project my_study \
--session 01 \
--bids-prep rest \
--resume
--resume checks each subject's expected output files (defined in config/results_check/{project}_checks.yaml) before submitting. Subjects that already have valid outputs are skipped, and the skipped IDs are printed per task.
Directory Structure
Input (BIDS)
input_directory/
├── sub-001/
│ └── ses-01/
│ ├── anat/
│ ├── func/
│ └── ...
└── sub-002/
└── ...
Output Example
output_directory/
└── project_name/
├── raw/
├── BIDS/
├── AFNI_derivatives/
├── BIDS_derivatives/
│ ├── fmriprep/
│ ├── xcpd/
│ ├── qsiprep/
│ └── qsirecon/
├── postprocessing/
└── quality_control/
└── mriqc/
work_directory/
├── database/ # default db_path, shared by projects with the same --work
└── project_name/
└── log/
For questions or issues, contact QiuyuYu or open a repository issue.
Metadata
Release files for neuromaestro 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| neuromaestro-1.0.0.tar.gz | 254.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neuromaestro-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 465.2 kB
Release files / neuromaestro-1.0.0.tar.gz
| Download URL | neuromaestro-1.0.0.tar.gz |
|---|---|
| Size | 254.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
408847eb5417aff9ba5ec53336a34f6b8b7124630fae7b31ae4498e0362c7ed5
|
|
BLAKE2b-256 checksum How to use checksums |
75b9dc7022cb060c2b9471d83643aac7da1c15538cbce61d322ce0b928c3cb3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / neuromaestro-1.0.0-py3-none-any.whl
| Download URL | neuromaestro-1.0.0-py3-none-any.whl |
|---|---|
| Size | 210.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da328423dd23720e6553ed26e3cc883ff403de1570bc20b10c544a2a2c362de4
|
|
BLAKE2b-256 checksum How to use checksums |
8449472b3470ba3fcdef739cadcfe13674441fddfae52b4f07d2b6d3868a83ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Security for neuromaestro 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.