5
5
6
6
A set of function for matlab and octave to create [ BIDS-compatible] ( https://bids-specification.readthedocs.io/en/stable/ ) folder structure and filenames for the output of behavioral, EEG, fMRI, eyetracking studies.
7
7
8
- Here are the naming templates used.
9
-
10
- - BOLD
11
-
12
- ` sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_dir-<label>][_rec-<label>][_run-<index>][_echo-<index>]_<contrast_label>.nii[.gz] `
13
-
14
- - iEEG
15
-
16
- ` sub-<label>[_ses-<label>]_task-<task_label>[_run-<index>]_ieeg.json `
17
-
18
- - EEG
19
-
20
- ` sub-<label>[_ses-<label>]_task-<label>[_run-<index>]_eeg.<manufacturer_specific_extension> `
21
-
22
- - Eyetracker
8
+ ## Usage
23
9
24
- ` sub-<participant_label>[_ses-<label>][_acq-<label>]_task-<task_label>_eyetrack.<manufacturer_specific_extension> `
10
+ ``` matlab
25
11
26
- ## Contributing
12
+ % define the folder where the data will be saved
13
+ expParameters.outputDir = fullfile(pwd, '..', 'output');
27
14
28
- Feel free to open issues to report a bug and ask for improvements.
15
+ % define the name of the task
16
+ expParameters.task = 'testtask';
29
17
30
- ### Guidestyle
18
+ % can use the userInputs function to collect subject info
19
+ % expParameters = userInputs;
31
20
32
- - We use camelCase.
33
- - We keep the McCabe complexity as reported by the [ check_my_code function] ( https://github.com/Remi-Gau/matlab_checkcode ) below 15.
21
+ % or declare it directly
22
+ expParameters.subjectGrp = '';
23
+ expParameters.subjectNb = 1;
24
+ expParameters.sessionNb = 1;
25
+ expParameters.runNb = 1;
34
26
35
- ## How to install
27
+ % Use the verbose switch to know where your data is being saved
28
+ expParameters.verbose = true;
36
29
37
- ### Use the matlab package manager
30
+ % In case you are using en eyetracker
31
+ cfg.eyeTracker = false;
38
32
39
- This repository can be added as a dependencies by listing it in a [ mpm-requirements.txt file] ( .mpm-requirements.txt )
40
- as follows:
33
+ % if the device is set to 'PC' then the data will be saved
34
+ % in the `beh` folder
35
+ cfg.device = 'PC';
41
36
42
- ```
43
- CPP_BIDS -u https://github.com/cpp-lln-lab/CPP_BIDS.git
44
- ```
37
+ % if the device is set to 'scanner' then the data will be saved
38
+ % in the `func` folder
39
+ % cfg.device = 'scanner';
45
40
46
- You can then use the [ matlab package manager] ( https://github.com/mobeets/mpm ) , to simply download the appropriate version of those dependencies and add them to your path by running a ` getDependencies ` function like the one below where you just need to replace ` YOUR_EXPERIMENT_NAME ` by the name of your experiment.
41
+ % check that cfg and exparameters have all the necessary information
42
+ % and fill in any missing field
43
+ expParameters = checkCFG(cfg, expParameters);
47
44
45
+ % create the filenames
46
+ expParameters = createFilename(cfg, expParameters);
48
47
49
- ``` matlab
50
- function getDependencies(action)
51
- % Will install on your computer the matlab dependencies specified in the mpm-requirements.txt
52
- % and add them to the matlab path. The path is never saved so you need to run getDependencies() when
53
- % you start matlab.
54
- %
55
- % getDependencies('update') will force the update and overwrite previous version of the dependencies.
56
- %
57
- % getDependencies() If you only already have the appropriate version but just want to add them to the matlab path.
48
+ % initialize the events files with the typical BIDS
49
+ % columns (onsets, duration, trial_type)
50
+ % and add some more in this case (Speed and is_Fixation)
51
+ logFile = saveEventsFile('open', expParameters, [], 'Speed', 'is_Fixation');
58
52
59
- experimentName = YOUR_EXPERIMENT_NAME;
53
+ % create the information about 2 events that we want to save
54
+ logFile(1,1).onset = 2;
55
+ logFile(1,1).trial_type = 'motion_up';
56
+ logFile(1,1).duration = 1;
57
+ logFile(1,1).speed = 2;
58
+ logFile(1,1).is_fixation = true;
60
59
61
- if nargin<1
62
- action = '';
63
- end
60
+ logFile(2,1).onset = 3;
61
+ logFile(2,1).trial_type = 'static';
62
+ logFile(2,1).duration = 4;
63
+ logFile(2,1).is_fixation = 3;
64
64
65
- switch action
66
- case 'update'
67
- % install dependencies
68
- mpm install -i mpm-requirements.txt -f -c YOUR_EXPERIMENT_NAME
69
- end
65
+ % add those 2 events to the events.tsv file
66
+ saveEventsFile('save', expParameters, logFile, 'speed', 'is_fixation');
70
67
71
- % adds them to the path
72
- mpm_folder = fileparts(which('mpm'));
73
- addpath(genpath(fullfile(mpm_folder, 'mpm-packages', 'mpm-collections', experimentName)));
68
+ % close the file
69
+ saveEventsFile('close', expParameters, logFile);
74
70
75
- end
76
71
```
77
72
78
73
## Functions descriptions
81
76
82
77
Get subject, run and session number and make sure they are positive integer values.
83
78
84
-
85
79
### createFilename
86
80
87
- Create the BIDS compliant directories and filenames (but not the files) for the behavioral output for this subject /
88
- session / run.
81
+ Create the BIDS compliant directories and filenames (but not the files) for the behavioral
82
+ output for this subject / session / run.
89
83
90
84
Will also create the right filename for the eye-tracking data file.
91
85
@@ -98,89 +92,79 @@ For the moment the date of acquisition is appended to the filename
98
92
99
93
Function to save output files for events that will be BIDS compliant.
100
94
101
-
102
95
### checkCFG
103
96
Check that we have all the fields that we need in the experiment parameters.
104
97
98
+ ## How to install
105
99
106
- ## Usage
100
+ ### Use the matlab package manager
107
101
108
- ``` matlab
102
+ This repository can be added as a dependencies by listing it in a
103
+ [ mpm-requirements.txt file] ( .mpm-requirements.txt ) as follows:
109
104
110
- % define the folder where the data will be saved
111
- expParameters.outputDir = fullfile(pwd, '..', 'output');
105
+ ```
106
+ CPP_BIDS -u https://github.com/cpp-lln-lab/CPP_BIDS.git
107
+ ```
112
108
113
- % define the name of the task
114
- expParameters.task = 'testtask';
109
+ You can then use the [ matlab package manager] ( https://github.com/mobeets/mpm ) , to simply download
110
+ the appropriate version of those dependencies and add them to your path by running a
111
+ ` getDependencies ` function like the one below where you just need to replace
112
+ ` YOUR_EXPERIMENT_NAME ` by the name of your experiment.
115
113
116
- % can use the userInputs function to collect subject info
117
- % expParameters = userInputs;
114
+ ``` matlab
115
+ function getDependencies(action)
116
+ % Will install on your computer the matlab dependencies specified in the mpm-requirements.txt
117
+ % and add them to the matlab path. The path is never saved so you need to run getDependencies() when
118
+ % you start matlab.
119
+ %
120
+ % getDependencies('update') will force the update and overwrite previous version of the dependencies.
121
+ %
122
+ % getDependencies() If you only already have the appropriate version but just want to add them to the matlab path.
118
123
119
- % or declare it directly
120
- expParameters.subjectGrp = '';
121
- expParameters.subjectNb = 1;
122
- expParameters.sessionNb = 1;
123
- expParameters.runNb = 1;
124
+ experimentName = YOUR_EXPERIMENT_NAME;
124
125
125
- % Use the verbose switch to know where your data is being saved
126
- expParameters.verbose = true;
126
+ if nargin<1
127
+ action = '';
128
+ end
127
129
128
- % In case you are using en eyetracker
129
- cfg.eyeTracker = false;
130
+ switch action
131
+ case 'update'
132
+ % install dependencies
133
+ mpm install -i mpm-requirements.txt -f -c YOUR_EXPERIMENT_NAME
134
+ end
130
135
131
- % if the device is set to 'PC' then the data will be saved in the `beh` folder
132
- cfg.device = 'PC';
136
+ % adds them to the path
137
+ mpm_folder = fileparts(which('mpm'));
138
+ addpath(genpath(fullfile(mpm_folder, 'mpm-packages', 'mpm-collections', experimentName)));
133
139
134
- % if the device is set to 'scanner' then the data will be saved in the `func` folder
135
- % cfg.device = 'scanner';
140
+ end
141
+ ```
136
142
137
- % check that cfg and exparameters have all the necessary information and fill in any missing field
138
- expParameters = checkCFG(cfg, expParameters);
143
+ ## Contributing
139
144
140
- % create the filenames
141
- expParameters = createFilename(cfg, expParameters);
145
+ Feel free to open issues to report a bug and ask for improvements.
142
146
143
- % initialize the events files with the typical BIDS columns (onsets, duration, trial_type)
144
- % and add some more in this case (Speed and is_Fixation)
145
- logFile = saveEventsFile('open', expParameters, [], 'Speed', 'is_Fixation');
147
+ ### Guidestyle
146
148
147
- % create the information about 2 events that we want to save
148
- logFile(1,1).onset = 2;
149
- logFile(1,1).trial_type = 'motion_up';
150
- logFile(1,1).duration = 1;
151
- logFile(1,1).speed = 2;
152
- logFile(1,1).is_fixation = true;
149
+ - We use camelCase.
150
+ - We keep the McCabe complexity as reported by the [ check_my_code function] ( https://github.com/Remi-Gau/matlab_checkcode ) below 15.
153
151
154
- logFile(2,1).onset = 3;
155
- logFile(2,1).trial_type = 'static';
156
- logFile(2,1).duration = 4;
157
- logFile(2,1).is_fixation = 3;
152
+ ### BIDS naming convention
158
153
159
- % add those 2 events to the events.tsv file
160
- saveEventsFile('save', expParameters, logFile, 'speed', 'is_fixation');
154
+ Here are the naming templates used.
161
155
162
- % close the file
163
- saveEventsFile('close', expParameters, logFile);
156
+ - BOLD
164
157
165
- ```
158
+ ` sub-<label>[_ses-<label>]_task-<label>[_acq-<label>][_ce-<label>][_dir-<label>][_rec-<label>][_run-<index>][_echo-<index>]_<contrast_label>.nii[.gz] `
159
+
160
+ - iEEG
166
161
167
- ## Contributors ✨
162
+ ` sub-<label>[_ses-<label>]_task-<task_label>[_run-<index>]_ieeg.json `
168
163
169
- Thanks goes to these wonderful people ( [ emoji key ] ( https://allcontributors.org/docs/en/emoji-key ) ):
164
+ - EEG
170
165
171
- <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
172
- <!-- prettier-ignore-start -->
173
- <!-- markdownlint-disable -->
174
- <table >
175
- <tr >
176
- <td align="center"><a href="https://github.com/CerenB"><img src="https://avatars1.githubusercontent.com/u/10451654?v=4" width="100px;" alt=""/><br /><sub><b>CerenB</b></sub></a><br /><a href="https://github.com/cpp-lln-lab/CPP_BIDS/commits?author=CerenB" title="Code">💻</a> <a href="#design-CerenB" title="Design">🎨</a> <a href="https://github.com/cpp-lln-lab/CPP_BIDS/commits?author=CerenB" title="Documentation">📖</a></td>
177
- <td align="center"><a href="https://github.com/marcobarilari"><img src="https://avatars3.githubusercontent.com/u/38101692?v=4" width="100px;" alt=""/><br /><sub><b>marcobarilari</b></sub></a><br /><a href="https://github.com/cpp-lln-lab/CPP_BIDS/commits?author=marcobarilari" title="Code">💻</a> <a href="#design-marcobarilari" title="Design">🎨</a> <a href="https://github.com/cpp-lln-lab/CPP_BIDS/commits?author=marcobarilari" title="Documentation">📖</a></td>
178
- <td align="center"><a href="https://remi-gau.github.io/"><img src="https://avatars3.githubusercontent.com/u/6961185?v=4" width="100px;" alt=""/><br /><sub><b>Remi Gau</b></sub></a><br /><a href="https://github.com/cpp-lln-lab/CPP_BIDS/commits?author=Remi-Gau" title="Code">💻</a> <a href="#design-Remi-Gau" title="Design">🎨</a> <a href="https://github.com/cpp-lln-lab/CPP_BIDS/commits?author=Remi-Gau" title="Documentation">📖</a></td>
179
- </tr >
180
- </table >
166
+ ` sub-<label>[_ses-<label>]_task-<label>[_run-<index>]_eeg.<manufacturer_specific_extension> `
181
167
182
- <!-- markdownlint-enable -->
183
- <!-- prettier-ignore-end -->
184
- <!-- ALL-CONTRIBUTORS-LIST:END -->
168
+ - Eyetracker
185
169
186
- This project follows the [ all-contributors ] ( https://github.com/all-contributors/all-contributors ) specification. Contributions of any kind welcome!
170
+ ` sub-<participant_label>[_ses-<label>][_acq-<label>]_task-<task_label>_eyetrack.<manufacturer_specific_extension> `
0 commit comments