Snakebids is a Python package that extends Snakemake, enabling users to create reproducible, scalable pipelines for processing neuroimaging data in the BIDS format. Snakebids workflows expose a CLI that conforms to the BIDS App guidelines.
Snakebids includes all of the features of Snakemake, including flexible configuration, parallel execution, and Docker/Singularity support, plus:
- Built-in support for BIDS datasets: Seamless workflow functionality with a wide range of BIDS datasets, accommodating various levels of complexity.
- BIDS App Creation: Provide command-line invocations of your workflow following BIDS App guidelines, ensuring reproducibility and enhancing accessibility of your workflow.
- BIDS Path Construction: Easy, flexible construction of valid BIDS paths following BIDS guiding principles, promoting data organization and sharing.
- Plugin System: Extend the functionality of Snakebids by creating and using plugins to meet your workflow's needs.
- Pybids Querying: Leverages Pybids to efficiently retrieve specific data required.
Snakebids can be installed using pip:
pip install snakebidsTo create and run a Snakebids workflow, you need to:
- Create a Snakefile: Define the steps of your workflow, including input / output files, processing rules, and dependencies
- Create a configuration file: Customize workflow behaviour using a YAML configuration file. Specify input / output directories and custom workflow parameters.
- Run the pipeline: Execute the Snakebids pipeline by invoking the BIDS App CLI or via Snakemake executable.
For detailed instructions and examples, please refer to the documentation.
Snakebids is an open-source project, and contributions are welcome! If you have any bug reports, feature requests, or improvements, please submit them to the issues page.
To contribute, first clone the Github repository.
git clone https://github.com/khanlab/snakebids
cd snakebidsSnakebids dependencies are managed with uv. This can be installed with their standalone installer:
curl -LsSf https://astral.sh/uv/install.sh | shTip
Please refer to the uv website for detailed installation instructions and usage information.
Before coding, run the following command to setup our pre-commit hooks:
uv run poe setupThese check the code against ruff and pyright. Be sure they both pass before making a PR.
Tip
Snakebids uses poethepoet as a task runner. If this tool is installed globally, it will automatically detect the snakebids environment when directly called. So, instead of uv run poe [COMMAND], you can call poe [COMMAND]. It can be installed with:
uv tool poethepoetTo check code quality, use:
uv run poe qualityTests are done with pytest and can be run via:
uv run poe testSnakebids is distributed under the MIT License.
Snakebids extends the Snakemake workflow management system and follows the guidelines outlined by the BIDS specification.
- Mölder F, Jablonski KP, Letcher B et al. Sustainable data analysis with Snakemake [version 2; peer review: 2 approved]. F1000Research. 2021. doi: 10.12688/f1000research.29032.2