Skip to content

Commit 1bcf51a

Browse files
authored
JSON-schema: overhaul accepted coordinate keywords (#1149)
* overhaul accepted coordinate keywords * run yarn lint --fix * remove typo
1 parent 0e3bcee commit 1bcf51a

File tree

5 files changed

+106
-11
lines changed

5 files changed

+106
-11
lines changed

bids-validator/tests/json.spec.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ describe('JSON', function() {
156156
MEGCoordinateSystem: 'CTF',
157157
MEGCoordinateUnits: 'mm',
158158
MEGCoordinateSystemDescription: 'this is the usual ...',
159-
EEGCoordinateSystem: 'Other',
159+
EEGCoordinateSystem: 'CapTrak',
160160
EEGCoordinateSystemDescription: 'RAS orientation ...',
161161
HeadCoilCoordinateSystem: 'Other',
162162
HeadCoilCoordinates: {
@@ -223,11 +223,15 @@ describe('JSON', function() {
223223
}
224224
jsonDict[eeg_coordsystem_file.relativePath] = jsonObj
225225
validate.JSON(eeg_coordsystem_file, jsonDict, function(issues) {
226-
assert(issues.length === 1)
226+
assert(issues.length === 5)
227227
assert(
228228
issues[0].evidence ==
229229
'.EEGCoordinateSystem should be equal to one of the allowed values',
230230
)
231+
assert(
232+
issues[4].evidence ==
233+
'.EEGCoordinateSystem should match some schema in anyOf',
234+
)
231235
})
232236
})
233237

bids-validator/validators/json/schemas/common_definitions.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,53 @@
44
"CogAtlasID": { "type": "string", "format": "uri" },
55
"CogPOID": { "type": "string", "format": "uri" },
66
"CoordUnits": { "type": "string", "enum": ["m", "mm", "cm", "n/a"] },
7+
"MEGCoordSys": { "type": "string", "enum": ["CTF", "ElektaNeuromag", "4DBti", "KitYokogawa", "ChietiItab", "Other"] },
8+
"EEGCoordSys": { "type": "string", "enum": ["CapTrak", "Other"] },
9+
"iEEGCoordSys": { "type": "string", "enum": ["Pixels", "ACPC", "Other"] },
10+
"StandardTemplateCoordSys" :{
11+
"type": "string",
12+
"enum": [
13+
"ICBM452AirSpace",
14+
"ICBM452Warp5Space",
15+
"IXI549Space",
16+
"fsaverage",
17+
"fsaverageSym",
18+
"fsLR",
19+
"MNIColin27",
20+
"MNI152Lin",
21+
"MNI152NLin2009aSym",
22+
"MNI152NLin2009bSym",
23+
"MNI152NLin2009cSym",
24+
"MNI152NLin2009aAsym",
25+
"MNI152NLin2009bAsym",
26+
"MNI152NLin2009cAsym",
27+
"MNI152NLin6Sym",
28+
"MNI152NLin6ASym",
29+
"MNI305",
30+
"NIHPD",
31+
"OASIS30AntsOASISAnts",
32+
"OASIS30Atropos",
33+
"Talairach",
34+
"UNCInfant"
35+
] },
36+
"StandardTemplateDeprecatedCoordSys" :{
37+
"type": "string",
38+
"enum": [
39+
"fsaverage3",
40+
"fsaverage4",
41+
"fsaverage5",
42+
"fsaverage6",
43+
"fsaveragesym",
44+
"UNCInfant0V21",
45+
"UNCInfant1V21",
46+
"UNCInfant2V21",
47+
"UNCInfant0V22",
48+
"UNCInfant1V22",
49+
"UNCInfant2V22",
50+
"UNCInfant0V23",
51+
"UNCInfant1V23",
52+
"UNCInfant2V23"
53+
] },
754
"DeviceSerialNumber": { "type": "string" },
855
"ECGChannelCount": { "type": "integer", "minimum": 0 },
956
"EEGChannelCount": { "type": "integer", "minimum": 0 },

bids-validator/validators/json/schemas/coordsystem_eeg.json

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,29 @@
44
"IntendedFor": { "type": "string", "minLength": 1 },
55
"FiducialsDescription": { "type": "string", "minLength": 1 },
66
"FiducialsCoordinates": { "$ref": "common_definitions.json#/definitions/LandmarkCoordinates" },
7-
"FiducialsCoordinateSystem": { "type": "string", "enum": ["CapTrak", "Other"] },
7+
"FiducialsCoordinateSystem": { "anyOf": [
8+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
9+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
10+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
11+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
12+
]},
813
"FiducialsCoordinateSystemDescription": { "type": "string", "minLength": 1 },
914
"FiducialsCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
10-
"EEGCoordinateSystem": { "type": "string", "enum": ["CapTrak", "Other"] },
15+
"EEGCoordinateSystem": { "anyOf": [
16+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
17+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
18+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
19+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
20+
]},
1121
"EEGCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
1222
"EEGCoordinateSystemDescription": { "type": "string", "minLength": 1 },
1323
"AnatomicalLandmarkCoordinates": { "$ref": "common_definitions.json#/definitions/LandmarkCoordinates" },
14-
"AnatomicalLandmarkCoordinateSystem": { "type": "string", "enum": ["CapTrak", "Other"] },
24+
"AnatomicalLandmarkCoordinateSystem": { "anyOf": [
25+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
26+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
27+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
28+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
29+
]},
1530
"AnatomicalLandmarkCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
1631
"AnatomicalLandmarkCoordinateSystemDescription": { "type": "string", "minLength": 1 }
1732
},

bids-validator/validators/json/schemas/coordsystem_ieeg.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
"type": "object",
33
"properties": {
44
"IntendedFor": { "type": "string", "minLength": 1 },
5-
"iEEGCoordinateSystem": { "type": "string", "enum": ["Pixels", "ACPC", "Other"] },
5+
"iEEGCoordinateSystem": { "anyOf": [
6+
{ "$ref": "common_definitions.json#/definitions/iEEGCoordSys" },
7+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
8+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
9+
]},
610
"iEEGCoordinateUnits": { "type": "string", "enum": ["m", "mm", "cm", "pixels", "n/a"] },
711
"iEEGCoordinateSystemDescription": { "type": "string", "minLength": 1 },
812
"iEEGCoordinateProcessingDescription": { "type": "string", "minLength": 1 },

bids-validator/validators/json/schemas/coordsystem_meg.json

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
{
22
"type": "object",
33
"properties": {
4-
"MEGCoordinateSystem": { "type": "string", "enum": ["CTF", "ElektaNeuromag", "4DBti", "KitYokogawa", "ChietiItab", "Other"] },
4+
"MEGCoordinateSystem": { "anyOf": [
5+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
6+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
7+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
8+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
9+
]},
510
"MEGCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
611
"MEGCoordinateSystemDescription": { "type": "string", "minLength": 1 },
7-
"EEGCoordinateSystem": { "type": "string", "enum": ["CTF", "ElektaNeuromag", "4DBti", "KitYokogawa", "ChietiItab", "Other"] },
12+
"EEGCoordinateSystem": { "anyOf": [
13+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
14+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
15+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
16+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
17+
]},
818
"EEGCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
919
"EEGCoordinateSystemDescription": { "type": "string", "minLength": 1 },
1020
"IntendedFor": {
@@ -21,15 +31,30 @@
2131
},
2232
"FiducialsDescription": { "type": "string", "minLength": 1 },
2333
"HeadCoilCoordinates": { "$ref": "common_definitions.json#/definitions/LandmarkCoordinates" },
24-
"HeadCoilCoordinateSystem": { "type": "string", "enum": ["CTF", "ElektaNeuromag", "4DBti", "KitYokogawa", "ChietiItab", "Other"] },
34+
"HeadCoilCoordinateSystem": { "anyOf": [
35+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
36+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
37+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
38+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
39+
]},
2540
"HeadCoilCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
2641
"HeadCoilCoordinateSystemDescription": { "type": "string", "minLength": 1 },
2742
"AnatomicalLandmarkCoordinates": { "$ref": "common_definitions.json#/definitions/LandmarkCoordinates" },
28-
"AnatomicalLandmarkCoordinateSystem": { "type": "string", "enum": ["CTF", "ElektaNeuromag", "4DBti", "KitYokogawa", "ChietiItab", "Other"] },
43+
"AnatomicalLandmarkCoordinateSystem": { "anyOf": [
44+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
45+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
46+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
47+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
48+
]},
2949
"AnatomicalLandmarkCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
3050
"AnatomicalLandmarkCoordinateSystemDescription": { "type": "string", "minLength": 1 },
3151
"DigitizedHeadPoints": { "type": "string" },
32-
"DigitizedHeadPointsCoordinateSystem": { "type": "string", "enum": ["CTF", "ElektaNeuromag", "4DBti", "KitYokogawa", "ChietiItab", "Other"] },
52+
"DigitizedHeadPointsCoordinateSystem": { "anyOf": [
53+
{ "$ref": "common_definitions.json#/definitions/MEGCoordSys" },
54+
{ "$ref": "common_definitions.json#/definitions/EEGCoordSys" },
55+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateCoordSys" },
56+
{ "$ref": "common_definitions.json#/definitions/StandardTemplateDeprecatedCoordSys" }
57+
]},
3358
"DigitizedHeadPointsCoordinateUnits": { "$ref": "common_definitions.json#/definitions/CoordUnits" },
3459
"DigitizedHeadPointsCoordinateSystemDescription": { "type": "string", "minLength": 1 }
3560
},

0 commit comments

Comments
 (0)