-
Notifications
You must be signed in to change notification settings - Fork 171
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
Mutual exclusion and conditional relationships in the schema #620
Comments
We also need to be able to say when the presence of one file requires another file (e.g., |
To consolidate the mechanisms I think we need to represent:
Also, here's one that I originally had, but I've lost track of what it means or why it's necessary:
|
Based on this SO post, I think using agreed-upon keywords is the way to go. Thanks to @satra for sharing the post. |
I believe that our recent work on the schema rules sufficiently covers this. |
There are a number of cases of mutually exclusive items or conditional relationships between items in the specification, and we'll need to support them in the schema.
One prime example is timing metadata for fMRI. In that situation, there are five metadata fields (
RepetitionTime
,SliceTiming
,AcquisitionDuration
,DelayTime
, andVolumeTiming
) with specific relationships. There are five supported patterns for these five fields.Another, less idiosyncratic case is entities work for the dual-purpose
beh
suffixes (physio
,stim
,beh
, andevents
). In all cases, they have two options for entities: (1) place the files underbeh
, in which case there are a set of applicable entities, or (2) place the files under the associated imaging data type, in which case they much "match" entities, plus a reduced set of applicable entities.To handle the latter case, I was thinking that the schema could include a
match
"entity" (basically a special stand-in for a set of entities that may vary based on the associated imaging data). We would need to protect this term from the main specification, even though it would be almost exclusively internal.To handle mutual exclusion, I think we could start using nested lists or something, so if we originally had:
we could instead have:
In that case there would be two options for entities for
stim
/physio
data, represented as a list of dictionaries.An alternative that might be more flexible would be to use keywords like OR, AND, and NOT as keys to dictionaries, like so:
When applied to the timing information for fMRI, this option would look like:
The text was updated successfully, but these errors were encountered: