Skip to main content

NeuroMaestro

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)

Source distribution for neuromaestro 1.0.0
File Size Uploaded Provenance
neuromaestro-1.0.0.tar.gz 254.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for neuromaestro 1.0.0
File Interpreter ABI Platform
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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page