Skip to content

Commit 1596457

Browse files
committed
set default json content for EEG MEG iEEG BEH
1 parent c9dc192 commit 1596457

File tree

5 files changed

+117
-8
lines changed

5 files changed

+117
-8
lines changed

README.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,6 @@ The format used by the MATLAB toolbox EEGLAB (Each recording consisting of a .se
105105
Biosemi data format (Each recording consisting of a .bdf file) -->
106106

107107

108-
EEGReference REQUIRED. General description of the reference scheme used and (when applicable) of location of the reference electrode in the raw recordings (e.g., "left mastoid", "Cz", "CMS"). If different channels have a different reference, this field should have a general description and the channel specific reference should be defined in the _channels.tsv file.
109-
SamplingFrequency REQUIRED. Sampling frequency (in Hz) of all the data in the recording, regardless of their type (e.g., 2400).
110-
PowerLineFrequency REQUIRED. Frequency (in Hz) of the power grid at the geographical location of the EEG instrument (i.e., 50 or 60).
111-
SoftwareFilters REQUIRED. A JSON object of temporal software filters applied, or "n/a" if the data is not available. Each key:value pair in the JSON object is a name of the filter and an object in which its parameters are defined as key:value pairs. E.g., {"Anti-aliasing filter": {"half-amplitude cutoff (Hz)": 500, "Roll-off": "6dB/Octave"}}.
112-
113-
114108

115109
- MEG
116110

src/checkCFG.m

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,12 @@
3737

3838
%% BIDS
3939

40+
fieldsToSet = behJsonDefaults(fieldsToSet);
4041
fieldsToSet = datasetDescriptionDefaults(fieldsToSet);
41-
fieldsToSet = mriJsonDefaults(fieldsToSet);
42+
fieldsToSet = eegJsonDefaults(fieldsToSet);
43+
fieldsToSet = ieegJsonDefaults(fieldsToSet);
4244
fieldsToSet = megJsonDefaults(fieldsToSet);
45+
fieldsToSet = mriJsonDefaults(fieldsToSet);
4346

4447
fieldsToSet = transferInfoToBids(fieldsToSet, cfg);
4548

@@ -160,6 +163,8 @@
160163
% removing all non alphanumeric ([a-zA-Z0-9]) characters.
161164
fieldsToSet.bids.meg.TaskName = [];
162165

166+
fieldsToSet.bids.meg.Instructions = [];
167+
163168
% REQUIRED Sampling frequency
164169
fieldsToSet.bids.meg.SamplingFrequency = [];
165170

@@ -190,3 +195,62 @@
190195
fieldsToSet.bids.meg = orderfields(fieldsToSet.bids.meg);
191196

192197
end
198+
199+
function fieldsToSet = eegJsonDefaults(fieldsToSet)
200+
% for json for EEG data
201+
202+
fieldsToSet.bids.eeg.TaskName = [];
203+
204+
fieldsToSet.bids.eeg.Instructions = [];
205+
206+
fieldsToSet.bids.eeg.EEGReference = [];
207+
208+
fieldsToSet.bids.eeg.SamplingFrequency = [];
209+
210+
fieldsToSet.bids.eeg.PowerLineFrequency = [];
211+
212+
fieldsToSet.bids.eeg.DewarPosition = [];
213+
214+
fieldsToSet.bids.eeg.SoftwareFilters = [];
215+
216+
fieldsToSet.bids.eeg.DigitizedLandmarks = [];
217+
218+
fieldsToSet.bids.eeg.DigitizedHeadPoints = [];
219+
220+
fieldsToSet.bids.eeg = orderfields(fieldsToSet.bids.eeg);
221+
222+
end
223+
224+
function fieldsToSet = ieegJsonDefaults(fieldsToSet)
225+
% for json for iEEG data
226+
227+
fieldsToSet.bids.ieeg.TaskName = [];
228+
229+
fieldsToSet.bids.ieeg.Instructions = [];
230+
231+
fieldsToSet.bids.ieeg.SamplingFrequency = [];
232+
233+
fieldsToSet.bids.ieeg.PowerLineFrequency = [];
234+
235+
fieldsToSet.bids.ieeg.DewarPosition = [];
236+
237+
fieldsToSet.bids.ieeg.SoftwareFilters = [];
238+
239+
fieldsToSet.bids.ieeg.DigitizedLandmarks = [];
240+
241+
fieldsToSet.bids.ieeg.DigitizedHeadPoints = [];
242+
243+
fieldsToSet.bids.ieeg = orderfields(fieldsToSet.bids.ieeg);
244+
245+
end
246+
247+
function fieldsToSet = behJsonDefaults(fieldsToSet)
248+
% for json for BEH data
249+
250+
fieldsToSet.bids.beh.TaskName = [];
251+
252+
fieldsToSet.bids.beh.Instructions = [];
253+
254+
fieldsToSet.bids.ieeg = orderfields(fieldsToSet.bids.beh);
255+
256+
end

src/subfun/transferInfoToBids.m

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,20 @@
88
[taskName, taskNameValid] = createValidName(cfg.task.name);
99
fieldsToSet.fileName.task = taskNameValid;
1010
fieldsToSet.bids.meg.TaskName = taskName;
11+
fieldsToSet.bids.eeg.TaskName = taskName;
12+
fieldsToSet.bids.ieeg.TaskName = taskName;
13+
fieldsToSet.bids.beh.TaskName = taskName;
1114
fieldsToSet.bids.mri.TaskName = taskName;
1215
end
1316

17+
if isfield(cfg, 'task') && isfield(cfg.task, 'instructions')
18+
fieldsToSet.bids.meg.Instructions = cfg.task.instructions;
19+
fieldsToSet.bids.eeg.Instructions = cfg.task.instructions;
20+
fieldsToSet.bids.ieeg.Instructions = cfg.task.instructions;
21+
fieldsToSet.bids.beh.Instructions = cfg.task.instructions;
22+
fieldsToSet.bids.mri.Instructions = cfg.task.instructions;
23+
end
24+
1425
if isfield(cfg, 'mri') && isfield(cfg.mri, 'repetitionTime')
1526
fieldsToSet.bids.mri.RepetitionTime = cfg.mri.repetitionTime;
1627
end

tests/test_checkCFG.m

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ function test_checkCfgDefault()
1717
expectedStructure.dir.output = cfg.dir.output;
1818
expectedStructure.testingDevice = 'pc';
1919

20+
expectedStructure = orderfields(expectedStructure);
21+
2022
%% test
23+
assertEqual(expectedStructure.bids.ieeg, cfg.bids.ieeg);
2124
assertEqual(expectedStructure, cfg);
2225

2326
end
@@ -62,8 +65,11 @@ function test_checkCfgBasic()
6265
expectedStructure.fileName.task = 'testTask';
6366

6467
expectedStructure.bids.mri.RepetitionTime = 1.56;
65-
expectedStructure.bids.mri.TaskName = 'test Task';
6668

69+
expectedStructure.bids.mri.TaskName = 'test Task';
70+
expectedStructure.bids.beh.TaskName = 'test Task';
71+
expectedStructure.bids.ieeg.TaskName = 'test Task';
72+
expectedStructure.bids.eeg.TaskName = 'test Task';
6773
expectedStructure.bids.meg.TaskName = 'test Task';
6874

6975
expectedStructure.bids.datasetDescription.Name = 'dummy';
@@ -99,13 +105,36 @@ function test_checkCfgBasic()
99105
expectedCfgStructure.suffix.repetitionTime = [];
100106
expectedCfgStructure.suffix.recording = [];
101107

108+
expectedCfgStructure.bids.beh.TaskName = '';
109+
expectedCfgStructure.bids.beh.Instructions = '';
110+
102111
expectedCfgStructure.bids.mri.RepetitionTime = [];
103112
expectedCfgStructure.bids.mri.SliceTiming = '';
104113
expectedCfgStructure.bids.mri.TaskName = '';
105114
expectedCfgStructure.bids.mri.Instructions = '';
106115
expectedCfgStructure.bids.mri.TaskDescription = '';
107116

117+
expectedCfgStructure.bids.eeg.TaskName = '';
118+
expectedCfgStructure.bids.eeg.Instructions = '';
119+
expectedCfgStructure.bids.eeg.EEGReference = [];
120+
expectedCfgStructure.bids.eeg.SamplingFrequency = [];
121+
expectedCfgStructure.bids.eeg.PowerLineFrequency = [];
122+
expectedCfgStructure.bids.eeg.DewarPosition = [];
123+
expectedCfgStructure.bids.eeg.SoftwareFilters = [];
124+
expectedCfgStructure.bids.eeg.DigitizedLandmarks = [];
125+
expectedCfgStructure.bids.eeg.DigitizedHeadPoints = [];
126+
127+
expectedCfgStructure.bids.ieeg.TaskName = '';
128+
expectedCfgStructure.bids.ieeg.Instructions = '';
129+
expectedCfgStructure.bids.ieeg.SamplingFrequency = [];
130+
expectedCfgStructure.bids.ieeg.PowerLineFrequency = [];
131+
expectedCfgStructure.bids.ieeg.DewarPosition = [];
132+
expectedCfgStructure.bids.ieeg.SoftwareFilters = [];
133+
expectedCfgStructure.bids.ieeg.DigitizedLandmarks = [];
134+
expectedCfgStructure.bids.ieeg.DigitizedHeadPoints = [];
135+
108136
expectedCfgStructure.bids.meg.TaskName = '';
137+
expectedCfgStructure.bids.meg.Instructions = '';
109138
expectedCfgStructure.bids.meg.SamplingFrequency = [];
110139
expectedCfgStructure.bids.meg.PowerLineFrequency = [];
111140
expectedCfgStructure.bids.meg.DewarPosition = [];
@@ -123,6 +152,8 @@ function test_checkCfgBasic()
123152
expectedCfgStructure.bids.datasetDescription.ReferencesAndLinks = {''};
124153
expectedCfgStructure.bids.datasetDescription.DatasetDOI = '';
125154

155+
expectedCfgStructure.bids = orderfields(expectedCfgStructure.bids);
156+
126157
expectedCfgStructure = orderfields(expectedCfgStructure);
127158

128159
end

tests/test_transferInfoToBids.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,22 @@ function test_transferInfoToBidsTaskname()
2323
% make sure the file name gets trasnferred where it should
2424

2525
cfg.task.name = 'foo bar';
26+
cfg.task.instructions = 'do this';
2627

2728
fieldsToSet = struct();
2829
fieldsToSet = transferInfoToBids(fieldsToSet, cfg);
2930

3031
expectedStruct.fileName.task = 'fooBar';
3132
expectedStruct.bids.meg.TaskName = 'foo Bar';
33+
expectedStruct.bids.eeg.TaskName = 'foo Bar';
34+
expectedStruct.bids.ieeg.TaskName = 'foo Bar';
35+
expectedStruct.bids.beh.TaskName = 'foo Bar';
3236
expectedStruct.bids.mri.TaskName = 'foo Bar';
37+
expectedStruct.bids.meg.Instructions = 'do this';
38+
expectedStruct.bids.eeg.Instructions = 'do this';
39+
expectedStruct.bids.ieeg.Instructions = 'do this';
40+
expectedStruct.bids.beh.Instructions = 'do this';
41+
expectedStruct.bids.mri.Instructions = 'do this';
3342

3443
assert(isequal(expectedStruct, fieldsToSet));
3544

0 commit comments

Comments
 (0)