1
1
function test_makeRawDataset()
2
-
2
+
3
3
outputDir = fullfile(fileparts(mfilename(' fullpath' )), ' output' );
4
-
4
+
5
5
if isdir(outputDir )
6
6
rmdir(outputDir , ' s' );
7
7
end
8
-
8
+
9
9
%% set up
10
10
cfg.dir.output = outputDir ;
11
-
11
+
12
12
cfg.bids.datasetDescription.Name = ' dummy' ;
13
13
cfg.bids.datasetDescription.BIDSVersion = ' 1.0.0' ;
14
14
cfg.bids.datasetDescription.Authors = {' Jane Doe' , ' John Doe' };
15
-
15
+
16
16
cfg.testingDevice = ' mri' ;
17
-
17
+
18
18
%% MRI task data
19
19
cfg.mri.repetitionTime = 1.56 ;
20
-
20
+
21
21
cfg.subject.subjectNb = 1 ;
22
22
cfg.subject.runNb = 1 ;
23
-
23
+
24
24
cfg.task.name = ' testtask' ;
25
-
25
+ cfg.task.instructions = ' do this' ;
26
+
26
27
logFile.extraColumns.Speed.length = 1 ;
27
28
logFile.extraColumns.LHL24.length = 3 ;
28
29
logFile.extraColumns.is_Fixation.length = 1 ;
29
-
30
+
30
31
cfg = createFilename(cfg );
31
-
32
+
32
33
extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
33
- createBoldJson (cfg , extraInfo );
34
-
34
+ createJson (cfg , extraInfo );
35
+
35
36
createDatasetDescription(cfg );
36
-
37
+
37
38
% create the events file and header
38
39
logFile = saveEventsFile(' open' , cfg , logFile );
39
-
40
+
40
41
% ROW 2: normal events : all info is there
41
42
logFile(1 , 1 ).onset = 2 ;
42
43
logFile(end , 1 ).trial_type = ' MotionUp' ;
43
44
logFile(end , 1 ).duration = 3 ;
44
45
logFile(end , 1 ).Speed = 2 ;
45
46
logFile(end , 1 ).is_Fixation = true ;
46
47
logFile(end , 1 ).LHL24 = 1 : 3 ;
47
-
48
+
48
49
% ROW 3: missing info (speed, LHL24)
49
50
logFile(1 , 1 ).onset = 3 ;
50
51
logFile(end , 1 ).trial_type = ' static' ;
51
52
logFile(end , 1 ).duration = 4 ;
52
53
logFile(end , 1 ).is_Fixation = false ;
53
-
54
+
54
55
% ROW 4: missing info (duration is missing and speed is empty)
55
56
logFile(2 , 1 ).onset = 4 ;
56
57
logFile(end , 1 ).trial_type = ' BLUES' ;
57
58
logFile(end , 1 ).Speed = [];
58
59
logFile(end , 1 ).is_Fixation = true ;
59
60
logFile(end , 1 ).LHL24 = rand(1 , 3 );
60
-
61
+
61
62
% ROW 5: missing info (array is not the right size)
62
63
logFile(5 , 1 ).onset = 5 ;
63
64
logFile(end , 1 ).trial_type = ' jazz' ;
64
65
logFile(end , 1 ).duration = 3 ;
65
66
logFile(end , 1 ).LHL24 = rand(1 , 2 );
66
-
67
+
67
68
saveEventsFile(' save' , cfg , logFile );
68
-
69
+
69
70
% close the file
70
71
saveEventsFile(' close' , cfg , logFile );
71
-
72
+
72
73
% add dummy stim data
73
74
stimLogFile = saveEventsFile(' open_stim' , cfg , logFile );
74
75
for i = 1 : 100
@@ -82,54 +83,171 @@ function test_makeRawDataset()
82
83
saveEventsFile(' save' , cfg , stimLogFile );
83
84
saveEventsFile(' close' , cfg , stimLogFile );
84
85
85
- % add dummy functional data
86
- funcDir = fullfile(cfg .dir .output , ' source' , ' sub-001' , ' ses-001' , ' func' );
87
- boldFilename = ' sub-001_ses-001_task-testtask_run-001_bold.nii.gz' ;
88
-
89
- copyfile( ...
90
- fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
91
- fullfile(funcDir , boldFilename ));
92
-
93
86
%% MRI bold rest data and fancy suffixes
94
87
clear cfg ;
95
-
88
+
96
89
cfg.dir.output = outputDir ;
97
-
90
+
98
91
cfg.testingDevice = ' mri' ;
99
-
100
- cfg.subject.subjectNb = 2 ;
101
- cfg.subject.sessionNb = 3 ;
102
- cfg.subject.runNb = 4 ;
103
-
92
+
93
+ cfg.subject.subjectNb = 1 ;
94
+ cfg.subject.runNb = 1 ;
95
+
104
96
% deal with MRI suffixes
105
- cfg.mri.reconstruction = ' fast recon' ;
106
- cfg.mri.contrastEnhancement = ' test' ;
107
- cfg.mri.phaseEncodingDirection = ' y pos' ;
108
- cfg.mri.echo = ' 1' ;
109
- cfg.mri.acquisition = ' new tYpe' ;
97
+ cfg.suffix.reconstruction = ' fast recon' ;
98
+ cfg.suffix.contrastEnhancement = ' test' ;
99
+ cfg.suffix.phaseEncodingDirection = ' y pos' ;
100
+ cfg.suffix.echo = ' 1' ;
101
+ cfg.suffix.acquisition = ' new tYpe' ;
102
+
110
103
cfg.mri.repetitionTime = 1.56 ;
111
-
104
+
112
105
cfg.task.name = ' rest' ;
113
-
106
+
114
107
cfg = createFilename(cfg );
108
+
109
+ extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
110
+ createJson(cfg , extraInfo );
111
+
112
+
113
+ %% EEG data and fancy suffixes
114
+ clear cfg ;
115
+
116
+ cfg.dir.output = outputDir ;
117
+
118
+ cfg.testingDevice = ' eeg' ;
119
+
120
+ cfg.subject.subjectNb = 1 ;
121
+ cfg.subject.runNb = 1 ;
122
+
123
+ cfg.task.name = ' target practice' ;
124
+ cfg.task.instructions = ' do this' ;
125
+
126
+ cfg.bids.eeg.EEGReference = ' Cz' ;
127
+ cfg.bids.eeg.SamplingFrequency = 2400 ;
128
+ cfg.bids.eeg.PowerLineFrequency = 50 ;
129
+ cfg.bids.eeg.SoftwareFilters = ' n/a' ;
115
130
116
- createBoldJson(cfg );
117
-
118
- %% add dummy functional data
119
- funcDir = fullfile(cfg .dir .output , ' source' , ' sub-002' , ' ses-003' , ' func' );
120
- boldFilename = [' sub-002_ses-003_task-rest' , ...
131
+ cfg = createFilename(cfg );
132
+
133
+ extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
134
+ createJson(cfg , extraInfo );
135
+
136
+ %% iEEG data and fancy suffixes
137
+ clear cfg ;
138
+
139
+ cfg.dir.output = outputDir ;
140
+
141
+ cfg.testingDevice = ' ieeg' ;
142
+
143
+ cfg.subject.subjectNb = 1 ;
144
+ cfg.subject.runNb = 1 ;
145
+
146
+ cfg.task.name = ' implanted target practice' ;
147
+ cfg.task.instructions = ' do this' ;
148
+
149
+ cfg.bids.ieeg.iEEGReference = ' Cz' ;
150
+ cfg.bids.ieeg.SamplingFrequency = 2400 ;
151
+ cfg.bids.ieeg.PowerLineFrequency = 50 ;
152
+ cfg.bids.ieeg.SoftwareFilters = ' n/a' ;
153
+
154
+ cfg = createFilename(cfg );
155
+
156
+ extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
157
+ createJson(cfg , extraInfo );
158
+
159
+ %% MEG data and fancy suffixes
160
+ clear cfg ;
161
+
162
+ cfg.dir.output = outputDir ;
163
+
164
+ cfg.testingDevice = ' meg' ;
165
+
166
+ cfg.subject.subjectNb = 1 ;
167
+ cfg.subject.runNb = 1 ;
168
+
169
+ cfg.task.name = ' magnetic target practice' ;
170
+ cfg.task.instructions = ' do this' ;
171
+
172
+ cfg.bids.meg.SamplingFrequency = 2400 ;
173
+ cfg.bids.meg.PowerLineFrequency = 60 ;
174
+ cfg.bids.meg.DewarPosition = ' upright' ;
175
+ cfg.bids.meg.SoftwareFilters = ' n/a' ;
176
+ cfg.bids.meg.DigitizedLandmarks = false ;
177
+ cfg.bids.meg.DigitizedHeadPoints = false ;
178
+
179
+ cfg = createFilename(cfg );
180
+
181
+ extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
182
+ createJson(cfg , extraInfo );
183
+
184
+ %% beh data and fancy suffixes
185
+ clear cfg ;
186
+
187
+ cfg.dir.output = outputDir ;
188
+
189
+ cfg.testingDevice = ' pc' ;
190
+
191
+ cfg.subject.subjectNb = 1 ;
192
+ cfg.subject.runNb = 1 ;
193
+
194
+ cfg.task.name = ' easy target practice' ;
195
+ cfg.task.instructions = ' do this' ;
196
+
197
+ cfg = createFilename(cfg );
198
+
199
+ extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
200
+ createJson(cfg , extraInfo );
201
+
202
+ %% add dummy data
203
+ subjectDir = fullfile(cfg .dir .output , ' source' , ' sub-001' , ' ses-001' );
204
+ funcDir = fullfile(subjectDir , ' func' );
205
+
206
+ boldFilename = ' sub-001_ses-001_task-testtask_run-001_bold.nii.gz' ;
207
+
208
+ copyfile( ...
209
+ fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
210
+ fullfile(funcDir , boldFilename ));
211
+
212
+ boldFilename = [' sub-001_ses-001_task-rest' , ...
121
213
' _acq-newTYpe_ce-test_dir-yPos_rec-fastRecon' , ...
122
- ' _run-004_echo -1_bold.nii.gz' ];
123
-
214
+ ' _run-001_echo -1_bold.nii.gz' ];
215
+
124
216
copyfile( ...
125
217
fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
126
218
fullfile(funcDir , boldFilename ));
127
-
219
+
220
+ eegDir = fullfile(subjectDir , ' eeg' );
221
+ megDir = fullfile(subjectDir , ' meg' );
222
+ ieegDir = fullfile(subjectDir , ' ieeg' );
223
+ behDir = fullfile(subjectDir , ' beh' );
224
+
225
+ eegFilename = ' sub-001_ses-001_task-targetPractice_run-001_eeg.edf' ;
226
+ megFilename = ' sub-001_ses-001_task-magneticTargetPractice_run-001_meg.fif' ;
227
+ ieegFilename = ' sub-001_ses-001_task-implantedTargetPractice_run-001_ieeg.edf' ;
228
+ behFilename = ' sub-001_ses-001_task-easyTargetPractice_run-001_beh.tsv' ;
229
+
230
+ copyfile( ...
231
+ fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
232
+ fullfile(eegDir , eegFilename ));
233
+
234
+ copyfile( ...
235
+ fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
236
+ fullfile(megDir , megFilename ));
237
+
238
+ copyfile( ...
239
+ fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
240
+ fullfile(ieegDir , ieegFilename ));
241
+
242
+ copyfile( ...
243
+ fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
244
+ fullfile(behDir , behFilename ));
245
+
128
246
%% actually do the conversion of the source data thus created
129
247
clear ;
130
-
248
+
131
249
outputDir = fullfile(fileparts(mfilename(' fullpath' )), ' output' );
132
250
cfg.dir.output = outputDir ;
133
251
convertSourceToRaw(cfg );
134
-
252
+
135
253
end
0 commit comments