1+ function expParameters = createFilename(expParameters, cfg)
2+ % create the BIDS compliant directories and filenames for the behavioral output for this subject /
3+ % session / run.
4+ % Will also create the right filename for the eyetracking data file.
5+ %
6+ % For the moment the date of acquisition is appreneded to the filename
7+ %
8+ % can work for behavioral experiment if cfg.device is set to 'PC'
9+ % can work for fMRI experiment if cfg.device is set to 'scanner'
10+ % can work for simple eyetracking data if cfg.eyeTracker is set to 1
11+ %
12+ % BOLD
13+ % sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_dir-<label>][_rec-<label>][_run-<index>][_echo-<index>]_<contrast_label>.nii[.gz]
14+ %
15+ % iEEG
16+ % sub-<label>[_ses-<label>]_task-<task_label>[_run-<index>]_ieeg.json
17+ %
18+ % EEG
19+ % sub-<label>[_ses-<label>]_task-<label>[_run-<index>]_eeg.<manufacturer_specific_extension>
20+ %
21+ % EYETRACKER
22+ % sub-<participant_label>[_ses-<label>][_acq-<label>]_task-<task_label>_eyetrack.<manufacturer_specific_extension>
23+
24+ zeroPadding = 3;
25+ pattern = ['%0' num2str(zeroPadding) '.0f'];
26+
27+ dateFormat = 'yyyymmdd_HHMM';
28+
29+ % Setting some defaults: no need to change things here
30+ expParameters = checkCFG(expParameters);
31+
32+ % extract input
33+ subjectGrp = expParameters.subjectGrp;
34+ subjectNb = expParameters.subjectNb;
35+ sessionNb = expParameters.sessionNb;
36+ runNb = expParameters.runNb;
37+
38+ expParameters.date = datestr(now, dateFormat);
39+
40+ % output dir
41+ expParameters.outputDir = fullfile (...
42+ expParameters.outputDir, ...
43+ 'source', ...
44+ ['sub-' subjectGrp, sprintf(pattern, subjectNb)], ...
45+ ['ses-', sprintf(pattern, sessionNb)]);
46+
47+ % create base filename
48+ expParameters.fileName.base = ...
49+ ['sub-', subjectGrp, sprintf(pattern, subjectNb), ...
50+ '_ses-', sprintf(pattern, sessionNb) , ...
51+ '_task-', expParameters.task];
52+
53+ runSuffix = ['_run-' sprintf(pattern, runNb)];
54+
55+
56+ switch lower(cfg.device)
57+ case 'pc'
58+ modality = 'beh';
59+ case 'scanner'
60+ modality = 'func';
61+ otherwise
62+ modality = 'beh';
63+ end
64+
65+ expParameters.modality = modality;
66+
67+
68+ % set values for the suffixes for the different fields in the BIDS name
69+ fields2Check = { ...
70+ 'ce', ...
71+ 'dir', ... % For BIDS file naming: phase encoding direction of acquisition for fMRI
72+ 'rec', ... % For BIDS file naming: reconstruction of fMRI images
73+ 'echo', ... % For BIDS file naming: echo fMRI images
74+ 'acq' % For BIDS file naming: acquisition of fMRI images
75+ };
76+
77+ for iField = 1:numel(fields2Check)
78+ if isempty (getfield(expParameters, fields2Check{iField}) ) %#ok<*GFLD>
79+ expParameters = setfield(expParameters, [fields2Check{iField} 'Suffix'], ...
80+ ''); %#ok<*SFLD>
81+ else
82+ expParameters = setfield(expParameters, [fields2Check{iField} 'Suffix'], ...
83+ ['_' fields2Check{iField} '-' getfield(expParameters, fields2Check{iField})]);
84+ end
85+ end
86+
87+
88+ %% create directories
89+ [~, ~, ~] = mkdir(expParameters.outputDir);
90+ [~, ~, ~] = mkdir(fullfile(expParameters.outputDir, modality));
91+
92+ if cfg.eyeTracker
93+ [~, ~, ~] = mkdir(fullfile(expParameters.outputDir, 'eyetracker'));
94+ end
95+
96+
97+ %% create filenames
98+
99+ switch modality
100+
101+ case 'beh'
102+
103+ expParameters.fileName.events = ...
104+ [expParameters.fileName.base, runSuffix, '_events_date-' expParameters.date '.tsv'];
105+
106+ case 'func'
107+
108+ expParameters.fileName.events = ...
109+ [expParameters.fileName.base, ...
110+ expParameters.acqSuffix, expParameters.ceSuffix, ...
111+ expParameters.dirSuffix, expParameters.recSuffix, ...
112+ runSuffix, expParameters.echoSuffix, ...
113+ '_events_date-' expParameters.date '.tsv'];
114+
115+ end
116+
117+ if cfg.eyeTracker
118+
119+ expParameters.fileName.eyetracker = ...
120+ [expParameters.fileName.base, expParameters.acqSuffix, ...
121+ runSuffix, '_eyetrack_date-' expParameters.date '.edf'];
122+
123+ end
124+
125+ if expParameters.verbose
126+ fprintf(1,'\nData will be saved in this directory:\n\n%s\')
127+ expParameters.outputDir
128+ expParameters.fileName
129+ end
130+
131+
132+ end
0 commit comments