v2.0.0
Loading...
Searching...
No Matches
bids_const.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef BIDS_CONST_H
36#define BIDS_CONST_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
42#include <fiff/fiff_constants.h>
43
44#include <QMap>
45#include <QString>
46#include <QStringList>
47
48//=============================================================================================================
49// DEFINE NAMESPACE BIDSLIB
50//=============================================================================================================
51
52namespace BIDSLIB
53{
54
55//=============================================================================================================
56// BIDS datatypes
57//=============================================================================================================
58
60const QString BIDS_DATATYPE_MEG = QStringLiteral("meg");
61const QString BIDS_DATATYPE_EEG = QStringLiteral("eeg");
62const QString BIDS_DATATYPE_IEEG = QStringLiteral("ieeg");
63const QString BIDS_DATATYPE_ANAT = QStringLiteral("anat");
64const QString BIDS_DATATYPE_FUNC = QStringLiteral("func");
65const QString BIDS_DATATYPE_BEH = QStringLiteral("beh");
66
72
79
80//=============================================================================================================
81// BIDS file extensions for iEEG raw data
82//=============================================================================================================
83
85inline QStringList ieegAllowedExtensions()
86{
87 return {QStringLiteral(".vhdr"), // BrainVision header
88 QStringLiteral(".edf"), // European Data Format
89 QStringLiteral(".set"), // EEGLAB
90 QStringLiteral(".mef"), // MEF3
91 QStringLiteral(".nwb")}; // NWB
92}
93
95inline QStringList eegAllowedExtensions()
96{
97 return {QStringLiteral(".vhdr"),
98 QStringLiteral(".edf"),
99 QStringLiteral(".bdf"),
100 QStringLiteral(".set"),
101 QStringLiteral(".fif")};
102}
103
104//=============================================================================================================
105// Channel type mapping: MNE FIFF kind → BIDS string
106//=============================================================================================================
107
112inline QMap<int, QString> fiffKindToBidsType()
113{
114 return {
115 {FIFFV_MEG_CH, QStringLiteral("MEGMAG")},
116 {FIFFV_EEG_CH, QStringLiteral("EEG")},
117 {FIFFV_STIM_CH, QStringLiteral("TRIG")},
118 {FIFFV_EOG_CH, QStringLiteral("EOG")},
119 {FIFFV_ECG_CH, QStringLiteral("ECG")},
120 {FIFFV_EMG_CH, QStringLiteral("EMG")},
121 {FIFFV_MISC_CH, QStringLiteral("MISC")},
122 {FIFFV_RESP_CH, QStringLiteral("RESP")},
123 {FIFFV_REF_MEG_CH, QStringLiteral("MEGREF")},
124 {FIFFV_ECOG_CH, QStringLiteral("ECOG")},
125 {FIFFV_SEEG_CH, QStringLiteral("SEEG")},
126 {FIFFV_DBS_CH, QStringLiteral("DBS")},
127 };
128}
129
134inline QMap<QString, int> bidsTypeToFiffKind()
135{
136 return {
137 {QStringLiteral("MEGMAG"), FIFFV_MEG_CH},
138 {QStringLiteral("MEGGRAD"), FIFFV_MEG_CH},
139 {QStringLiteral("MEGREF"), FIFFV_REF_MEG_CH},
140 {QStringLiteral("EEG"), FIFFV_EEG_CH},
141 {QStringLiteral("ECOG"), FIFFV_ECOG_CH},
142 {QStringLiteral("SEEG"), FIFFV_SEEG_CH},
143 {QStringLiteral("DBS"), FIFFV_DBS_CH},
144 {QStringLiteral("EOG"), FIFFV_EOG_CH},
145 {QStringLiteral("ECG"), FIFFV_ECG_CH},
146 {QStringLiteral("EMG"), FIFFV_EMG_CH},
147 {QStringLiteral("TRIG"), FIFFV_STIM_CH},
148 {QStringLiteral("MISC"), FIFFV_MISC_CH},
149 {QStringLiteral("RESP"), FIFFV_RESP_CH},
150 };
151}
152
153//=============================================================================================================
154// Coordinate system mappings: BIDS string ↔ FIFF coordinate frame
155//=============================================================================================================
156
161inline QMap<QString, int> bidsCoordToFiffFrame()
162{
163 return {
164 {QStringLiteral("CTF"), FIFFV_COORD_HEAD},
165 {QStringLiteral("ElektaNeuromag"), FIFFV_COORD_HEAD},
166 {QStringLiteral("CapTrak"), FIFFV_COORD_HEAD},
167 {QStringLiteral("ACPC"), FIFFV_COORD_MRI},
168 {QStringLiteral("fsaverage"), FIFFV_MNE_COORD_MNI_TAL},
169 {QStringLiteral("MNI305"), FIFFV_MNE_COORD_MNI_TAL},
170 {QStringLiteral("fsaverageSymm"), FIFFV_MNE_COORD_MNI_TAL},
171 {QStringLiteral("Other"), FIFFV_COORD_UNKNOWN},
172 };
173}
174
178inline QMap<int, QString> fiffFrameToBidsCoord()
179{
180 return {
181 {FIFFV_COORD_HEAD, QStringLiteral("CapTrak")},
182 {FIFFV_COORD_MRI, QStringLiteral("ACPC")},
183 {FIFFV_MNE_COORD_MNI_TAL, QStringLiteral("MNI305")},
184 {FIFFV_COORD_UNKNOWN, QStringLiteral("Other")},
185 };
186}
187
188//=============================================================================================================
189// Allowed coordinate systems for iEEG
190//=============================================================================================================
191
193inline QStringList ieegAllowedCoordSystems()
194{
195 return {QStringLiteral("ACPC"),
196 QStringLiteral("Talairach"),
197 QStringLiteral("Other"),
198 QStringLiteral("fsaverage"),
199 QStringLiteral("fsaverageSymm"),
200 QStringLiteral("MNI305"),
201 QStringLiteral("MNI152Lin"),
202 QStringLiteral("MNI152NLin2009aSym"),
203 QStringLiteral("MNI152NLin2009bSym"),
204 QStringLiteral("MNI152NLin2009cSym"),
205 QStringLiteral("MNI152NLin2009aAsym"),
206 QStringLiteral("MNI152NLin2009bAsym"),
207 QStringLiteral("MNI152NLin2009cAsym"),
208 QStringLiteral("individual")};
209}
210
211//=============================================================================================================
212// BIDS entity ordering (for filename construction)
213//=============================================================================================================
214
216inline QStringList bidsEntityOrder()
217{
218 return {QStringLiteral("sub"),
219 QStringLiteral("ses"),
220 QStringLiteral("task"),
221 QStringLiteral("acq"),
222 QStringLiteral("run"),
223 QStringLiteral("proc"),
224 QStringLiteral("space"),
225 QStringLiteral("rec"),
226 QStringLiteral("split"),
227 QStringLiteral("desc"),
228 QStringLiteral("tracking_system")};
229}
230
231} // namespace BIDSLIB
232
233#endif // BIDS_CONST_H
Fiff constants.
#define FIFFV_EOG_CH
#define FIFFV_MNE_COORD_MNI_TAL
#define FIFFV_SEEG_CH
#define FIFFV_EEG_CH
#define FIFFV_RESP_CH
#define FIFFV_REF_MEG_CH
#define FIFFV_MISC_CH
#define FIFFV_MEG_CH
#define FIFFV_ECOG_CH
#define FIFFV_COORD_HEAD
#define FIFFV_COORD_MRI
#define FIFFV_STIM_CH
#define FIFFV_COORD_UNKNOWN
#define FIFFV_EMG_CH
#define FIFFV_ECG_CH
#define FIFFV_DBS_CH
BIDS dataset reading, writing, path construction, and sidecar metadata handling for iEEG/EEG/MEG.
const QString BIDS_DATATYPE_IEEG
Definition bids_const.h:62
QStringList eegAllowedExtensions()
Definition bids_const.h:95
const QString BIDS_DATATYPE_EEG
Definition bids_const.h:61
const QString BIDS_DATATYPE_MEG
Definition bids_const.h:60
QStringList allowedElectrophysiologyDatatypes()
Definition bids_const.h:68
const QString BIDS_DATATYPE_BEH
Definition bids_const.h:65
QStringList ieegAllowedExtensions()
Definition bids_const.h:85
QMap< int, QString > fiffKindToBidsType()
Definition bids_const.h:112
QStringList allowedDatatypes()
Definition bids_const.h:74
QStringList ieegAllowedCoordSystems()
Definition bids_const.h:193
QMap< QString, int > bidsCoordToFiffFrame()
Definition bids_const.h:161
QStringList bidsEntityOrder()
Definition bids_const.h:216
const QString BIDS_DATATYPE_FUNC
Definition bids_const.h:64
const QString BIDS_DATATYPE_ANAT
Definition bids_const.h:63
QMap< QString, int > bidsTypeToFiffKind()
Definition bids_const.h:134
QMap< int, QString > fiffFrameToBidsCoord()
Definition bids_const.h:178