Skip to content

Releases: khanlab/snakebids

0.13.1

09 May 20:53
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

🧰 Maintenance

0.13.0

30 Apr 15:03
Compare
Choose a tag to compare

Changes

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

0.12.0

18 Apr 19:14
Compare
Choose a tag to compare

Changes

bidsapp module

This version introduces a new bidsapp module, which moving forward will provide a much more flexible, extensible interface for bids apps. At this time, the module has yet to be completely documented, but new apps generated with snakebids create will automatically use the new api. Old apps can be updated using the migration guide.

Note that the old run.py api will still work fine, for most users this release does not have any breaking changes. The only apps that will be affected were those that used custom plugins: they will no longer work.

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

📝 Documentation

0.11.2

26 Feb 15:12
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

0.11.1

22 Feb 17:58
d3f1d74
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

🧰 Maintenance

0.11.0

16 Feb 19:01
Compare
Choose a tag to compare

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

0.10.2

15 Jan 19:14
Compare
Choose a tag to compare

Changes

Small release to fix a dependency issue in the snakemake create template app.

🐛 Bug Fixes

0.10.1

12 Jan 00:25
Compare
Choose a tag to compare

Changes

This release fixes some longstanding bugs involving the --participant-label and --exclude-participant-label flags:

  • Using --exclude-participant-label would cause all filters to use regex. This no longer occurs
  • Both flags would attempt to apply to every single component, even components that didn't have a subject.

This release also adds testing for Python 3.12!

The recently released Snakemake v8.0 completely changed the internal API, making it incompatible with snakebids. This will be addressed in the next release, but for now, the snakemake dependency is pinned to <8.0

Finally, a couple of issues in the snakebids create command have been addressed.

🐛 Bug Fixes

🧰 Maintenance

0.10.0

30 Nov 20:17
332ee47
Compare
Choose a tag to compare

Version 0.10 has a brand new snakebids create command that's more user-friendly and flexible. It now autodetects your name and email from your git configuration, supports a number of build systems (poetry, hatch, flit), and creates a more generic bootstrap app. Be sure to give it a try next time you start a new snakebids app!

This release drops support for python 3.7.

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

📝 Documentation

0.9.3

15 Sep 15:16
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes