Releases: khanlab/snakebids
0.13.1
Changes
🐛 Bug Fixes
- Prevent bids values with leading 0s in tests @pvandyken (#427)
- Update argument handling for --derivatives @pvandyken (#425)
- Remove return from run method on Runner @pvandyken (#424)
- Add converters to SnakeBidsApp @pvandyken (#421)
🧰 Maintenance
- Add skip_changelog label to test timing update PRs @pvandyken (#426)
- Run tests only when snakebids or scripts folder updated @pvandyken (#430)
- Move upload_coverage to seperate workflow @pvandyken (#429)
- Add labeller action @pvandyken (#428)
- Update dependencies @pvandyken (#420)
0.13.0
Changes
- Another fix to test counting @pvandyken (#419)
🚀 Features
- Add hook to update and read argv before parsing @pvandyken (#417)
🐛 Bug Fixes
- Add missing spaces to default help for bidsargs @pvandyken (#416)
🧰 Maintenance
- Update maximum python version in template @pvandyken (#415)
- Fix test-counting code @pvandyken (#414)
0.12.0
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
- Add support for snakemake > 8.0 @pvandyken (#406)
- Major update to bidsapp @pvandyken (#362)
- Allow simult. use of partic incl and excl flags @pvandyken (#404)
🐛 Bug Fixes
- Fix flaky template tests @pvandyken (#405)
- Pin attrs to 22.2.0 @pvandyken (#403)
- Prevent installation of docutils==0.21.post1 @pvandyken (#402)
- Correctly activate virtualenv in readthedocs build @pvandyken (#394)
🧰 Maintenance
- Add codecov badge @pvandyken (#409)
📝 Documentation
- Update tutorial for new bidsapp @pvandyken (#408)
0.11.2
Changes
- Update the warning format to be more readable @pvandyken (#390)
🐛 Bug Fixes
- Fix docs template so that it builds @pvandyken (#392)
- Eliminate initial "_" when suffix is only entity @pvandyken (#389)
0.11.1
Changes
🐛 Bug Fixes
- Prevent custom entities from drawing standard ent @pvandyken (#382)
- Expand paths unaltered when comp has no wcards @pvandyken (#378)
- Fix warning messages @pvandyken (#377)
🧰 Maintenance
- Move codecoverage upload to seperate job @pvandyken (#380)
- Allow custom snakebids version in app template @pvandyken (#376)
0.11.0
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
- Adding argument for metadata indexing by generate_inputs @myousif9 (#367)
- Add mechanism for regex filtering @pvandyken (#365)
- Transition to versioned bids functions @pvandyken (#349)
- Allow builtins and resolved paths as cli types @pvandyken (#352)
🐛 Bug Fixes
- Default to case-insensitive search for regex @pvandyken (#375)
🧰 Maintenance
- Update khanlab/actions integration @pvandyken (#374)
- Clean old tests when recalculating durations @pvandyken (#373)
- Add tests of pypi installation in nightly workflow @pvandyken (#357)
0.10.2
0.10.1
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
- Move example dataset from docs into template @pvandyken (#358)
- Overhaul global filtering of participants @pvandyken (#344)
- Fix formatting of empty zip lists @pvandyken (#350)
- Preserve order of entries in expand method @pvandyken (#348)
🧰 Maintenance
- Add testing for Python 3.12 @pvandyken (#361)
- Manage doc deps with poetry @pvandyken (#359)
- Add test coverage @pvandyken (#356)
- Refactor install steps into resusable workflow @pvandyken (#341)
- Dep updates and expansion of ruff CI @pvandyken (#351)
- Update URLs to new repo link @kaitj (#353)
0.10.0
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
- Overhaul
snakebids create
@pvandyken (#336)
🐛 Bug Fixes
- Port hotfixes from 0.9.x @pvandyken (#327)
🧰 Maintenance
- Drop support for Python 3.7 @pvandyken (#322)
- Remove dependency upper-caps and update @pvandyken (#340)
- Add pytest-split and pytest-xdist @pvandyken (#338)
- Refactor filter_list to use RegexContainer @pvandyken (#332)
- Update dependencies and pyright version @pvandyken (#330)
- Implement Bids Spec files @pvandyken (#324)
- Add poetry lock check @pvandyken (#331)
📝 Documentation
- Fix version fetching in readthedocs build @pvandyken (#326)
0.9.3
Changes
🐛 Bug Fixes
- Fix typo in BidsValidator plugin @pvandyken (#337)
- Add deprecation mechanism to old pybidsdb vals @pvandyken (#334)