Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENH] Update AcquisitionDuration definition to match DICOM, define FrameAcquisitionDuration for sparse sequences #1974

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 7 additions & 7 deletions src/modality-specific-files/magnetic-resonance-imaging-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -600,13 +600,13 @@ to be populated for functional sequences. Note that all these options can be
used for non sparse sequences but that only options B, D and E are valid for
sparse sequences.

| | **`RepetitionTime`** | **`SliceTiming`** | **`AcquisitionDuration`** | **`DelayTime`** | **`VolumeTiming`** |
| -------- | -------------------- | ----------------- | ------------------------- | --------------- | ------------------ |
| option A | \[ X ] | | \[ ] | | \[ ] |
| option B | \[ ] | \[ X ] | | \[ ] | \[ X ] |
| option C | \[ ] | | \[ X ] | \[ ] | \[ X ] |
| option D | \[ X ] | \[ X ] | \[ ] | | \[ ] |
| option E | \[ X ] | | \[ ] | \[ X ] | \[ ] |
| | **`RepetitionTime`** | **`SliceTiming`** | **`FrameAcquisitionDuration`** | **`DelayTime`** | **`VolumeTiming`** |
| -------- | -------------------- | ----------------- | ------------------------------ | --------------- | ------------------ |
| option A | \[ X ] | | \[ ] | | \[ ] |
| option B | \[ ] | \[ X ] | | \[ ] | \[ X ] |
| option C | \[ ] | | \[ X ] | \[ ] | \[ X ] |
| option D | \[ X ] | \[ X ] | \[ ] | | \[ ] |
| option E | \[ X ] | | \[ ] | \[ X ] | \[ ] |

**Legend**

Expand Down
12 changes: 10 additions & 2 deletions src/schema/objects/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ AcquisitionDuration:
name: AcquisitionDuration
display_name: Acquisition Duration
description: |
Duration (in seconds) of volume acquisition.
Duration (in seconds) of scan acquisition, including all volumes for multi-volume scans.
Corresponds to DICOM Tag 0018, 9073 `Acquisition Duration`.
This field is mutually exclusive with `"RepetitionTime"`.
type: number
exclusiveMinimum: 0
unit: s
Expand Down Expand Up @@ -1198,6 +1197,15 @@ FlipAngle:
unit: degree
exclusiveMinimum: 0
maximum: 360
FrameAcquisitionDuration:
name: AcquisitionDuration
display_name: Acquisition Duration
description: |
Duration (in seconds) of volume acquisition.
Corresponds to DICOM Tag 0018, 9220 `Frame Acquisition Duration`.
type: number
exclusiveMinimum: 0
unit: s
FrameDuration:
name: FrameDuration
display_name: Frame Duration
Expand Down
16 changes: 8 additions & 8 deletions src/schema/rules/checks/func.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -94,18 +94,18 @@ VolumeTimingRepetitionTimeMutex:
checks:
- type(sidecar.RepetitionTime) == "null"

RepetitionTimeAcquisitionDurationMutex:
RepetitionTimeFrameAcquisitionDurationMutex:
issue:
code: REPETITION_TIME_AND_ACQUISITION_DURATION_MUTUALLY_EXCLUSIVE
message: |
The fields 'RepetitionTime' and 'AcquisitionDuration' for this file are mutually exclusive.
The fields 'RepetitionTime' and 'FrameAcquisitionDuration' for this file are mutually exclusive.
To specify acquisition duration, use 'SliceTiming' or 'DelayTime'
(RepetitionTime - AcquisitionDuration).
(RepetitionTime - FrameAcquisitionDuration).
level: error
selectors:
- type(nifti_header) != "null"
- intersects([suffix], ["asl", "bold"])
- type(sidecar.AcquisitionDuration) != "null"
- type(sidecar.FrameAcquisitionDuration) != "null"
checks:
- type(sidecar.RepetitionTime) == "null"

Expand All @@ -114,7 +114,7 @@ VolumeTimingDelayTimeMutex:
code: VOLUME_TIMING_AND_DELAY_TIME_MUTUALLY_EXCLUSIVE
message: |
The fields 'VolumeTiming' and 'DelayTime' for this file are mutually exclusive.
To specify acquisition duration, use 'AcquisitionDuration' or 'SliceTiming'.
To specify acquisition duration, use 'FrameAcquisitionDuration' or 'SliceTiming'.
level: error
selectors:
- type(nifti_header) != "null"
Expand All @@ -123,15 +123,15 @@ VolumeTimingDelayTimeMutex:
checks:
- type(sidecar.DelayTime) == "null"

VolumeTimingMissingAcquisitionDuration:
VolumeTimingMissingFrameAcquisitionDuration:
issue:
code: VOLUME_TIMING_MISSING_ACQUISITION_DURATION
message: |
The field 'VolumeTiming' requires 'AcquisitionDuration' or 'SliceTiming' to be defined.
The field 'VolumeTiming' requires 'FrameAcquisitionDuration' or 'SliceTiming' to be defined.
level: error
selectors:
- type(nifti_header) != "null"
- intersects([suffix], ["asl", "bold"])
- type(sidecar.VolumeTiming) != "null"
checks:
- '"SliceTiming" in sidecar || "AcquisitionDuration" in sidecar'
- '"SliceTiming" in sidecar || "FrameAcquisitionDuration" in sidecar'
4 changes: 2 additions & 2 deletions src/schema/rules/sidecars/func.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ MRIFuncVolumeTiming:
description_addendum: |
This field is mutually exclusive with `"DelayTime"`.
If defined, this requires acquisition time (TA) be defined via either
`"SliceTiming"` or `"AcquisitionDuration"`.
`"SliceTiming"` or `"FrameAcquisitionDuration"`.

# Timing Parameters
MRIFuncTimingParameters:
Expand All @@ -56,7 +56,7 @@ MRIFuncTimingParameters:
NumberOfVolumesDiscardedByScanner: recommended
NumberOfVolumesDiscardedByUser: recommended
DelayTime: recommended
AcquisitionDuration:
FrameAcquisitionDuration:
level: recommended
level_addendum: |
required for sequences that are described with the `VolumeTiming`
Expand Down
1 change: 1 addition & 0 deletions src/schema/rules/sidecars/mri.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ MRITimingParameters:
or variable echo time fMRI sequences.
InversionTime: recommended
DwellTime: recommended
AcquisitionDuration: optional

EchoTimeRequiredASL:
selectors:
Expand Down
Loading