MNE-CPP
0.1.9
A Framework for Electrophysiology
src
libraries
fiff
fiff_file.h
Go to the documentation of this file.
1
//=============================================================================================================
37
#ifndef FIFF_FILE_H
38
#define FIFF_FILE_H
39
40
//=============================================================================================================
41
// DEFINE NAMESPACE FIFFLIB
42
//=============================================================================================================
43
44
namespace
FIFFLIB
45
{
46
47
/*
48
* Tag numbers < 100 are only used during the acquisition
49
* they will never appear in a fif file.
50
*/
51
52
/*
53
* Conventions with FIFF_ C macros (mjk 14.01.2000).
54
*===========================================================================
55
* In order to get some order into the FIFF_ macros,
56
* following macro types are proposed:
57
*
58
* FIFF_ Fiff tag object identification label.
59
* FIFFB_ Fiff block tag value (block type indentification label).
60
* FIFFV_ Enumerated value of data having definite meaning in some context.
61
* Would be nice if the context is also present like:
62
* FIFFV_HPI_ACCEPT_PROGRAM and FIFFV_HPI_ACCEPT_USER.
63
* FIFFC_ Independent constant value like FIFFC_MATRIX_MAX_DIM used in
64
* code (having meaning in 'programming context' but not as data).
65
* FIFFT_ Fiff type descriptor.
66
* FIFFTS_ Fiff type decriptor (FIFFT_) structure definition (see below).
67
*
68
*
69
*
70
* Conventions on type codes: (mjk 14.01.2000)
71
*===========================================================================
72
* Fiff types are saved using 32 bit numeric indentifiers.
73
* The fiff type codes are structured so that they contain two main parts:
74
* the 'fundamental structure' and 'type details'. The fundamental structure
75
* is coded in the MSB of the 4 byte code. Depending on this code the
76
* interpretation of 'type details' may vary.
77
*
78
* Current Fundamental structures:
79
*----------------------------------------------------------------------
80
* Only the MSB is significant. See FIFFTS_FS_MASK
81
*
82
* FIFFFS_SCALAR 0x00000000 Scalar type / basic fixed size FIFF record.
83
* FIFFFS_RECORD 0x10000000 <reserved>
84
* FIFFFS_...... 0x20000000 <reserved>
85
* FIFFFS_...... 0x30000000 <reserved>
86
* FIFFFS_MATRIX 0x40000000 Multidimensional matrix.
87
*
88
* The lower four bits are reserved for future extensions.
89
*
90
* Scalar types (FS==0x00):
91
*----------------------------------------------------------------------
92
* These include the basic scalar types and 'standard' fixed size records
93
* used in fiff files.
94
*
95
* * It is required that the code is less than 0x0FFF (< 4096). !!!
96
* * Fourth byte is currently reserved for future extensions.
97
*
98
* Current types in this class are:
99
*
100
* FIFFT_VOID 0 Nothing
101
* FIFFT_BYTE 1 Unsigned? 8 bits
102
* FIFFT_SHORT 2 Signed 16 bit integer.
103
* FIFFT_INT 3 Signed 32 bit integer.
104
* FIFFT_FLOAT 4 Single precision IEEE float (32 bits)
105
* FIFFT_DOUBLE 5 Double precision IEEE float (64 bits)
106
* FIFFT_JULIAN 6 Julian day. (32 bits)
107
* FIFFT_USHORT 7 Unsigned short (16 bits)
108
* FIFFT_UINT 8 Unsigned int (32 bits)
109
* FIFFT_ULONG 9 Unsigned long (64 bits)
110
* FIFFT_STRING 10 Octet, ASCII coding.
111
* FIFFT_ASCII 10
112
* FIFFT_LONG 11 Long integer (64 bit)
113
* FIFFT_DAU_PACK13 13 13 bit packed format used in HP DAUs.
114
* FIFFT_DAU_PACK14 14 14 bit packed format used in HP DAUs
115
* FIFFT_DAU_PACK16 16 Signed 16 bit integer. (?)
116
* FIFFT_COMPLEX_FLOAT 20 Complex number encoded with floats
117
* FIFFT_COMPLEX_DOUBLE 21 Complex number encoded with doubles
118
* FIFFT_OLD_PACK 23 Neuromag proprietary 16 bit packing.
119
*
120
* Following are structure types defined in fiff_types.h
121
*
122
* FIFFT_CH_INFO_STRUCT 30 Basic info about a measurement chnnel.
123
* FIFFT_ID_STRUCT 31 Unique identifier.
124
* FIFFT_DIR_ENTRY_STRUCT 32 FIFF file directory entry.
125
* FIFFT_DIG_POINT_STRUCT 33 Digitization point.
126
* FIFFT_CH_POS_STRUCT 34 Channel position.
127
* FIFFT_COORD_TRANS_STRUCT 35 Coordinate transformation.
128
* FIFFT_DIG_STRING_STRUCT 36 Digitization string.
129
* FIFFT_STREAM_SEGMENT_STRUCT 37 Data stream segment.
130
* FIFFT_DATA_REF_STRUCT 38 Reference to external data.
131
*
132
* Simple vector of any scalar type can be formed by simply
133
* concatenating into file. The number of of elements is deduced
134
* from the size of the data block which should be a multiple of the
135
* object size.
136
*
137
* Futher more, for each scalar type fiff_types.h defines a corresponding
138
* C language type. Naming convention is fiff_xxx_t which correspons to
139
* type id FIFFT_xxx.
140
*
141
*
142
*
143
* Matrix types (FS=0x40)
144
*----------------------------------------------------------------------
145
*
146
* FIFF Matrix type is in principle an arbitrary dimensional rectangular
147
* collection of fixed size elements. However for practical reasons the
148
* maximum dimension is currenly restricted arbitrarily to 9
149
* (see FIFFC_MATRIX_MAX_DIM) but this restriction may be relaxed in the future.
150
*
151
* Matrix type codes use following structure:
152
*
153
* * Matrix type structure: 0xFFCCyyyy
154
* * Where
155
*
156
* 0xFF...... decribes the 'fundamental structure'.
157
* FF = 40 denotes a multidimensional matrix.
158
* 0x..XX.... describes to basic coding: dense, triangular, sparse etc.
159
* 0x....yyyy describes the element type.
160
*
161
* Current codings available are:
162
*
163
* FIFFTS_MC_DENSE 0x00000000 Dense column oriented matrix
164
* FIFFTS_MC_CCS 0x00100000 Column compressed sparse matrix
165
* FIFFTS_MC_RCS 0x00200000 Row compressed sparse matrix
166
*
167
*
168
* Dense matrix structure
169
* ----------------------
170
*
171
* A(1,1,...),A(2,1...) ... A(1,2,..) ... A(N,M,K...),K,M,N, ...,DIM
172
*
173
* where DIM is the dimensionality.
174
* N,M,K... are the dimensions.
175
* A(i,j,k...) are the elements.
176
*
177
* Note: the 2-dimensional meg_matrix format (routines in fiff_matrix.c)
178
* read and write the matrix in transposed form, i.e, the storing order
179
* in the FIFF-file is
180
* A(1,1),A(1,2) ... A(1,M) ... A(M,M),N,M,DIM
181
*
182
*
183
* Column compressed sparse matrix structure
184
*------------------------------------------
185
*
186
* A(x0,y0,z0...),A(x1,y0,z0),...
187
* ...,x0,x2...,x{NZ-1}, y0,y1,...,y{M-1}, z0,z1...,z{K-1},...,NZ,K,M,N,...,DIM
188
*
189
* where DIM is the dimensionality.
190
* N,M,K... are the dimensions.
191
* NZ is the number of non zero elements.
192
* A(i,j,k...) are the elements.
193
* x0..x(NZ-1) is row index array (concatenated for all vectors)
194
* y0..y(M-1) is column start index array for the second dimension.
195
* z1..z(K-1) is slice start index array for the third dimension.
196
* etc.
197
* Index arrays are 0 based.
198
*
199
* Row compressed sparse matrix structure
200
*---------------------------------------
201
*
202
* Similar to column compresses version except that dimensions 1 and 2 are
203
* interchanged. Structurally exactly same as ccs_matrix of the transpose.
204
*
205
*/
206
207
/* Following definitions are needed only in programs that need to do
208
* some 'intelligent' operations depending on arbitrary types.
209
* They are rarely needed in user level code.
210
*
211
* FIFFTS_FS_MASK 'fundamental structure' bit mask.
212
* FIFFTS_BASE_MASK 'Scalar value' (base value) bit mask.
213
* FIFFTS_MC_MASK 'Basic matrix coding' bit mask.
214
*
215
* Using type code structure constants directly is depreciated. Use
216
* functions to test type properties.
217
*/
218
219
#define FIFFC_MAJOR_VERSION 1L
220
#define FIFFC_MINOR_VERSION 3L
221
222
#define FIFFC_VERSION (FIFFC_MAJOR_VERSION<<16 | FIFFC_MINOR_VERSION)
223
224
/*
225
* Constants for types
226
*/
227
228
#define FIFFT_VOID 0
229
#define FIFFT_BYTE 1
230
#define FIFFT_SHORT 2
231
#define FIFFT_INT 3
232
#define FIFFT_FLOAT 4
233
#define FIFFT_DOUBLE 5
234
#define FIFFT_JULIAN 6
235
#define FIFFT_USHORT 7
236
#define FIFFT_UINT 8
237
#define FIFFT_ULONG 9
238
#define FIFFT_STRING 10
239
#define FIFFT_ASCII 10
240
#define FIFFT_LONG 11
241
#define FIFFT_DAU_PACK13 13
242
#define FIFFT_DAU_PACK14 14
243
#define FIFFT_DAU_PACK16 16
244
#define FIFFT_COMPLEX_FLOAT 20
245
#define FIFFT_COMPLEX_DOUBLE 21
246
#define FIFFT_OLD_PACK 23
247
#define FIFFT_CH_INFO_STRUCT 30
248
#define FIFFT_ID_STRUCT 31
249
#define FIFFT_DIR_ENTRY_STRUCT 32
250
#define FIFFT_DIG_POINT_STRUCT 33
251
#define FIFFT_CH_POS_STRUCT 34
252
#define FIFFT_COORD_TRANS_STRUCT 35
253
#define FIFFT_DIG_STRING_STRUCT 36
254
#define FIFFT_STREAM_SEGMENT_STRUCT 37
255
#define FIFFT_DATA_REF_STRUCT 38
256
/*
257
* These are for matrices of any of the above
258
*/
259
#define FIFFC_MATRIX_MAX_DIM 9
260
261
#define FIFFTS_FS_MASK 0xFF000000
262
#define FIFFTS_BASE_MASK 0x00000FFF
263
#define FIFFTS_MC_MASK 0x00FF0000
264
265
#define FIFFTS_FS_SCALAR 0x00000000
266
#define FIFFTS_FS_MATRIX 0x40000000
267
268
#define FIFFTS_MC_DENSE 0x00000000
269
#define FIFFTS_MC_CCS 0x00100000
270
#define FIFFTS_MC_RCS 0x00200000
271
272
#define FIFFT_MATRIX (FIFFTS_FS_MATRIX | FIFFTS_MC_DENSE)
273
#define FIFFT_CCS_MATRIX (FIFFTS_FS_MATRIX | FIFFTS_MC_CCS)
274
#define FIFFT_RCS_MATRIX (FIFFTS_FS_MATRIX | FIFFTS_MC_RCS)
275
276
#define FIFFT_MATRIX_INT (FIFFT_MATRIX | FIFFT_INT)
277
#define FIFFT_MATRIX_FLOAT (FIFFT_MATRIX | FIFFT_FLOAT)
278
#define FIFFT_MATRIX_DOUBLE (FIFFT_MATRIX | FIFFT_DOUBLE)
279
#define FIFFT_CCS_MATRIX_FLOAT (FIFFT_CCS_MATRIX | FIFFT_FLOAT)
280
#define FIFFT_RCS_MATRIX_FLOAT (FIFFT_RCS_MATRIX | FIFFT_FLOAT)
281
282
#define FIFFM_MESSAGE_GROUP(x) ((x) / 100 == 0)
283
284
/*
285
* Real-time shmem
286
*/
287
#define FIFF_NEW_FILE 1
288
#define FIFF_CLOSE_FILE 2
289
#define FIFF_DISCARD_FILE 3
290
#define FIFF_ERROR_MESSAGE 4
291
#define FIFF_SUSPEND_READING 5
292
#define FIFF_FATAL_ERROR_MESSAGE 6
293
#define FIFF_CONNECTION_CHECK 7
294
#define FIFF_SUSPEND_FILING 8
295
#define FIFF_RESUME_FILING 9
296
#define FIFF_RAW_PREBASE 10
297
#define FIFF_RAW_PICK_LIST 11
298
#define FIFF_ECHO 12
299
#define FIFF_RESUME_READING 13
300
#define FIFF_DACQ_SYSTEM_TYPE 14
301
#define FIFF_SELECT_RAW_CH 15
302
#define FIFF_PLAYBACK_MODE 16
303
#define FIFF_CONTINUE_FILE 17
304
#define FIFF_JITTER_MAX 18
305
#define FIFF_STREAM_SEGMENT 19
306
/*
307
define FIFF_DECIMATION_FACTOR 19 * Collector; not used anywhere?
308
*/
309
310
#define FIFFV_DACQ_SYSTEM_DAU 0
311
#define FIFFV_DACQ_SYSTEM_VXI 1
312
#define FIFFV_DACQ_SYSTEM_RPU 2
313
#define FIFFV_DACQ_SYSTEM_ORION 3
314
315
#ifdef _DATA_SERVER
316
#define FIFF_MEM_DATA_BUFFER 10300
317
#endif
318
319
/*
320
* Standard tags used in all blocks
321
*/
322
323
#define FIFF_FILE_ID 100
324
#define FIFF_DIR_POINTER 101
325
#define FIFF_DIR 102
326
#define FIFF_BLOCK_ID 103
327
#define FIFF_BLOCK_START 104
328
#define FIFF_BLOCK_END 105
329
#define FIFF_FREE_LIST 106
330
#define FIFF_FREE_BLOCK 107
331
#define FIFF_NOP 108
332
#define FIFF_PARENT_FILE_ID 109
333
#define FIFF_PARENT_BLOCK_ID 110
334
#define FIFF_BLOCK_NAME 111
335
#define FIFF_BLOCK_VERSION 112
336
#define FIFF_CREATOR 113
337
#define FIFF_MODIFIER 114
339
#define FIFF_REF_ROLE 115
340
#define FIFF_REF_FILE_ID 116
341
#define FIFF_REF_FILE_NUM 117
342
#define FIFF_REF_FILE_NAME 118
343
/* reserverd 119 */
344
#define FIFF_REF_BLOCK_ID 120
345
346
/*
347
* Megacq saves the parameters in these tags
348
*/
349
350
#define FIFF_DACQ_PARS 150
351
#define FIFF_DACQ_STIM 151
352
353
/*
354
* Structured objects (blocks)
355
*/
356
357
/*
358
* MEG/EEG
359
*/
360
361
#define FIFFB_ROOT 999
362
#define FIFFB_MEAS 100
363
#define FIFFB_MEAS_INFO 101
364
#define FIFFB_RAW_DATA 102
365
#define FIFFB_PROCESSED_DATA 103
366
#define FIFFB_EVOKED 104
367
#define FIFFB_MCG_AVE FIFFB_EVOKED
368
#define FIFFB_ASPECT 105
369
#define FIFFB_SUBJECT 106
370
#define FIFFB_ISOTRAK 107
371
#define FIFFB_HPI_MEAS 108
372
#define FIFFB_HPI_RESULT 109
373
#define FIFFB_HPI_COIL 110
374
#define FIFFB_PROJECT 111
375
#define FIFFB_CONTINUOUS_DATA 112
376
#define FIFFB_VOID 114
377
#define FIFFB_EVENTS 115
378
#define FIFFB_INDEX 116
379
#define FIFFB_DACQ_PARS 117
380
#define FIFFB_REF 118
382
#define FIFFB_SMSH_RAW_DATA 119
383
#define FIFFB_SMSH_ASPECT 120
384
#define FIFFB_HPI_SUBSYSTEM 121
386
/*
387
* MRI
388
*/
389
390
#define FIFFB_MRI 200
391
#define FIFFB_MRI_SET 201
392
#define FIFFB_MRI_SLICE 202
393
#define FIFFB_MRI_SCENERY 203
394
#define FIFFB_MRI_SCENE 204
395
#define FIFFB_MRI_SEG 205
396
#define FIFFB_MRI_SEG_REGION 206
398
/*
399
* Forward and inverse modelling
400
*/
401
402
#define FIFFB_SPHERE 300
403
#define FIFFB_BEM 310
404
#define FIFFB_BEM_SURF 311
405
#define FIFFB_CONDUCTOR_MODEL 312
406
#define FIFFB_XFIT_PROJ 313
407
#define FIFFB_XFIT_PROJ_ITEM 314
408
#define FIFFB_XFIT_AUX 315
409
#define FIFFB_PROJ FIFFB_XFIT_PROJ
410
#define FIFFB_PROJ_ITEM FIFFB_XFIT_PROJ_ITEM
411
/* 350...
412
* 370 Reserved for MNE estimates (MHa)
413
*/
414
415
#define FIFFB_BAD_CHANNELS 359
417
/*
418
* Volume info
419
*/
420
#define FIFFB_VOL_INFO 400
421
422
/*
423
* Sparse matrix, cross-talk correction, and SSS blocks
424
*/
425
#define FIFFB_DATA_CORRECTION 500
426
#define FIFFB_CHANNEL_DECOUPLER 501
427
#define FIFFB_SSS_INFO 502
428
#define FIFFB_SSS_CAL_ADJUST 503
429
#define FIFFB_SSS_ST_INFO 504
430
#define FIFFB_SSS_BASES 505
432
#define FIFFB_SMARTSHIELD 510
434
/*
435
* Different aspects of data
436
*/
437
438
#define FIFFV_ASPECT_AVERAGE 100
439
#define FIFFV_ASPECT_STD_ERR 101
440
#define FIFFV_ASPECT_SINGLE 102
441
#define FIFFV_ASPECT_SUBAVERAGE 103
442
#define FIFFV_ASPECT_ALTAVERAGE 104
443
#define FIFFV_ASPECT_SAMPLE 105
444
#define FIFFV_ASPECT_POWER_DENSITY 106
445
#define FIFFV_ASPECT_DIPOLE_WAVE 200
447
/*
448
* Tags used in data files
449
*/
450
451
#define FIFF_UTC_OFFSET 159
453
#define FIFF_NCHAN 200
454
#define FIFF_SFREQ 201
455
#define FIFF_DATA_PACK 202
456
#define FIFF_CH_INFO 203
457
#define FIFF_MEAS_DATE 204
458
#define FIFF_SUBJECT 205
459
#define FIFF_COMMENT 206
460
#define FIFF_NAVE 207
461
#define FIFF_FIRST_SAMPLE 208
462
#define FIFF_LAST_SAMPLE 209
463
#define FIFF_ASPECT_KIND 210
464
#define FIFF_REF_EVENT 211
465
#define FIFF_EXPERIMENTER 212
466
#define FIFF_DIG_POINT 213
467
#define FIFF_CH_POS_VEC 214
468
#define FIFF_HPI_SLOPES 215
469
#define FIFF_HPI_NCOIL 216
470
#define FIFF_REQ_EVENT 217
471
#define FIFF_REQ_LIMIT 218
472
#define FIFF_LOWPASS 219
473
#define FIFF_BAD_CHS 220
474
#define FIFF_ARTEF_REMOVAL 221
475
#define FIFF_COORD_TRANS 222
476
#define FIFF_HIGHPASS 223
477
#define FIFF_CH_CALS_VEC 224
478
#define FIFF_HPI_BAD_CHS 225
479
#define FIFF_HPI_CORR_COEFF 226
480
#define FIFF_EVENT_COMMENT 227
481
#define FIFF_NO_SAMPLES 228
482
#define FIFF_FIRST_TIME 229
483
#define FIFF_SUBAVE_SIZE 230
484
#define FIFF_SUBAVE_FIRST 231
485
#define FIFF_NAME 233
486
#define FIFF_DESCRIPTION FIFF_COMMENT
487
#define FIFF_DIG_STRING 234
489
#define FIFF_LINE_FREQ 235
490
#define FIFF_HPI_COIL_FREQ 236
491
#define FIFF_SIGNAL_CHANNEL 237
493
#define FIFFC_HPI_MAX_NCOIL 1000
495
/*
496
*
497
* HPI fitting program tags
498
*
499
*/
500
#define FIFF_HPI_COIL_MOMENTS 240
501
#define FIFF_HPI_FIT_GOODNESS 241
502
#define FIFF_HPI_FIT_ACCEPT 242
503
#define FIFF_HPI_FIT_GOOD_LIMIT 243
504
#define FIFF_HPI_FIT_DIST_LIMIT 244
505
#define FIFF_HPI_COIL_NO 245
506
#define FIFF_HPI_COILS_USED 246
508
#define FIFF_HPI_DIGITIZATION_ORDER 247
511
#define FIFFV_HPI_ACCEPT_PROGRAM (1<<0)
512
#define FIFFV_HPI_ACCEPT_USER (1<<1)
513
#define FIFFV_HPI_ACCEPT_NONE 0
514
517
#define FIFF_CH_SCAN_NO 250
518
#define FIFF_CH_LOGICAL_NO 251
519
#define FIFF_CH_KIND 252
520
#define FIFF_CH_RANGE 253
521
#define FIFF_CH_CAL 254
522
#define FIFF_CH_POS 255
523
#define FIFF_CH_UNIT 256
524
#define FIFF_CH_UNIT_MUL 257
525
#define FIFF_CH_DACQ_NAME 258
527
#define FIFF_SSS_FRAME 263
528
#define FIFF_SSS_JOB 264
529
#define FIFF_SSS_ORIGIN 265
530
#define FIFF_SSS_ORD_IN 266
531
#define FIFF_SSS_ORD_OUT 267
532
#define FIFF_SSS_NMAG 268
533
#define FIFF_SSS_COMPONENTS 269
534
#define FIFF_SSS_CAL_CHANS 270
535
#define FIFF_SSS_CAL_CORRS 271
536
#define FIFF_SSS_ST_CORR 272
538
#define FIFFV_SSS_JOB_NOTHING 0
539
#define FIFFV_SSS_JOB_CTC 1
540
#define FIFFV_SSS_JOB_FILTER 2
541
#define FIFFV_SSS_JOB_VIRT 3
542
#define FIFFV_SSS_JOB_HEAD_POS 4
543
#define FIFFV_SSS_JOB_MOVEC_FIT 5
544
#define FIFFV_SSS_JOB_MOVEC_QUA 6
545
#define FIFFV_SSS_JOB_REC_ALL 7
546
#define FIFFV_SSS_JOB_REC_IN 8
547
#define FIFFV_SSS_JOB_REC_OUT 9
548
#define FIFFV_SSS_JOB_ST 10
550
#define FIFF_SSS_BASE_IN 273
551
#define FIFF_SSS_BASE_OUT 274
552
#define FIFF_SSS_BASE_VIRT 275
553
#define FIFF_SSS_NORM 276
554
#define FIFF_SSS_ITERATE 277
555
#define FIFF_GANTRY_ANGLE 282
556
#define FIFF_DATA_BUFFER 300
557
#define FIFF_DATA_SKIP 301
558
#define FIFF_EPOCH 302
559
#define FIFF_DATA_SKIP_SAMP 303
560
#define FIFF_DATA_BUFFER2 304
561
#define FIFF_TIME_STAMP 305
563
#define FIFF_SUBJ_ID 400
564
#define FIFF_SUBJ_FIRST_NAME 401
565
#define FIFF_SUBJ_MIDDLE_NAME 402
566
#define FIFF_SUBJ_LAST_NAME 403
567
#define FIFF_SUBJ_BIRTH_DAY 404
568
#define FIFF_SUBJ_SEX 405
569
#define FIFF_SUBJ_HAND 406
570
#define FIFF_SUBJ_WEIGHT 407
571
#define FIFF_SUBJ_HEIGHT 408
572
#define FIFF_SUBJ_COMMENT 409
573
#define FIFF_SUBJ_HIS_ID 410
575
#define FIFF_PROJ_ID 500
576
#define FIFF_PROJ_NAME 501
577
#define FIFF_PROJ_AIM 502
578
#define FIFF_PROJ_PERSONS 503
579
#define FIFF_PROJ_COMMENT 504
583
#define FIFFV_SEX_UNKNOWN 0
584
#define FIFFV_SEX_MALE 1
585
#define FIFFV_SEX_FEMALE 2
586
587
#define FIFFV_HAND_RIGHT 1
588
#define FIFFV_HAND_LEFT 2
589
#define FIFFV_HAND_AMBIDEXTROUS 3
590
591
/*
592
* Event list saving...
593
*/
594
#define FIFF_EVENT_CHANNELS 600
595
#define FIFF_EVENT_LIST 601
597
/*
598
* Event spec tags
599
*/
600
#define FIFF_EVENT_CHANNEL 602
601
#define FIFF_EVENT_BITS 603
603
/*
604
* Event bitmask constants
605
*/
606
#define FIFFC_EVENT_FROMMASK 0
607
#define FIFFC_EVENT_FROMBITS 1
608
#define FIFFC_EVENT_TOMASK 2
609
#define FIFFC_EVENT_TOBITS 3
610
611
/*
612
* Tags used in saving SQUID characteristics etc.
613
*/
614
#define FIFF_SQUID_BIAS 701
615
#define FIFF_SQUID_OFFSET 702
616
#define FIFF_SQUID_GATE 703
617
618
/*
619
* Tags for sparse matrices
620
*/
621
#define FIFF_DECOUPLER_MATRIX 800
622
#define FIFF_SPARSE_CH_NAME_LIST FIFF_PROJ_ITEM_CH_NAME_LIST
623
624
/*
625
* Processing history tags
626
*/
627
#define FIFFB_PROCESSING_HISTORY 900
628
#define FIFFB_PROCESSING_RECORD 901
633
#define FIFFV_ASPECT_IFII_LOW 1100
634
#define FIFFV_ASPECT_IFII_HIGH 1101
635
#define FIFFV_ASPECT_GATE 1102
636
/*
637
* References
638
*/
639
#define FIFF_REF_PATH 1101
640
/*
641
* MRI...
642
*/
643
#define FIFF_MRI_SOURCE_PATH FIFF_REF_PATH
644
#define FIFF_MRI_SOURCE_FORMAT 2002
645
#define FIFF_MRI_PIXEL_ENCODING 2003
646
#define FIFF_MRI_PIXEL_DATA_OFFSET 2004
647
#define FIFF_MRI_PIXEL_SCALE 2005
648
#define FIFF_MRI_PIXEL_DATA 2006
649
#define FIFF_MRI_PIXEL_OVERLAY_ENCODING 2007
650
#define FIFF_MRI_PIXEL_OVERLAY_DATA 2008
651
652
#define FIFF_MRI_BOUNDING_BOX 2009
653
#define FIFF_MRI_WIDTH 2010
654
#define FIFF_MRI_WIDTH_M 2011
655
#define FIFF_MRI_HEIGHT 2012
656
#define FIFF_MRI_HEIGHT_M 2013
657
#define FIFF_MRI_DEPTH 2014
658
#define FIFF_MRI_DEPTH_M 2015
659
#define FIFF_MRI_THICKNESS 2016
660
#define FIFF_MRI_SCENE_AIM 2017
661
662
#define FIFF_MRI_ORIG_SOURCE_PATH 2020
663
#define FIFF_MRI_ORIG_SOURCE_FORMAT 2021
664
#define FIFF_MRI_ORIG_PIXEL_ENCODING 2022
665
#define FIFF_MRI_ORIG_PIXEL_DATA_OFFSET 2023
666
667
#define FIFF_MRI_VOXEL_DATA 2030
668
#define FIFF_MRI_VOXEL_ENCODING 2031
669
670
#define FIFF_MRI_MRILAB_SETUP 2100
671
672
#define FIFF_MRI_SEG_REGION_ID 2200
673
674
/*
675
* FIFF_MRI_SOURCE_FORMAT can be one of the following
676
* A missing FIFF_MRI_SOURCE_FORMAT tag
677
* indicates that the data is actually in the
678
* fiff itself (= FIFF_MRI_FORMAT_FIFF)
679
*
680
* If the source format is FIFF_MRI_FORMAT_FIFF
681
* the tags FIFF_MRI_PIXEL_ENCODING and FIFF_MRI_PIXEL_DATA_OFFSET
682
* are missing and should be found by the software loading the data
683
* from the FIFF_MRI_PIXEL_DATA tag.
684
*
685
*/
686
#define FIFFV_MRI_FORMAT_UNKNOWN 0
687
#define FIFFV_MRI_FORMAT_MAGNETOM_SHORT 1
688
#define FIFFV_MRI_FORMAT_MAGNETOM_LONG 2
689
#define FIFFV_MRI_FORMAT_MERIT 3
690
#define FIFFV_MRI_FORMAT_SIGNA 4
691
#define FIFFV_MRI_FORMAT_PIXEL_RAW 5
692
#define FIFFV_MRI_FORMAT_PIXEL_RAW_PACKED 6
693
#define FIFFV_MRI_FORMAT_MAGNETOM_NEW 7
694
#define FIFFV_MRI_FORMAT_FIFF 8
695
#define FIFFV_MRI_FORMAT_ACR_NEMA 9
696
#define FIFFV_MRI_FORMAT_DICOM_3 10
697
#define FIFFV_MRI_FORMAT_VISTA 11
698
/*
699
* FIFF_MRI_PIXEL_ENCODING is one of the following
700
*/
701
#define FIFFV_MRI_PIXEL_UNKNOWN 0
702
#define FIFFV_MRI_PIXEL_BYTE 1
703
#define FIFFV_MRI_PIXEL_WORD 2
704
#define FIFFV_MRI_PIXEL_SWAP_WORD 3
705
#define FIFFV_MRI_PIXEL_FLOAT 4
706
#define FIFFV_MRI_PIXEL_BYTE_INDEXED_COLOR 5
707
#define FIFFV_MRI_PIXEL_BYTE_RGB_COLOR 6
708
#define FIFFV_MRI_PIXEL_BYTE_RLE_RGB_COLOR 7
709
#define FIFFV_MRI_PIXEL_BIT_RLE 8
710
/*
711
* Forward and inverse modelling...
712
*/
713
/*
714
* Sphere model (3000...)
715
*/
716
#define FIFF_CONDUCTOR_MODEL_KIND 3000
717
/*
718
* These are the models we support
719
*/
720
#define FIFFV_COND_MODEL_UNKNOWN 0
721
#define FIFFV_COND_MODEL_SPHERE 1
722
#define FIFFV_COND_MODEL_BEM_HOMOG 2
723
#define FIFFV_COND_MODEL_BEM 3
725
#define FIFF_SPHERE_ORIGIN 3001
726
#define FIFF_SPHERE_COORD_FRAME 3002
727
#define FIFF_SPHERE_LAYERS 3003
728
/*
729
* Surfaces for BEM (3100...)
730
*/
731
#define FIFF_BEM_SURF_ID 3101
732
#define FIFF_BEM_SURF_NAME 3102
733
#define FIFF_BEM_SURF_NNODE 3103
734
#define FIFF_BEM_SURF_NTRI 3104
735
#define FIFF_BEM_SURF_NODES 3105
736
#define FIFF_BEM_SURF_TRIANGLES 3106
737
#define FIFF_BEM_SURF_NORMALS 3107
738
#define FIFF_BEM_SURF_CURVS 3108
739
#define FIFF_BEM_SURF_CURV_VALUES 3109
741
#define FIFF_BEM_POT_SOLUTION 3110
742
#define FIFF_BEM_APPROX 3111
743
#define FIFF_BEM_COORD_FRAME 3112
744
#define FIFF_BEM_SIGMA 3113
745
/*
746
* FIFF_BEM_SURF_ID can be one of the following
747
*/
748
#define FIFFV_BEM_SURF_ID_UNKNOWN -1
749
#define FIFFV_BEM_SURF_ID_BRAIN 1
750
#define FIFFV_BEM_SURF_ID_CSF 2
751
#define FIFFV_BEM_SURF_ID_SKULL 3
752
#define FIFFV_BEM_SURF_ID_HEAD 4
753
754
#define FIFFV_BEM_SURF_ID_BLOOD 11
755
#define FIFFV_BEM_SURF_ID_HEART 12
756
#define FIFFV_BEM_SURF_ID_LUNGS 13
757
#define FIFFV_BEM_SURF_ID_TORSO 14
758
759
#define FIFFV_BEM_SURF_ID_NM122 21
760
#define FIFFV_BEM_SURF_UNIT_SPHERE 22
761
#define FIFFV_BEM_SURF_ID_VV 23
762
/*
763
* FIFF_MRI_SEG_REGION_ID can be one of the following
764
*/
765
#define FIFFV_SEG_REGION_ID_UNKNOWN FIFF_BEM_SURF_ID_UNKNOWN
766
#define FIFFV_SEG_REGION_ID_BRAIN FIFF_BEM_SURF_ID_BRAIN
767
#define FIFFV_SEG_REGION_ID_CSF FIFF_BEM_SURF_ID_CSF
768
#define FIFFV_SEG_REGION_ID_SKULL FIFF_BEM_SURF_ID_SKULL
769
#define FIFFV_SEG_REGION_ID_HEAD FIFF_BEM_SURF_ID_HEAD
770
771
#define FIFFV_SEG_REGION_ID_BLOOD FIFF_BEM_SURF_ID_BLOOD
772
#define FIFFV_SEG_REGION_ID_HEART FIFF_BEM_SURF_ID_HEART
773
#define FIFFV_SEG_REGION_ID_LUNGS FIFF_BEM_SURF_ID_LUNGS
774
#define FIFFV_SEG_REGION_ID_TORSO FIFF_BEM_SURF_ID_TORSO
775
/*
776
* FIFF_BEM_APPROX
777
*/
778
#define FIFFV_BEM_APPROX_CONST 1
779
#define FIFFV_BEM_APPROX_LINEAR 2
780
/*
781
* Source descriptions (3200...)
782
* The dipole is six floats (position and dipole moment)
783
*/
784
#define FIFF_SOURCE_DIPOLE 3201
785
/*
786
* These tags are used by xfit
787
*/
788
#define FIFF_XFIT_LEAD_PRODUCTS 3401
789
#define FIFF_XFIT_MAP_PRODUCTS 3402
790
#define FIFF_XFIT_GRAD_MAP_PRODUCTS 3403
791
#define FIFF_XFIT_VOL_INTEGRATION 3404
792
#define FIFF_XFIT_INTEGRATION_RADIUS 3405
793
#define FIFF_XFIT_CONDUCTOR_MODEL_NAME 3406
794
#define FIFF_XFIT_CONDUCTOR_MODEL_TRANS_NAME 3407
795
#define FIFF_XFIT_CONT_SURF_TYPE 3408
797
/*
798
* These relate to linear projection
799
*/
800
#define FIFF_PROJ_ITEM_KIND 3411
801
#define FIFF_PROJ_ITEM_TIME 3412
802
#define FIFF_PROJ_ITEM_DIPOLE FIFF_SOURCE_DIPOLE
803
#define FIFF_PROJ_ITEM_IGN_CHS 3413
804
#define FIFF_PROJ_ITEM_NVEC 3414
805
#define FIFF_PROJ_ITEM_VECTORS 3415
806
#define FIFF_PROJ_ITEM_COMMENT FIFF_COMMENT
807
#define FIFF_PROJ_ITEM_DESCRIPTION FIFF_DESCRIPTION
808
#define FIFF_PROJ_ITEM_DEFINITION 3416
809
#define FIFF_PROJ_ITEM_CH_NAME_LIST 3417
810
811
#define FIFF_XFIT_PROJ_ITEM_KIND FIFF_PROJ_ITEM_KIND
812
#define FIFF_XFIT_PROJ_ITEM_TIME FIFF_PROJ_ITEM_TIME
813
#define FIFF_XFIT_PROJ_ITEM_DIPOLE FIFF_PROJ_ITEM_DIPOLE
814
#define FIFF_XFIT_PROJ_ITEM_IGN_CHS FIFF_PROJ_ITEM_IGN_CHS
815
#define FIFF_XFIT_PROJ_ITEM_NVEC FIFF_PROJ_ITEM_NVEC
816
#define FIFF_XFIT_PROJ_ITEM_VECTORS FIFF_PROJ_ITEM_VECTORS
817
#define FIFF_XFIT_PROJ_ITEM_COMMENT FIFF_PROJ_ITEM_COMMENT
818
/*
819
* The FIFF_PROJ_ITEM_KIND is an integer,
820
* one of the following
821
*/
822
#define FIFFV_PROJ_ITEM_NONE 0
823
#define FIFFV_PROJ_ITEM_FIELD 1
824
#define FIFFV_PROJ_ITEM_DIP_FIX 2
825
#define FIFFV_PROJ_ITEM_DIP_ROT 3
826
#define FIFFV_PROJ_ITEM_HOMOG_GRAD 4
827
#define FIFFV_PROJ_ITEM_HOMOG_FIELD 5
828
#define FIFFV_PROJ_ITEM_EEG_AVREF 10
829
830
#define FIFFV_XFIT_PROJ_ITEM_NONE FIFFV_PROJ_ITEM_NONE
831
#define FIFFV_XFIT_PROJ_ITEM_FIELD FIFFV_PROJ_ITEM_FIELD
832
#define FIFFV_XFIT_PROJ_ITEM_DIP_FIX FIFFV_PROJ_ITEM_DIP_FIX
833
#define FIFFV_XFIT_PROJ_ITEM_DIP_ROT FIFFV_PROJ_ITEM_DIP_ROT
834
#define FIFFV_XFIT_PROJ_ITEM_HOMOG_GRAD FIFFV_PROJ_ITEM_HOMOG_GRAD
835
#define FIFFV_XFIT_PROJ_ITEM_HOMOG_FIELD FIFFV_PROJ_ITEM_HOMOG_FIELD
836
837
#define FIFF_XPLOTTER_LAYOUT 3501
839
/* FIFF_MNE_xxxx 3502
840
* ...
841
* Reserved for MNE data 3799
842
*/
843
#define FIFF_CH_NAME_LIST 3507
845
/*
846
* These occur in the volume info files
847
*/
848
#define FIFF_VOL_ID 4001
849
#define FIFF_VOL_NAME 4002
850
#define FIFF_VOL_OWNER_ID 4003
851
#define FIFF_VOL_OWNER_NAME 4004
852
#define FIFF_VOL_OWNER_REAL_NAME 4005
853
#define FIFF_VOL_TYPE 4006
854
#define FIFF_VOL_HOST 4007
855
#define FIFF_VOL_REAL_ROOT 4008
856
#define FIFF_VOL_SYMBOLIC_ROOT 4009
857
#define FIFF_VOL_MOUNT_POINT 4010
858
#define FIFF_VOL_BLOCKS 4011
859
#define FIFF_VOL_FREE_BLOCKS 4012
860
#define FIFF_VOL_AVAIL_BLOCKS 4013
861
#define FIFF_VOL_BLOCK_SIZE 4014
862
#define FIFF_VOL_DIRECTORY 4015
863
/*
864
* Index
865
*/
866
#define FIFF_INDEX_KIND 5001
867
#define FIFF_INDEX 5002
868
869
/*======================================================================
870
* Enumerated types used as tag values.
871
*
872
*=====================================================================*/
873
874
/*
875
* Values for FIFF_REF_ROLE. The role of a reference
876
*/
877
#define FIFFV_ROLE_PREV_FILE 1
878
#define FIFFV_ROLE_NEXT_FILE 2
879
880
/*
881
* Method by which a projection is defined (FIFF_PROJ_ITEM_DEFINITION).
882
* If tag is not present, FIFF_PROJ_BY_COMPLEMENT should be assumed.
883
*/
884
#define FIFFV_PROJ_BY_COMPLEMENT 0
885
#define FIFFV_PROJ_BY_SPACE 1
886
887
/*
888
* Volume types used in FIFF_VOL_TYPE
889
*/
890
891
#define FIFFV_VOL_TYPE_HD 1
892
#define FIFFV_VOL_TYPE_MOD 2
894
/*
895
* Byte order
896
*/
897
#define FIFFV_NATIVE_ENDIAN 0
898
#define FIFFV_LITTLE_ENDIAN 1
899
#define FIFFV_BIG_ENDIAN 2
900
} // NAMESPACE
901
902
#endif // FIFF_FILE_H
Generated on Wed Aug 9 2023 17:55:41 for MNE-CPP by
1.8.17