-
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
SCHEMA: Proposals to standardize schema/objects/*.yaml formats #1088
Comments
@bids-standard/schema-users |
Also want to throw in an extension example: objects: any:
name: ".*"
display_name: Any Extension
description: |
Any extension is allowed
none:
name: ""
display_name: No Extension
description: |
A file with no extension. rules/datatypes/: - suffixes:
- headshape
extensions:
- any
- none
entities:
subject: required
session: optional
acquisition: optional |
I think there was one additional proposal, which is to distinguish datatype, suffix and extension as special kinds, having a "value" rather than a name: # Suffix
TwoPE: # some unambiguous reference that works for MATLAB and ancpBIDS
value: 2PE # The actual value used in the specification
display_name: 2-photon excitation microscopy # The pretty name
description: |
2-photon excitation microscopy imaging data
# Datatype
anatomical:
value: anat
display_name: Anatomical Magnetic Resonance Imaging
description: |
Magnetic resonance imaging sequences designed to characterize static, anatomical features.
# Extension
bdf:
value: ".bdf"
display_name: Biosemi Data Format
description: |
A [Biosemi](https://www.biosemi.com/) Data Format file.
Each recording consists of a single `.bdf` file.
[`bdf+`](https://www.teuniz.net/edfbrowser/bdfplus%20format%20description.html) files are permitted.
The capital `.BDF` extension MUST NOT be used. Meanwhile entities, columns and metadata could follow the convention 2: # entity
inversion: # also used for variable names in pybids
name: inv
display_name: Inversion Time
description: |
If files belonging to an entity-linked file collection are acquired at different
inversion times, the `_inv-<index>` key/value pair MUST be used to distinguish
individual files.
This entity represents the `"InversionTime` metadata field. Please note that the `<index>`
denotes the number/index (in the form of a nonnegative integer), not the `"InversionTime"`
value which needs to be stored in the field `"InversionTime"` of the separate JSON file.
type: string
format: index
# column
type__electrodes:
name: type
display_name: Electrode Type
description: |
Type of the electrode (for example, cup, ring, clip-on, wire, needle).
type: string
# Metadata
AcquisitionDuration:
name: AcquisitionDuration
display_name: Acquisition Duration
description: |
Duration (in seconds) of volume acquisition.
Corresponds to DICOM Tag 0018, 9073 `Acquisition Duration`.
This field is mutually exclusive with `"RepetitionTime"`.
type: number
exclusiveMinimum: 0
unit: s
|
This looks good, and making sure everything in The tricky parts about the extension were Not opposed to this necessarily, just wanted to make sure I'm not missing anything or that we're not adding too much unnecessary lookup steps to the schema.... |
I would go for proposal 2: the term 'column' may lead to confusion without any further context.
|
My two-type proposal (#1088 (comment)) was accepted at today's meeting. A big PR that will be Schema-version-bumping will be needed soon. |
Will the update be made to 1.7.1? Do you know when 1.7.1 gets released? |
I expect to do it before the next release, since it's a pretty constrained task, but @sappelhoff or @franklin-feingold would know better when to expect another release. I've been out of the loop for regular spec maintenance in the last month or so. |
I don't have a release in mind until another BEP is incorporated into the specification - unless folks feel a patch bump is needed before then |
From conversations in #1086 the key values and name fields are not used entirely consistently in the schema objects.
columns.yaml uses the
name
field value as the actual header column name we look for in tsv headers.entities.yaml uses the
entity
field value as the literal entity that we look for in file namessuffixes.yaml uses the entries key as the literal suffix that we look for in file names.
Except for columns.yaml
name
is used as pretty printable/user friendly display name for the object.The key used for an object is always how we refer to an object within the specification.
suffix and columns should have the values that we look for in datasets moved from their respective places into a new field.
Proposal 1 is to follow entity suite and have a special key-name unique to that object type. So from columns.yaml this:
Becomes:
Proposal 2 would be to standardize on a single key name across object to represent in dataset values. If we followed columns suite and used
name
for this, pretty print values could shift todisplay_name
:Instead of
name
there may be some other more appropriate key name to use, some floated during the 21.04.2022 schema meeting werealias
,value
,shorthand
, etc but none felt quite right.I would like to solicit input on the proposals and other potential solutions.
The text was updated successfully, but these errors were encountered: