Tags: bids-standard/bids-validator
Tags
<!-- scriv-insert-here --> <a id='changelog-"2.4.0"'></a> - Update to BIDS Schema v1.2.0 (BIDS v1.11.0) <a id='changelog-"2.3.2"'></a> - File reads are temporarily cached to avoid multiple fetches/opens. - Retrieval of remote data on S3 is now more robust, avoiding resource leaks by setting timeouts and a reasonable retry protocol. <a id='changelog-"2.3.1"'></a> Mismatch between version and tag. Re-releasing for consistency. No other changes. <a id='changelog-"2.3.0"'></a> - Improve types for memoized functions by passing argument and return types to callers. - Render Markdown links as OSC-8 links in terminals where support is detected. - Exit with a non-zero exit code if nested datasets are validated and found to have errors. - Prevent HED check from failing for null values found in sidecar metadata. <a id='changelog-"2.2.10"'></a> - Improve types for memoized functions by passing argument and return types to callers. - Extract AWS region from S3 special remote, defaulting to us-east-1. <a id='changelog-"2.2.9"'></a> - Reverted terminal URLs for the 2.2.x series. It should be back in 2.3.0. <a id='changelog-"2.2.8"'></a> - Render Markdown links as OSC-8 links in terminals where support is detected. - Fix typo in S3 URL generation code that prevented reading remote files. <a id='changelog-"2.2.7"'></a> - Maintainer documentation for creating and fixing releases. - Support for rendering Markdown in validation messages in the terminal. - Display validation summaries for derivative datasets when recursive validation (`-r`/`--recursive`) is run. - Support for presigning S3 URLs if AWS credentials are detected. - Validate derivative file paths relative to the derivative dataset root. - Have all three calls to fetch in HttpOpener use same error handling. - Fix memoization memory leak for readRemotes. - Replace SPEC_ROOT placeholder with actual documentation link in CLI output - Pin Deno to 2.5.6 in wheel builds to account for bugs with MacOS binaries compiled with 2.6.0. <a id='changelog-"2.2.5"'></a> - Support for template and cohort directories, as introduced in BEP038. - The AMBIGUOUS_AFFINE issue was given an error message and set to warning. - Very oblique affines are no longer considered ambiguous. - Resolved TypeError when rendering issues for JSON outputs. <a id='changelog-"2.2.4"'></a> - Annexed files with base-64-encoded version information are now supported. <a id='changelog-"2.2.3"'></a> - NIfTI files with bad qform matrices, resulting from non-normalized quaternions, would previously raise a NIFTI_HEADER_UNREADABLE error. Now only the axis codes are disabled, preventing orientation checks, but not raising errors. <a id='changelog-"2.2.2"'></a> - Support `min()` and `max()` of numbers in the expression language. This allows for simpler rules when a field may be a number or array of numbers. - [Annexed](https://git-annex.branchable.com/) files that are not local are treated as empty instead of erroring if a remote URL could not be constructed. The size of missing files are included in the summary estimate of dataset size. - `INVALID_FILE_ENCODING` issues now print sensible messages instead of crashing. <a id='changelog-"2.2.1"'></a> - Support for `associations.physio` and `associations.events.sidecar`. - Implement `associations.coordsystems` to collate multiple `coordsystem.json` files, as required by BEP 042 (EMG). - Validation context generation was tweaked to improve concurrency, giving 4x validation speedups in some cases. <a id='changelog-"2.2.0"'></a> - Added `--format` option to specify output format: `text` (default), `json`, or `json_pp` (pretty-printed JSON) - Pretty-printed JSON output support via `--format json_pp` option - Datalad/git-annex datasets with remote content in public S3 buckets can be validated with the `--preferredRemote <remote-name>` flag. If a public S3 bucket is detected without this flag, the most recent export is used. - Refactored file access classes to be more DRY. - Circular references that could lead to a hanging process were mitigated. [#278] [#278]: #278 - Deprecated `--json` option in favor of `--format json` (backward compatibility maintained) <a id='changelog-2.1.1'></a> - Additional (dataset-defined) columns are now validated against the definitions in the sidecar files. - Throw error on file name case collision. - Add support for the `unique()` function in schema expressions. - Support issues messages that access validation context variables. - Initial column TSV checks now support missing, optional initial columns. - Index column TSV checks now support missing, optional index columns. - Now supports Deno 2.5 and Typescript 5.9.2. - Parsed JSON files are now cached to reduce I/O and parsing costs. - Throw an error if specified schema (e.g. via `--schema` or `BIDS_SCHEMA` env var) could not be loaded. - File access failures consistently produce `FILE_READ` errors across all file types. - Fixed json encoding issue in web log download ([#174]). - Throw utf-8 encoding error for tsv files similar to json files. [#174]: #174 <a id='changelog-2.1.0'></a> This release adds support for BIDS 1.10.1. - Load `.tsv.gz` column contents for validation. - Issue deprecation warning for `"89+"` in `age` columns, per [bids-standard/bids-specification#2162][]. - Added support for extracting image orientation from NIfTI headers, added to the BIDS schema in 1.10.1. - Raise errors for all TSV type check failures. Previously, recommended and optional fields would raise warnings. - Updated `@bids/schema` to ~1.1.0, corresponding to BIDS version 1.10.1. - Avoid descending into opaque directories (such as `*.zarr/`) when checking for unused sidecars. ([#227]) [#227]: #227 [bids-standard/bids-specification#2162]: bids-standard/bids-specification#2162 <a id='changelog-2.0.11'></a> - Docker build workflow should now run correctly on releases. <a id='changelog-2.0.10'></a> - Added a [FAQ] to the user guide. ([#215]) [FAQ]: https://bids-validator.readthedocs.io/en/latest/user_guide/faq.html [#215]: #215 - Improved handling of TSV columns with sidecar definitions. `"Format"`, `"Minimum"` and `"Maximum"` keys are now supported. - `--datasetTypes` and `--blacklistModalities` options now accept a string array (`--datasetTypes raw,derivative`) and can be combined. - A crash in the web validator prevented validation from taking place. - Docker images will once again be pushed to [bids/validator][]. [bids/validator]: https://hub.docker.com/r/bids/validator/ <a id='changelog-"2.0.9"'></a> - Display version in web app - The `--datasetTypes` flag accepts a list of `DatasetType`s, allowing applications to restrict the datasets they accept. - Upgraded to BIDS schema version 1.0.13. - Raise error when JSON files are parsed and their root value is anything other than an object <a id='changelog-"2.0.8"'></a> - Support multi-inheritance for associated files. This will allow for multiple `electrodes.tsv` files, distinguished by the `space-` entity. ([#206] [#207]) [#206]: #206 [#207]: #207 <a id='changelog-2.0.7'></a> - Handle TSV schema rules with missing or `n/a` values for `additional_columns`. <a id='changelog-"2.0.6"'></a> - Explain the issue data fields in the documentation. ([#199]) [#199]: #199 - Validator now returns exit code 16 instead of 1 for validation of a dataset with errors. - Rely on `schema.meta.associations` to load context associations instead of relying on list maintained in validator. - Sidecar checks are skipped for text files that should not have sidecars. This resolves a problem in derivative datasets, where BIDS specifies a RECOMMENDED field of `Description` in all derivative files. ([#202]) [#202]: #202 <a id='changelog-2.0.4'></a> A hot-fix release that adds missing entries to the 2.0.4 changelog and fixes publication to PyPI. <a id='changelog-2.0.4'></a> - Validate directory names names according to `schema.rules.directories` entries. Use rules to identify "opaque" directories whose contents are unspecified by BIDS. ([#180]) [#180]: #180 - Report field descriptions for missing or invalid metadata. ([#177]) [#177]: #177 - Publish validator to PyPI as `bids-validator-deno`. ([#186]) [#186]: #186 - Update to HED Validator 4.0.0. ([#173]) [#173]: #173 <a id='changelog-2.0.3'></a> - Subject detection in `participants.tsv` and `phenotype/` directories has been restored, enabling checks that were deactivated by the missing data. ([#162]) [#162]: #162 - Skip HED tests if schema cannot be loaded. This was exhibiting as a `HED_ERROR` with "cannot read property null". ([#160]) [#160]: #160 - `TSV_INCORRECT_VALUE_TYPE*` error messages now indicate that a match failed, instead of confusingly claim success. ([#165]) [#165]: #165 <a id='changelog-2.0.2'></a> - Enable glob-style wildcards for `location` field in configuration files. (#134) - Ensure HED schemas are loaded only once, improving efficiency. (#156) - Change the output of the `intersects()` function in the expression language to return the intersection, if non-empty. Corresponds to [bids-standard/bids-specification#2044]. (#150) - Update to BIDS schema version 1.0.1 (BIDSVersion 1.10.0) (#152) - Limit TSV validation to first 1000 rows by default, adding the `--max-rows` flag to control this behavior. (#139) [bids-standard/bids-specification#2044]: bids-standard/bids-specification#2044 - TSV files may now have columns named `set`, `clear`, `delete`, `keys`, or `value`. These were previously masked by the methods on the data structure representing columns. (#155) - Improve handling of `.bidsignore` files in the web validator. Ignores matching directories but not the files they contained could fail to match. (#113) - Resolve issue with parsing headers of NIfTI files with large extensions. Fixes [issue 126]. [issue 126]: #126 - Adopting [scriv](https://scriv.readthedocs.io/en/latest/) for changelog management. <a id='changelog-2.0.1'></a> - Improve handling of `.bidsignore` files in the web validator. Ignores matching directories but not the files they contained could fail to match. (#113) - Resolve issue with parsing headers of NIfTI files with large extensions. Fixes [issue 126]. [issue 126]: #126 - Adopting [scriv](https://scriv.readthedocs.io/en/latest/) for changelog management.
<!-- scriv-insert-here --> <a id='changelog-"2.3.2"'></a> - File reads are temporarily cached to avoid multiple fetches/opens. - Retrieval of remote data on S3 is now more robust, avoiding resource leaks by setting timeouts and a reasonable retry protocol. <a id='changelog-"2.3.1"'></a> Mismatch between version and tag. Re-releasing for consistency. No other changes. <a id='changelog-"2.3.0"'></a> - Improve types for memoized functions by passing argument and return types to callers. - Render Markdown links as OSC-8 links in terminals where support is detected. - Exit with a non-zero exit code if nested datasets are validated and found to have errors. - Prevent HED check from failing for null values found in sidecar metadata. <a id='changelog-"2.2.10"'></a> - Improve types for memoized functions by passing argument and return types to callers. - Extract AWS region from S3 special remote, defaulting to us-east-1. <a id='changelog-"2.2.9"'></a> - Reverted terminal URLs for the 2.2.x series. It should be back in 2.3.0. <a id='changelog-"2.2.8"'></a> - Render Markdown links as OSC-8 links in terminals where support is detected. - Fix typo in S3 URL generation code that prevented reading remote files. <a id='changelog-"2.2.7"'></a> - Maintainer documentation for creating and fixing releases. - Support for rendering Markdown in validation messages in the terminal. - Display validation summaries for derivative datasets when recursive validation (`-r`/`--recursive`) is run. - Support for presigning S3 URLs if AWS credentials are detected. - Validate derivative file paths relative to the derivative dataset root. - Have all three calls to fetch in HttpOpener use same error handling. - Fix memoization memory leak for readRemotes. - Replace SPEC_ROOT placeholder with actual documentation link in CLI output - Pin Deno to 2.5.6 in wheel builds to account for bugs with MacOS binaries compiled with 2.6.0. <a id='changelog-"2.2.5"'></a> - Support for template and cohort directories, as introduced in BEP038. - The AMBIGUOUS_AFFINE issue was given an error message and set to warning. - Very oblique affines are no longer considered ambiguous. - Resolved TypeError when rendering issues for JSON outputs. <a id='changelog-"2.2.4"'></a> - Annexed files with base-64-encoded version information are now supported. <a id='changelog-"2.2.3"'></a> - NIfTI files with bad qform matrices, resulting from non-normalized quaternions, would previously raise a NIFTI_HEADER_UNREADABLE error. Now only the axis codes are disabled, preventing orientation checks, but not raising errors. <a id='changelog-"2.2.2"'></a> - Support `min()` and `max()` of numbers in the expression language. This allows for simpler rules when a field may be a number or array of numbers. - [Annexed](https://git-annex.branchable.com/) files that are not local are treated as empty instead of erroring if a remote URL could not be constructed. The size of missing files are included in the summary estimate of dataset size. - `INVALID_FILE_ENCODING` issues now print sensible messages instead of crashing. <a id='changelog-"2.2.1"'></a> - Support for `associations.physio` and `associations.events.sidecar`. - Implement `associations.coordsystems` to collate multiple `coordsystem.json` files, as required by BEP 042 (EMG). - Validation context generation was tweaked to improve concurrency, giving 4x validation speedups in some cases. <a id='changelog-"2.2.0"'></a> - Added `--format` option to specify output format: `text` (default), `json`, or `json_pp` (pretty-printed JSON) - Pretty-printed JSON output support via `--format json_pp` option - Datalad/git-annex datasets with remote content in public S3 buckets can be validated with the `--preferredRemote <remote-name>` flag. If a public S3 bucket is detected without this flag, the most recent export is used. - Refactored file access classes to be more DRY. - Circular references that could lead to a hanging process were mitigated. [#278] [#278]: #278 - Deprecated `--json` option in favor of `--format json` (backward compatibility maintained) <a id='changelog-2.1.1'></a> - Additional (dataset-defined) columns are now validated against the definitions in the sidecar files. - Throw error on file name case collision. - Add support for the `unique()` function in schema expressions. - Support issues messages that access validation context variables. - Initial column TSV checks now support missing, optional initial columns. - Index column TSV checks now support missing, optional index columns. - Now supports Deno 2.5 and Typescript 5.9.2. - Parsed JSON files are now cached to reduce I/O and parsing costs. - Throw an error if specified schema (e.g. via `--schema` or `BIDS_SCHEMA` env var) could not be loaded. - File access failures consistently produce `FILE_READ` errors across all file types. - Fixed json encoding issue in web log download ([#174]). - Throw utf-8 encoding error for tsv files similar to json files. [#174]: #174 <a id='changelog-2.1.0'></a> This release adds support for BIDS 1.10.1. - Load `.tsv.gz` column contents for validation. - Issue deprecation warning for `"89+"` in `age` columns, per [bids-standard/bids-specification#2162][]. - Added support for extracting image orientation from NIfTI headers, added to the BIDS schema in 1.10.1. - Raise errors for all TSV type check failures. Previously, recommended and optional fields would raise warnings. - Updated `@bids/schema` to ~1.1.0, corresponding to BIDS version 1.10.1. - Avoid descending into opaque directories (such as `*.zarr/`) when checking for unused sidecars. ([#227]) [#227]: #227 [bids-standard/bids-specification#2162]: bids-standard/bids-specification#2162 <a id='changelog-2.0.11'></a> - Docker build workflow should now run correctly on releases. <a id='changelog-2.0.10'></a> - Added a [FAQ] to the user guide. ([#215]) [FAQ]: https://bids-validator.readthedocs.io/en/latest/user_guide/faq.html [#215]: #215 - Improved handling of TSV columns with sidecar definitions. `"Format"`, `"Minimum"` and `"Maximum"` keys are now supported. - `--datasetTypes` and `--blacklistModalities` options now accept a string array (`--datasetTypes raw,derivative`) and can be combined. - A crash in the web validator prevented validation from taking place. - Docker images will once again be pushed to [bids/validator][]. [bids/validator]: https://hub.docker.com/r/bids/validator/ <a id='changelog-"2.0.9"'></a> - Display version in web app - The `--datasetTypes` flag accepts a list of `DatasetType`s, allowing applications to restrict the datasets they accept. - Upgraded to BIDS schema version 1.0.13. - Raise error when JSON files are parsed and their root value is anything other than an object <a id='changelog-"2.0.8"'></a> - Support multi-inheritance for associated files. This will allow for multiple `electrodes.tsv` files, distinguished by the `space-` entity. ([#206] [#207]) [#206]: #206 [#207]: #207 <a id='changelog-2.0.7'></a> - Handle TSV schema rules with missing or `n/a` values for `additional_columns`. <a id='changelog-"2.0.6"'></a> - Explain the issue data fields in the documentation. ([#199]) [#199]: #199 - Validator now returns exit code 16 instead of 1 for validation of a dataset with errors. - Rely on `schema.meta.associations` to load context associations instead of relying on list maintained in validator. - Sidecar checks are skipped for text files that should not have sidecars. This resolves a problem in derivative datasets, where BIDS specifies a RECOMMENDED field of `Description` in all derivative files. ([#202]) [#202]: #202 <a id='changelog-2.0.4'></a> A hot-fix release that adds missing entries to the 2.0.4 changelog and fixes publication to PyPI. <a id='changelog-2.0.4'></a> - Validate directory names names according to `schema.rules.directories` entries. Use rules to identify "opaque" directories whose contents are unspecified by BIDS. ([#180]) [#180]: #180 - Report field descriptions for missing or invalid metadata. ([#177]) [#177]: #177 - Publish validator to PyPI as `bids-validator-deno`. ([#186]) [#186]: #186 - Update to HED Validator 4.0.0. ([#173]) [#173]: #173 <a id='changelog-2.0.3'></a> - Subject detection in `participants.tsv` and `phenotype/` directories has been restored, enabling checks that were deactivated by the missing data. ([#162]) [#162]: #162 - Skip HED tests if schema cannot be loaded. This was exhibiting as a `HED_ERROR` with "cannot read property null". ([#160]) [#160]: #160 - `TSV_INCORRECT_VALUE_TYPE*` error messages now indicate that a match failed, instead of confusingly claim success. ([#165]) [#165]: #165 <a id='changelog-2.0.2'></a> - Enable glob-style wildcards for `location` field in configuration files. (#134) - Ensure HED schemas are loaded only once, improving efficiency. (#156) - Change the output of the `intersects()` function in the expression language to return the intersection, if non-empty. Corresponds to [bids-standard/bids-specification#2044]. (#150) - Update to BIDS schema version 1.0.1 (BIDSVersion 1.10.0) (#152) - Limit TSV validation to first 1000 rows by default, adding the `--max-rows` flag to control this behavior. (#139) [bids-standard/bids-specification#2044]: bids-standard/bids-specification#2044 - TSV files may now have columns named `set`, `clear`, `delete`, `keys`, or `value`. These were previously masked by the methods on the data structure representing columns. (#155) - Improve handling of `.bidsignore` files in the web validator. Ignores matching directories but not the files they contained could fail to match. (#113) - Resolve issue with parsing headers of NIfTI files with large extensions. Fixes [issue 126]. [issue 126]: #126 - Adopting [scriv](https://scriv.readthedocs.io/en/latest/) for changelog management. <a id='changelog-2.0.1'></a> - Improve handling of `.bidsignore` files in the web validator. Ignores matching directories but not the files they contained could fail to match. (#113) - Resolve issue with parsing headers of NIfTI files with large extensions. Fixes [issue 126]. [issue 126]: #126 - Adopting [scriv](https://scriv.readthedocs.io/en/latest/) for changelog management.
2.3.0 — 2026-01-27 Changed - Improve types for memoized functions by passing argument and return types to callers. - Render Markdown links as OSC-8 links in terminals where support is detected. Fixed - Exit with a non-zero exit code if nested datasets are validated and found to have errors. - Prevent HED check from failing for null values found in sidecar metadata.
2.2.7 Added - Maintainer documentation for creating and fixing releases. - Support for rendering Markdown in validation messages in the terminal. - Display validation summaries for derivative datasets when recursive validation (`-r`/`--recursive`) is run. - Support for presigning S3 URLs if AWS credentials are detected. Fixed - Validate derivative file paths relative to the derivative dataset root. - Have all three calls to fetch in HttpOpener use same error handling. - Fix memoization memory leak for readRemotes. - Replace SPEC_ROOT placeholder with actual documentation link in CLI output Infrastructure - Pin Deno to 2.5.6 in wheel builds to account for bugs with MacOS binaries compiled with 2.6.0.
PreviousNext