CLI and Python library for manipulating BIDS datasets
Project description
bids-utils
A CLI and Python library for manipulating BIDS datasets: rename files,
subjects, sessions, and runs; migrate datasets between BIDS versions;
aggregate, segregate, and audit metadata; merge and split datasets.
Schema-driven throughout (via bidsschematools) and aware of
version control, including git-annex and DataLad datasets.
⚠️ Status: early development. APIs, CLI commands, and behaviors may change before the first tagged release.
What it does
- File / subject / session / run renaming with sidecar,
_scans.tsv, andparticipants.tsvupdates, plus BIDS URI fix-up. - Schema-driven migration between BIDS versions, including 1.x
deprecation fixes and 2.0 structural changes. Tiered rule levels
(
safe/advisory/non-auto-fixable). - Metadata management — aggregate, segregate, and audit inheritance chains across sidecar JSONs.
- Dataset-level operations —
merge,split,remove. - VCS-aware — git, git-annex, and DataLad backends; annexed content
is fetched / unlocked / re-added as needed (
--annexed=get).
Install
# one-shot (isolated) invocation
uvx bids-utils --help
# inside a project env
uv pip install bids-utils # or: pip install bids-utils
Commands
$ bids-utils --help
Usage: bids-utils [OPTIONS] COMMAND [ARGS]...
CLI for manipulating BIDS datasets.
Options:
--version Show the version and exit.
--annexed [error|get|skip-warning|skip]
How to handle git-annex files without local
content.
-h, --help Show this message and exit.
Commands:
completion Output shell completion activation script.
merge Merge multiple BIDS datasets.
metadata Metadata manipulation commands.
migrate Apply schema-driven migrations to resolve deprecations.
remove Remove a subject from the dataset.
remove-run Remove a run and optionally reindex subsequent runs.
rename Rename a BIDS file and all its sidecars.
session-rename Rename a session.
split Extract a subset of a BIDS dataset.
subject-rename Rename a subject across the entire dataset.
Run bids-utils <COMMAND> --help for per-command options.
Quick tour
# Rename a BOLD file; sidecars and _scans.tsv follow automatically.
bids-utils rename path/to/sub-01_task-rest_bold.nii.gz --set task=nback
# Migrate an older 1.x dataset to the current 1.x release.
bids-utils migrate /data/ds001 --dry-run
# Rename a subject across the whole dataset (VCS-aware).
bids-utils subject-rename /data/ds001 --from 01 --to 99
The same operations are available as a Python library:
from bids_utils import BIDSDataset
from bids_utils.subject import rename_subject
ds = BIDSDataset.from_path("/data/ds001")
rename_subject(ds, old="01", new="99")
Shell completion
bids-utils completion emits an activation script for the detected
shell (bash, zsh, or fish) with BIDS-aware suggestions for sub-*,
ses-*, and entity keys from the schema.
# Enable for the current shell (one-shot):
eval "$(bids-utils completion)"
# Persist it: append to your shell rc file.
echo 'eval "$(bids-utils completion)"' >> ~/.bashrc # or ~/.zshrc
For fish:
bids-utils completion fish | source
Contributing
See CONTRIBUTING.md for tooling conventions, the
pre-commit tox gate, and where to find the design documents under
.specify/specs/. Integration tests use the bids-examples
submodule — run git submodule update --init --recursive after
cloning.
License
Apache License 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bids_utils-0.1.0.tar.gz.
File metadata
- Download URL: bids_utils-0.1.0.tar.gz
- Upload date:
- Size: 283.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40987b234ccb110d222fea7677383f60049c896b70690549265105e21b2d2bf5
|
|
| MD5 |
6e3d9a3cfd623f5dc94a5aa151bf0f4e
|
|
| BLAKE2b-256 |
9bc6302a787c7fecc249eef525255bc51193f4c2b8ea67593992797315bc315e
|
File details
Details for the file bids_utils-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bids_utils-0.1.0-py3-none-any.whl
- Upload date:
- Size: 59.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2abc94c7f025bbe031b9c536c3fe2f8db5a4df66a28a280aa20d32308168ae43
|
|
| MD5 |
da21564f50847a78e6ee815b123ad68d
|
|
| BLAKE2b-256 |
ac4db49c3dd4e7c698823e725b1c52cafd593671e860f26f29e6ed7c966e8779
|