Skip to content

Commit 442022a

Browse files
committed
feat(schema): Add meta.templates
1 parent 460ad10 commit 442022a

File tree

22 files changed

+537
-597
lines changed

22 files changed

+537
-597
lines changed

src/metaschema.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@
7171
"additionalProperties": false
7272
}
7373
},
74+
"templates": {
75+
"type": "object"
76+
},
7477
"versions": {
7578
"type": "array",
7679
"items": {

src/schema/README.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -167,21 +167,23 @@ references (the cases in which they are used will be presented later):
167167
(which are in turn references to individual values), and the references inside `GeneticLevel.anyOf` indicate that there may be a single
168168
such value or a list of values.
169169

170-
1. In [`rules.files.deriv.preprocessed_data`][preprocessed_data]:
170+
1. In [`rules.files.deriv.imaging`](./rules/files/deriv/imaging.yaml):
171171
```YAML
172-
anat_nonparametric_common:
173-
$ref: rules.files.raw.anat.nonparametric
172+
anat_parametric_volumetric:
173+
$ref: rules.files.raw.anat.parametric
174174
entities:
175-
$ref: rules.files.raw.anat.nonparametric.entities
176-
space: optional
177-
description: optional
175+
$ref:
176+
- meta.templates.deriv.volumetric.entities
177+
- rules.files.raw.anat.parametric.entities
178178
```
179179
Here, the derivative datatype rule starts by copying the raw datatype rule
180180
`rules.files.raw.anat.nonparametric`.
181181
It then *overrides* the `entities` portion of that rule with a new object.
182-
To *extend* the original `entities`, it again begins
183-
by referencing `rules.files.raw.anat.nonparametric.entities`,
184-
and adding the new entities `space` and `description`.
182+
To *extend* the original `entities`, it composes
183+
`meta.templates.deriv.volumetric.entities`
184+
and `rules.files.raw.anat.nonparametric.entities`.
185+
When multiple references are aggregated, the first reference takes
186+
precedence.
185187

186188
### Expressions
187189

@@ -1071,5 +1073,4 @@ ensuring consistency across the entire schema directory. Validation of the schem
10711073
incorporated into the CI, so any changes that are inconsistent will be flagged before
10721074
inclusion.
10731075

1074-
[preprocessed_data]: https://github.com/bids-standard/bids-specification/tree/master/src/schema/rules/files/deriv/preprocessed_data.yaml
10751076
[tabular files]: https://bids-specification.readthedocs.io/en/stable/common-principles.html#tabular-files

src/schema/meta/templates.yaml

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
# This section is unstructured, for inclusion in rules by reference
3+
4+
# Entities that apply to most raw files
5+
# Include thus:
6+
#
7+
# filerule:
8+
# entities:
9+
# $ref: meta.templates.raw.base.entities
10+
# task: optional
11+
# ...
12+
# datatypes:
13+
# ...
14+
raw:
15+
base:
16+
entities:
17+
subject: required
18+
session: optional
19+
20+
# Entities that apply to most derivative files
21+
# Include thus:
22+
#
23+
# filerule:
24+
# entities:
25+
# $ref: meta.templates.deriv.base.entities
26+
# task: optional
27+
# ...
28+
# datatypes:
29+
# ...
30+
deriv:
31+
base:
32+
selectors:
33+
- dataset.dataset_description.DatasetType == 'derivative'
34+
entities:
35+
subject: optional
36+
session: optional
37+
description: optional
38+
39+
spatial:
40+
$ref: meta.templates.deriv.base
41+
entities:
42+
$ref: meta.templates.deriv.base.entities
43+
space: optional
44+
45+
# Imaging derivatives
46+
volumetric:
47+
$ref: meta.templates.deriv.spatial
48+
extensions:
49+
- .nii.gz
50+
- .nii
51+
- .json
52+
entities:
53+
$ref: meta.templates.deriv.spatial.entities
54+
resolution: optional
55+
56+
surface:
57+
$ref: meta.templates.deriv.spatial
58+
entities:
59+
$ref: meta.templates.deriv.spatial.entities
60+
hemisphere: optional
61+
density: optional
62+
63+
mask:
64+
$ref: meta.templates.deriv.volumetric
65+
suffixes:
66+
- mask
67+
entities:
68+
$ref: meta.templates.deriv.volumetric.entities
69+
label: optional
70+
71+
dseg:
72+
$ref: meta.templates.deriv.volumetric
73+
extensions:
74+
- .nii.gz
75+
- .nii
76+
- .tsv
77+
- .json
78+
suffixes:
79+
- dseg
80+
entities:
81+
$ref: meta.templates.deriv.volumetric.entities
82+
segmentation: optional
83+
84+
probseg:
85+
$ref: meta.templates.deriv.volumetric
86+
extensions:
87+
- .nii.gz
88+
- .nii
89+
- .json
90+
suffixes:
91+
- probseg
92+
entities:
93+
$ref: meta.templates.deriv.volumetric.entities
94+
segmentation: optional
95+
label: optional
96+
97+
dseg_surface:
98+
$ref: meta.templates.deriv.surface
99+
extensions:
100+
- .label.gii
101+
- .dlabel.nii
102+
- .tsv
103+
- .json
104+
suffixes:
105+
- dseg
106+
entities:
107+
$ref: meta.templates.deriv.surface.entities
108+
segmentation: optional

0 commit comments

Comments
 (0)