v0.1.0
v0.1.0 (Mon Jun 01 2026)
Initial public alpha release of bids-utils — a Python library and CLI for
structural manipulation of BIDS datasets, designed to be schema-driven
(via bidsschematools) and VCS-aware (plain git, git-annex, and
DataLad).
🚀 What's in 0.1.0
- CLI commands:
rename,migrate,subject-rename,session-rename,
remove-subject,remove-session,remove-run,merge,split,
aggregate-metadata,segregate-metadata,audit-metadata,completion. - Library API: every CLI command maps to a public Python function with
OperationResultreturn values; suitable for scripted pipelines. - Migration engine: applies BIDS 1.x intra-major deprecation rules
(BasedOn/RawSources→Sources,ScanDate→_scans.tsvacq_time,
DCOffsetCorrection→SoftwareFilters,AcquisitionDuration→
FrameAcquisitionDuration, deprecated coordinate-system labels, etc.) at
safe/advisory/non-auto-fixabletiers, with a schema-coverage
audit (migrate --audit) so missing rules surface as drift. - VCS integration: detects DataLad → git-annex → git → plain
filesystem; usesgit mv(or the annex equivalent) for moves; preserves
locked-annexed-symlink semantics during renames; configurable
--annexed={error,get,skip,skip-warning}policy for fetched content. - Observability:
--dry-run=overview|detailed,--jsonoutput mode,
exit codes (0 success / 1 partial / 2 refused), and per-sourceChange
entries in batch operations. - Test infrastructure: per-test
git worktreefixture pattern over the
bids-examplesclone, plus an adversarial-suffix injection helper for
heudiconv__dup-NN/+mine/--crap/_testsource filenames.
Mutating sweeps validate against the BIDS validator pre- and
post-operation across ~1700 cases.
⚠ Known limitations
- The
rename --set/edit-filenamesplit (FR-039 / FR-040, atomic-batch
glob input per FR-043) is specified but not yet implemented —
scheduled for 0.2.0. Userename --set key=value FILE(current form) for
entity edits until then. - BIDS 2.0 migration is scaffolding-only — concrete rules are stubs.
- Performance optimization for >1000-subject datasets is unverified
(SC-003 deferred).
Authors: 1
- Yaroslav Halchenko (@yarikoptic)