11function test_makeRawDataset()
2-
2+
33 outputDir = fullfile(fileparts(mfilename(' fullpath' )), ' output' );
4-
4+
55 if isdir(outputDir )
66 rmdir(outputDir , ' s' );
77 end
8-
8+
99 %% set up
1010 cfg.dir.output = outputDir ;
11-
11+
1212 cfg.bids.datasetDescription.Name = ' dummy' ;
1313 cfg.bids.datasetDescription.BIDSVersion = ' 1.0.0' ;
1414 cfg.bids.datasetDescription.Authors = {' Jane Doe' , ' John Doe' };
15-
15+
1616 cfg.testingDevice = ' mri' ;
17-
17+
1818 %% MRI task data
1919 cfg.mri.repetitionTime = 1.56 ;
20-
20+
2121 cfg.subject.subjectNb = 1 ;
2222 cfg.subject.runNb = 1 ;
23-
23+
2424 cfg.task.name = ' testtask' ;
25-
25+ cfg.task.instructions = ' do this' ;
26+
2627 logFile.extraColumns.Speed.length = 1 ;
2728 logFile.extraColumns.LHL24.length = 3 ;
2829 logFile.extraColumns.is_Fixation.length = 1 ;
29-
30+
3031 cfg = createFilename(cfg );
31-
32+
3233 extraInfo = struct(' extraInfo' , struct(' nestedExtraInfo' , ' something extra' ));
33- createBoldJson (cfg , extraInfo );
34-
34+ createJson (cfg , extraInfo );
35+
3536 createDatasetDescription(cfg );
36-
37+
3738 % create the events file and header
3839 logFile = saveEventsFile(' open' , cfg , logFile );
39-
40+
4041 % ROW 2: normal events : all info is there
4142 logFile(1 , 1 ).onset = 2 ;
4243 logFile(end , 1 ).trial_type = ' MotionUp' ;
4344 logFile(end , 1 ).duration = 3 ;
4445 logFile(end , 1 ).Speed = 2 ;
4546 logFile(end , 1 ).is_Fixation = true ;
4647 logFile(end , 1 ).LHL24 = 1 : 3 ;
47-
48+
4849 % ROW 3: missing info (speed, LHL24)
4950 logFile(1 , 1 ).onset = 3 ;
5051 logFile(end , 1 ).trial_type = ' static' ;
5152 logFile(end , 1 ).duration = 4 ;
5253 logFile(end , 1 ).is_Fixation = false ;
53-
54+
5455 % ROW 4: missing info (duration is missing and speed is empty)
5556 logFile(2 , 1 ).onset = 4 ;
5657 logFile(end , 1 ).trial_type = ' BLUES' ;
5758 logFile(end , 1 ).Speed = [];
5859 logFile(end , 1 ).is_Fixation = true ;
5960 logFile(end , 1 ).LHL24 = rand(1 , 3 );
60-
61+
6162 % ROW 5: missing info (array is not the right size)
6263 logFile(5 , 1 ).onset = 5 ;
6364 logFile(end , 1 ).trial_type = ' jazz' ;
6465 logFile(end , 1 ).duration = 3 ;
6566 logFile(end , 1 ).LHL24 = rand(1 , 2 );
66-
67+
6768 saveEventsFile(' save' , cfg , logFile );
68-
69+
6970 % close the file
7071 saveEventsFile(' close' , cfg , logFile );
71-
72+
7273 % add dummy stim data
7374 stimLogFile = saveEventsFile(' open_stim' , cfg , logFile );
7475 for i = 1 : 100
@@ -82,54 +83,171 @@ function test_makeRawDataset()
8283 saveEventsFile(' save' , cfg , stimLogFile );
8384 saveEventsFile(' close' , cfg , stimLogFile );
8485
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-
9386 %% MRI bold rest data and fancy suffixes
9487 clear cfg ;
95-
88+
9689 cfg.dir.output = outputDir ;
97-
90+
9891 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+
10496 % 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+
110103 cfg.mri.repetitionTime = 1.56 ;
111-
104+
112105 cfg.task.name = ' rest' ;
113-
106+
114107 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' ;
115130
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' , ...
121213 ' _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+
124216 copyfile( ...
125217 fullfile(' dummyData' , ' dummyData.nii.gz' ), ...
126218 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+
128246 %% actually do the conversion of the source data thus created
129247 clear ;
130-
248+
131249 outputDir = fullfile(fileparts(mfilename(' fullpath' )), ' output' );
132250 cfg.dir.output = outputDir ;
133251 convertSourceToRaw(cfg );
134-
252+
135253end
0 commit comments