-
Notifications
You must be signed in to change notification settings - Fork 197
Expand file tree
/
Copy pathmri.yaml
More file actions
175 lines (164 loc) · 5 KB
/
mri.yaml
File metadata and controls
175 lines (164 loc) · 5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
---
PhasePartUnits:
issue:
code: PHASE_UNITS
message: |
Phase images (with the `part-phase` entity) must have units "rad" or "arbitrary".
level: error
selectors:
- modality == "mri"
- entities.part == "phase"
- '"Units" in sidecar'
checks:
- intersects([sidecar.Units], ["rad", "arbitrary"])
# 3
EchoTimeGreaterThan:
issue:
code: ECHO_TIME_GREATER_THAN
message: |
'EchoTime' is greater than 1. Are you sure it's expressed in seconds?
level: warning
selectors:
- modality == "mri"
- sidecar.EchoTime
checks:
- max(sidecar.EchoTime) <= 1
# 5
TotalReadoutTimeGreaterThan:
issue:
code: TOTAL_READOUT_TIME_GREATER_THAN
message: |
'TotalReadoutTime' is greater than 10. Are you sure it's expressed in seconds?
level: warning
selectors:
- modality == "mri"
- sidecar.TotalReadoutTime
checks:
- sidecar.TotalReadoutTime <= 10
# 76
EffectiveEchoSpacingTooLarge:
issue:
code: EFFECTIVEECHOSPACING_TOO_LARGE
message: |
Abnormally high value of 'EffectiveEchoSpacing'.
level: error
selectors:
- modality == "mri"
- type(sidecar.RepetitionTime) != "null"
- type(sidecar.EffectiveEchoSpacing) != "null"
- type(sidecar.PhaseEncodingDirection) != "null"
- type(nifti_header) != "null"
checks:
- |
sidecar.RepetitionTime >= (
sidecar.EffectiveEchoSpacing
* nifti_header.dim[index(["i", "j", "k"], sidecar.PhaseEncodingDirection[0])]
)
# 87
SliceTimingElements:
issue:
code: SLICETIMING_ELEMENTS
message: |
The number of elements in the 'SliceTiming' array should match the 'k'
dimension of the corresponding NIfTI volume.
level: warning
selectors:
- modality == "mri"
- type(sidecar.SliceTiming) != "null"
- type(nifti_header) != "null"
- type(sidecar.SliceEncodingDirection) == 'null'
checks:
- length(sidecar.SliceTiming) == nifti_header.dim[3]
SliceTimingElementsWithDirection:
issue:
code: SLICETIMING_ELEMENTS
message: |
The number of elements in the 'SliceTiming' array should match the dimension
of the corresponding NIfTI volume matching `SliceEncodingDirection`
level: warning
selectors:
- modality == "mri"
- type(sidecar.SliceTiming) != "null"
- type(nifti_header) != "null"
- sidecar.SliceEncodingDirection
checks:
- sidecar.SliceEncodingDirection[0] != "i" || length(sidecar.SliceTiming) == nifti_header.dim[1]
- sidecar.SliceEncodingDirection[0] != "j" || length(sidecar.SliceTiming) == nifti_header.dim[2]
- sidecar.SliceEncodingDirection[0] != "k" || length(sidecar.SliceTiming) == nifti_header.dim[3]
# 93
EESGreaterThanTRT:
issue:
code: EFFECTIVEECHOSPACING_LARGER_THAN_TOTALREADOUTTIME
message: |
'EffectiveEchoSpacing' should always be smaller than 'TotalReadoutTime'.
level: error
selectors:
- modality == "mri"
- sidecar.EffectiveEchoSpacing != null
- sidecar.TotalReadoutTime != null
checks:
- sidecar.EffectiveEchoSpacing < sidecar.TotalReadoutTime
# 188
VolumeTimingNotMonotonicallyIncreasing:
issue:
code: VOLUME_TIMING_NOT_MONOTONICALLY_INCREASING
message: |
'VolumeTiming' is not monotonically increasing.
level: error
selectors:
- modality == "mri"
- sidecar.VolumeTiming != null
checks:
- allequal(sorted(sidecar.VolumeTiming), sidecar.VolumeTiming)
# 192
BolusCutOffDelayTimeNotMonotonicallyIncreasing:
issue:
code: BOLUS_CUT_OFF_DELAY_TIME_NOT_MONOTONICALLY_INCREASING
message: |
'BolusCutOffDelayTime' is not monotonically increasing.
level: error
selectors:
- modality == "mri"
- type(sidecar.BolusCutOffDelayTime) == 'array'
checks:
- allequal(sorted(sidecar.BolusCutOffDelayTime), sidecar.BolusCutOffDelayTime)
# 201
RepetitionTimePreparationNotConsistent:
issue:
code: REPETITIONTIME_PREPARATION_NOT_CONSISTENT
message: |
The number of values for 'RepetitionTimePreparation' for this file does
not match the 4th dimension of the NIfTI header.
level: error
selectors:
- modality == "mri"
- type(sidecar.RepetitionTimePreparation) == "array"
- 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]