Skip to content

0.11.0

Compare
Choose a tag to compare
@akhanf akhanf released this 16 Feb 19:01
· 114 commits to main since this release

Changes

Versioned bids() function

This release introduces versioned bids functions! Explicitly setting a version for the bids() function ensures the output of the function remains stable even as the bids specification continues to evolve.

The problem is especially evident if you use custom entities. Consider the following code:

bids(
    subject="001",
    session="01",
    space="MNI6",
    tract="SLF",
    hemi="L",
    suffix="tracts",
    desc="corr",
    extension=".tck",
) == 'sub-001/ses-01/sub-001_ses-01_hemi-L_space-MNI6_desc-corr_tract-SLF_tracts.tck'

Notice the custom entity tract is placed at the end of the path, immediately before the suffix. If this entity were ever to become official however, it's position might be moved earlier in the path:

# in a hypothetical future version:
bids(
    subject="001",
    session="01",
    space="MNI6",
    tract="SLF",
    hemi="L",
    desc="corr",
    suffix="tracts",
    extension=".tck",
) == 'sub-001/ses-01/sub-001_ses-01_hemi-L_space-MNI6_tract-SLF_desc-corr_tracts.tck'

This would break any workflows using this path, making it difficult for us to keep the bids() function up to date (we'd have to release a new major version every time we need to change the function).

Bids versioning decouples the spec from the snakebids version, so that snakebids can continue to be updated without risk of path breakage. It can be activated like this:

from snakebids import set_bids_spec
set_bids_spec("v0_0_0")

The 0 version specified above is the version snakebids has used up until now, and will continue to be the default for some time. In the future, the default spec will change, so setting the version as above ensures long term stability.

This release also comes with a new spec:

from snakebids import set_bids_spec
set_bids_spec("v0_11_0")

It comes with a number of new recognized entities, including staining, tracer, flip, inversion, processed, part, atlas, segmentation, density, roi, from, to, split, recording, chunk, model, and subset. In addition, unrecognized entities will always be placed before the desc tag, so desc-XXX will always be the last entity before the suffix.

Regex filtering

Regex filters in the config file has been broken for some time, but this release re-enables it with a new syntax. Regex filtering can be performed as follows:

bids_inputs:
  t1w:
    filters:
      acq:
        match: MP2?RAGE
      suffix:
        search: [Tt]1

The match and search key use re.match() and re.search() respectively.

🚀 Features

🐛 Bug Fixes

🧰 Maintenance