Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
6182c55
Add extensions
kabilar Jan 22, 2026
948e51c
Add combined DWI scheme
kabilar Jan 22, 2026
dbaa549
Fix format
kabilar Jan 22, 2026
efe3014
Add recommended DWI metadata
kabilar Jan 16, 2026
919d033
Update metadata
kabilar Jan 16, 2026
753513f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 16, 2026
9121e40
Update data types
kabilar Jan 23, 2026
a77af57
Remove extensions
kabilar Jan 23, 2026
c8886b8
Move values from paired files to the sidecar JSON file
kabilar Jan 23, 2026
06e9f00
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jan 22, 2026
cc64f67
Remove extensions
kabilar Jan 23, 2026
7fdc76b
Update field names and units based on feedback
kabilar Jan 26, 2026
008eb36
Fix example
kabilar Jan 27, 2026
64c78ef
Update src/schema/objects/metadata.yaml
kabilar Jan 27, 2026
7b3f145
Update src/schema/objects/metadata.yaml
kabilar Jan 27, 2026
0c3b691
Update src/modality-specific-files/magnetic-resonance-imaging-data.md
kabilar Jan 27, 2026
ba68e38
Update metadata names
kabilar Jan 27, 2026
2cb845b
Update units
kabilar Jan 27, 2026
1cc0a1f
Simplify text using the `EchoTime`, `SmallDelta`, and `BigDelta` names
kabilar Jan 27, 2026
0447b7c
Update data types
kabilar Jan 27, 2026
1e401b2
Update src/schema/rules/sidecars/dwi.yaml
kabilar Jan 29, 2026
c14ba45
Update src/modality-specific-files/magnetic-resonance-imaging-data.md
kabilar Jan 29, 2026
04b6495
Update src/modality-specific-files/magnetic-resonance-imaging-data.md
kabilar Jan 30, 2026
40f9d66
Update src/schema/objects/metadata.yaml
kabilar Jan 30, 2026
2cac558
Update src/schema/objects/metadata.yaml
kabilar Jan 30, 2026
8dd70b6
Add checks for metadata fields
kabilar Jan 30, 2026
0104732
Update src/schema/rules/checks/mri.yaml
kabilar Jan 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion src/modality-specific-files/magnetic-resonance-imaging-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -900,7 +900,36 @@ A guide for using macros can be found at
}
) }}

### Other RECOMMENDED metadata
### Combined DWI schemes

Some DWI schemes are acquired by varying parameters including the
[`EchoTime (TE)`](../glossary.md#objects.metadata.EchoTime),
[`SmallDelta (δ)`](../glossary.md#smalldelta-metadata),
[`BigDelta (Δ)`](../glossary.md#bigdelta-metadata);
in addition to varying the diffusion-encoding weightings (b-values) and
gradients (b-vectors).

For instance, in a single run the
[Connectome 2.0 scanner](https://doi.org/10.1016/j.neuroimage.2021.118530)
collects DWI volumes where the `EchoTime`, `SmallDelta`, and `BigDelta` parameters can be varied. The DWI
volumes are concatenated in a single file and processed together with the `EchoTime`, `SmallDelta`,
and `BigDelta` values.

BIDS permits saving the `EchoTime`, `SmallDelta`, and `BigDelta` values corresponding to the *N*
volumes in the NIfTI file. The `EchoTime`, `SmallDelta`, and `BigDelta` values MAY be stored as an array in the sidecar JSON file.
If a single `EchoTime`, `SmallDelta`, or `BigDelta` value is used for the entire acquisition, the value
MAY be stored as a single number in the sidecar JSON file.
The `EchoTime`, `SmallDelta`, and `BigDelta` values MUST be specified in seconds.

The `EchoTime`, `SmallDelta`, and `BigDelta` fields MAY be
saved in the sidecar JSON file on any level of the directory structure and thus define those values for
all sessions and/or subjects in one place (see
[the inheritance principle](../common-principles.md#the-inheritance-principle)).

As an exception to the [common principles](../common-principles.md#definitions)
that parameters are constant across runs, the `EchoTime`, `SmallDelta`, and `BigDelta` values MAY change across the DWI run.

### Other metadata fields

<!-- This block generates a metadata table.
These tables are defined in
Expand All @@ -922,6 +951,8 @@ JSON example:

```JSON
{
"BigDelta": 0.040,
"SmallDelta": 0.015,
"PhaseEncodingDirection": "j-",
"TotalReadoutTime": 0.095,
"B0FieldSource": ["phasediff_fmap0", "pepolar_fmap0"]
Expand Down
68 changes: 68 additions & 0 deletions src/schema/objects/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,24 @@ BasedOn:
items:
type: string
format: participant_relative
BigDelta:
name: BigDelta
display_name: Diffusion Big Delta (Δ)
description: |
In the context of a diffusion-weighted pulsed gradient spin echo sequence,
corresponds to the time between the leading edges of two successive
diffusion-encoding gradient pulses (Δ), specified in seconds.
The value may be an array, if Δ varies by volume, in which case the number
of values MUST correspond to the number of volumes in the data file.
anyOf:
- type: number
unit: s
exclusiveMinimum: 0
- type: array
items:
type: number
unit: s
exclusiveMinimum: 0
BloodDensity:
name: BloodDensity
display_name: Blood Density
Expand Down Expand Up @@ -939,6 +957,38 @@ DewarPosition:
`"upright"`, `"supine"` or `"degrees"` of angle from vertical:
for example on CTF systems, `"upright=15°, supine=90°"`.
type: string
DiffGradientDuration:
name: DiffGradientDuration
display_name: Diffusion Gradient Duration
description: |
In the context of a diffusion-weighted pulsed gradient spin echo sequence,
corresponds to the duration of a diffusion-encoding gradient pulse (δ),
specified in milliseconds.
anyOf:
- type: number
unit: ms
exclusiveMinimum: 0
- type: array
items:
type: number
unit: ms
exclusiveMinimum: 0
DiffGradientSeparation:
name: DiffGradientSeparation
display_name: Diffusion Gradient Separation
description: |
In the context of a diffusion-weighted pulsed gradient spin echo sequence,
corresponds to the time between the leading edges of two successive
diffusion-encoding gradient pulses (Δ), specified in milliseconds.
anyOf:
- type: number
unit: ms
exclusiveMinimum: 0
- type: array
items:
type: number
unit: ms
exclusiveMinimum: 0
DigitizedHeadPoints:
name: DigitizedHeadPoints
display_name: Digitized Head Points
Expand Down Expand Up @@ -3918,6 +3968,24 @@ SliceTiming:
type: number
minimum: 0
unit: s
SmallDelta:
name: SmallDelta
display_name: Diffusion Small Delta (δ)
description: |
In the context of a diffusion-weighted pulsed gradient spin echo sequence,
corresponds to the duration of a diffusion-encoding gradient pulse (δ),
specified in seconds.
The value may be an array, if δ varies by volume, in which case the number
of values MUST correspond to the number of volumes in the data file.
anyOf:
- type: number
unit: s
exclusiveMinimum: 0
- type: array
items:
type: number
unit: s
exclusiveMinimum: 0
SoftwareFilters:
name: SoftwareFilters
display_name: Software Filters
Expand Down
28 changes: 28 additions & 0 deletions src/schema/rules/checks/mri.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,31 @@ RepetitionTimePreparationNotConsistent:
- type(nifti_header) != "null"
checks:
- length(sidecar.RepetitionTimePreparation) == nifti_header.dim[4]

BigDeltaNotConsistent:
issue:
code: BIGDELTA_NOT_CONSISTENT
message: |
The number of values for 'BigDelta' for this file does
not match the 4th dimension of the NIfTI header.
level: error
selectors:
- suffix == "dwi"
- type(sidecar.BigDelta) == "array"
- type(nifti_header) != "null"
checks:
- length(sidecar.BigDelta) == nifti_header.dim[4]

SmallDeltaNotConsistent:
issue:
code: SMALLDELTA_NOT_CONSISTENT
message: |
The number of values for 'SmallDelta' for this file does
not match the 4th dimension of the NIfTI header.
level: error
selectors:
- suffix == "dwi"
- type(sidecar.SmallDelta) == "array"
- type(nifti_header) != "null"
checks:
- length(sidecar.SmallDelta) == nifti_header.dim[4]
2 changes: 2 additions & 0 deletions src/schema/rules/sidecars/dwi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,7 @@ MRIDiffusionOtherMetadata:
- suffix == "dwi"
- match(extension, "^\.nii(\.gz)?$")
fields:
BigDelta: optional
SmallDelta: optional
PhaseEncodingDirection: recommended
TotalReadoutTime: recommended