Open nbeliy opened 1 month ago
Another issue with shema:
Selector for rules/sidecars/mri/MRIScannerHardwareASL
is:
datatype == "perf"
suffix == "asl"
intersects([suffix], ["asl", "m0scan"])
Is it applicable only for suffix asl
or for both asl
and m0scan
level: <level>, <addendum>
is an accidental shorthand that takes advantage of the behavior of the validator and the renderer. I'm okay with forcing consistency, though, if you would like to open a PR. If so, would you be able to also update the metaschema? I believe this line is what currently allows the above, and could be removed:
For the MRIScannerHardwareASL
, the selectors are AND-combined, so the second line should be removed, to allow it to apply to m0scan
s.
Dear, @effigies , I could do do PR, but I still feel quite unfamiliar with the structure of schema. And I'm unsure what is just historical inconsistency and what is made on purpose.
For example, sometimes deprecated levels are are written in all caps, and sometimes lowercase, also at some places extensions are selected by match
and in other cases, from a list.
As this schema is used to generate BIDS documentation, I'm afraid to brake something.
I've updated list of inconsistencies in issue.
Can you confirm that they are indeed problematic, and I will make a PR.
Describe your problem in detail.
In schema/rules/sidecars/mri.yaml, the level for
MagneticFieldStrength
is stated asrecommended, but required for Arterial Spin Labeling
, which is inconsistent with levels for other metadata fields, that only provide just level value.Same issue with
NonLinearGradientCorrection
below.Describe what you expected.
The
, but required for Arterial Spin Labeling
moved intolevel_addendum
, as it is done for other metadata (for. exEffectiveEchoSpacing
)List of possible inconsitencies
Putting all inconsistencies and possible errors that I found here:
mri/MagneticFieldStrength
requirement level is not just 'optional'mri/MRIScannerHardwareASL
:suffix == "asl"
contradictsintersects([suffix], ["asl", "m0scan"])
anat/TaskMetadata
refers to entities list asentity.task != null
, but inentity_rules
, entities are queried asentities
nirs
referes to sidecar asjson
, instead ofsidecar
in other rulespet, func, dwi, anat, fmap
: extension check are defined inrules/files
, and not needed in sidecarmri/MRIHardware
: fieldHardcopyDeviceSoftwareVersion
is marked asDEPRECATED
, while in other similar cases (in eeg for ex.) deprecated is written in all small capsperf
are stored in fileasl.yaml
, and not asperf.yaml
MISCChannelCount
is duplicated asMiscChannelCount
. First one is used i eeg, second one in megfunc
:VolumeTiming
: requirements forAcquisitionDuration
andSliceTiming
are not defined