diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60c275dcf8..80671a10d3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,7 +16,7 @@ repos: - id: check-added-large-files - id: check-case-conflict - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.29.4 + rev: 0.30.0 hooks: - id: check-dependabot - id: check-github-workflows diff --git a/Release_Protocol.md b/Release_Protocol.md index c520fec053..f9857e715d 100644 --- a/Release_Protocol.md +++ b/Release_Protocol.md @@ -116,6 +116,10 @@ You can also make use of the `exclude-from-changelog` label. Adding this label to PRs in the GitHub web interface will prevent the changelog generator from considering this item for inclusion in the changelog. +#### 2.5 Update the schema + +Add the new version to `src/schema/meta/versions.yaml`. + ### 3. Commit changes and push to upstream By pushing `rel/` branches to the main repository, the chances of continuous integration diff --git a/mkdocs.yml b/mkdocs.yml index 08fd23ef68..d0738c7e29 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -116,6 +116,7 @@ plugins: - css/watermark.css - macros: module_name: tools/mkdocs_macros_bids/main + on_error_fail: true - redirects: redirect_maps: "01-introduction.md": "introduction.md" diff --git a/readthedocs.yml b/readthedocs.yml index 5611c59505..1893f88d18 100644 --- a/readthedocs.yml +++ b/readthedocs.yml @@ -1,12 +1,32 @@ version: 2 build: - os: ubuntu-22.04 - apt_packages: - - jq + os: ubuntu-lts-latest tools: - python: "3.11" + python: latest jobs: + # The *_create_environment and post_install steps replace RTD's virtual environment + # steps with uv, a much faster alternative to virtualenv+pip. + pre_create_environment: + # Install jq and uv + - asdf plugin add jq https://github.com/lsanwick/asdf-jq.git + - asdf plugin add uv https://github.com/asdf-community/asdf-uv.git + - asdf install jq latest + - asdf install uv latest + - asdf global jq latest + - asdf global uv latest + # Turn `python -m virtualenv` into `python -c pass` + - truncate --size 0 $( dirname $( uv python find ) )/../lib/python3*/site-packages/virtualenv/__main__.py + post_create_environment: + - uv venv $READTHEDOCS_VIRTUALENV_PATH + # Turn `python -m pip` into `python -c pass` + - truncate --size 0 $( ls -d $READTHEDOCS_VIRTUALENV_PATH/lib/python3* )/site-packages/pip.py + # post_install replaces the top-level {python: {install: [{requirements: requirements.txt}]}} + post_install: + # Use a cache dir in the same mount to halve the install time + - VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH uv pip install --cache-dir $READTHEDOCS_VIRTUALENV_PATH/../../uv_cache -r requirements.txt + # Normal pre-build step to inject schema.json into the source directory + # so schema.json is hosted alongside the specification documents pre_build: - bst -v export --output src/schema.json - tools/no-bad-schema-paths.sh src/schema.json # README.md might need fixing @@ -14,7 +34,3 @@ build: mkdocs: configuration: mkdocs.yml fail_on_warning: true - -python: - install: - - requirements: requirements.txt diff --git a/src/derivatives/imaging.md b/src/derivatives/imaging.md index 4ba975824f..3a3b4bc280 100644 --- a/src/derivatives/imaging.md +++ b/src/derivatives/imaging.md @@ -229,7 +229,7 @@ vertices) or a combined volume/surface space. If the segmentation can be generated in different ways, for example, following an atlas segmentation, -the [`seg` entity](../appendices/entities.md#segmentation) MAY be used to +the [`seg` entity](../appendices/entities.md#seg) MAY be used to distinguish the name of the segmentation used. The following section describes discrete and probabilistic segmentations of @@ -293,7 +293,7 @@ In this case, the mask suffix MUST be used, the [`label` entity](../appendices/entities.md#label) SHOULD be used to specify the masked structure (see [Common image-derived labels](#common-image-derived-labels)), -and the [`seg` entity](../appendices/entities.md#segmentation) SHOULD be defined. +and the [`seg` entity](../appendices/entities.md#seg) SHOULD be defined. For example: diff --git a/src/modality-specific-files/behavioral-experiments.md b/src/modality-specific-files/behavioral-experiments.md index 70fa5ae3a6..c059383d0e 100644 --- a/src/modality-specific-files/behavioral-experiments.md +++ b/src/modality-specific-files/behavioral-experiments.md @@ -44,7 +44,7 @@ and a guide for using macros can be found at In addition to the metadata that is either: -- RECOMMENDED for sidecar JSON files for [tabular data](../common-principles.md#tabular-data), or +- RECOMMENDED for sidecar JSON files for [tabular data](../common-principles.md#tabular-files), or - REQUIRED for some data that can be found in the `beh` directory (for example `SamplingFrequency` and `StartTime` for `*_.tsv.gz` files), diff --git a/src/modality-specific-files/electroencephalography.md b/src/modality-specific-files/electroencephalography.md index 25a0fe72a2..fb15cb7710 100644 --- a/src/modality-specific-files/electroencephalography.md +++ b/src/modality-specific-files/electroencephalography.md @@ -272,7 +272,7 @@ Examples of free-form text for field `description` ### Example `*_channels.tsv` -See also the corresponding [`electrodes.tsv` example](#example-electrodestsv). +See also the corresponding [`electrodes.tsv` example](#example-_electrodestsv). ```Text name type units description reference status status_description @@ -316,7 +316,7 @@ If electrodes are repositioned, it is RECOMMENDED to use multiple sessions to in ### Example `*_electrodes.tsv` -See also the corresponding [`electrodes.tsv` example](#example-channelstsv). +See also the corresponding [`channels.tsv` example](#example-_channelstsv). ```Text name x y z type material diff --git a/src/modality-specific-files/magnetic-resonance-imaging-data.md b/src/modality-specific-files/magnetic-resonance-imaging-data.md index 2b2078fe04..a52c8f953b 100644 --- a/src/modality-specific-files/magnetic-resonance-imaging-data.md +++ b/src/modality-specific-files/magnetic-resonance-imaging-data.md @@ -11,7 +11,7 @@ MRI acquisition parameters are divided into several categories based on When adding additional metadata please use the CamelCase version of [DICOM ontology terms](https://dicom.nema.org/medical/dicom/current/output/chtml/part16/chapter_d.html) whenever possible. See also -[recommendations on JSON files](../common-principles.md#keyvalue-files-dictionaries). +[recommendations on JSON files](../common-principles.md#key-value-files-dictionaries). ### Hardware information @@ -78,7 +78,7 @@ A guide for using macros can be found at 2Conveniently, for Siemens data, this value is easily obtained as `1 / (BWPPPE * ReconMatrixPE)`, where BWPPPE is the -"BandwidthPerPixelPhaseEncode" in DICOM Tag 0019, 1028 and ReconMatrixPE is +"BandwidthPerPixelPhaseEncode" in [DICOM Tag 0019, 1028](https://dicomlookup.com/dicomtags/(0019,1028)) and ReconMatrixPE is the size of the actual reconstructed data in the phase direction (which is NOT reflected in a single DICOM Tag for all possible aforementioned scan manipulations). See @@ -944,7 +944,7 @@ accompanied by two ancillary files: `*_asl.json` and `*_aslcontext.tsv`. The `*_aslcontext.tsv` table consists of a single column of labels identifying the `volume_type` of each volume in the corresponding `*_asl.nii[.gz]` file. -Volume types are defined in the following table, based on DICOM Tag 0018, 9257 `ASL Context`. +Volume types are defined in the following table, based on [DICOM Tag 0018, 9257](https://dicomlookup.com/dicomtags/(0018,9257)) `ASL Context`. Note that the volume_types `control` and `label` within BIDS only serve to specify the magnetization state of the blood and thus the ASL subtraction order. See the [ASL Appendix](../appendices/arterial-spin-labeling.md#which-image-is-control-and-which-is-label) @@ -1354,6 +1354,6 @@ See [Using `IntendedFor` metadata](#using-intendedfor-metadata) for details on the `IntendedFor` field. As for other EPI sequences, these field mapping sequences may have any of the -[in-plane spatial encoding](#in-plane-spatial-encoding) metadata keys. +[in-plane spatial encoding](#in-and-out-of-plane-spatial-encoding) metadata keys. However, please note that `PhaseEncodingDirection` and `TotalReadoutTime` keys are REQUIRED for these field mapping sequences. diff --git a/src/modality-specific-files/magnetoencephalography.md b/src/modality-specific-files/magnetoencephalography.md index ced4d6f3e7..319473b02f 100644 --- a/src/modality-specific-files/magnetoencephalography.md +++ b/src/modality-specific-files/magnetoencephalography.md @@ -187,7 +187,7 @@ A guide for using macros can be found at #### Specific EEG fields -If recorded with MEG, see [Recording EEG simultaneously with MEG](#recording-eeg-simultaneously-with-meg) +If recorded with MEG, see [Recording EEG simultaneously with MEG](#recording-ieeg-simultaneously-with-meg) SHOULD be present: