83 bool t_bReadMeasBlockStart =
false;
84 bool t_bReadMeasBlockEnd =
false;
85 QString col_names, row_names;
92 while (!t_bReadMeasBlockStart) {
95 qInfo(
"FIFF_BLOCK_START FIFFB_MEAS_INFO");
96 t_bReadMeasBlockStart =
true;
104 bool dev_head_t_read =
false;
105 bool ctf_head_t_read =
false;
107 while (!t_bReadMeasBlockEnd) {
116 p_pFiffInfo->acq_pars = t_pTag->toString();
118 p_pFiffInfo->acq_stim = t_pTag->toString();
125 if (!dev_head_t_read) {
126 p_pFiffInfo->dev_head_t = t_pTag->toCoordTrans();
127 dev_head_t_read =
true;
128 }
else if (!ctf_head_t_read) {
129 p_pFiffInfo->ctf_head_t = t_pTag->toCoordTrans();
130 ctf_head_t_read =
true;
141 p_pFiffInfo->dig.append(t_pTag->toDigPoint());
152 qint32 countProj = p_pFiffInfo->projs.size();
155 switch (t_pTag->kind) {
158 p_pFiffInfo->projs.append(proj);
159 p_pFiffInfo->projs[countProj].desc = t_pTag->toString();
162 p_pFiffInfo->projs[countProj].kind = *(t_pTag->toInt());
165 p_pFiffInfo->projs[countProj].data->ncol = *(t_pTag->toInt());
168 p_pFiffInfo->projs[countProj].data->nrow = *(t_pTag->toInt());
171 p_pFiffInfo->projs[countProj].active = *(t_pTag->toInt());
178 p_pFiffInfo->projs[countProj].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
186 for (qint32 i = 0; i < p_pFiffInfo->projs.size(); ++i) {
187 if (p_pFiffInfo->projs[i].data->data.rows() != p_pFiffInfo->projs[i].data->nrow)
188 p_pFiffInfo->projs[i].data->data.transposeInPlace();
199 qint32 countComp = p_pFiffInfo->comps.size();
202 switch (t_pTag->kind) {
205 p_pFiffInfo->comps.append(comp);
206 p_pFiffInfo->comps[countComp].ctfkind = *(t_pTag->toInt());
208 if (p_pFiffInfo->comps[countComp].ctfkind == 1194410578)
209 p_pFiffInfo->comps[countComp].kind = 1;
210 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194476114)
211 p_pFiffInfo->comps[countComp].kind = 2;
212 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194541650)
213 p_pFiffInfo->comps[countComp].kind = 3;
214 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194479433)
215 p_pFiffInfo->comps[countComp].kind = 4;
216 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194544969)
217 p_pFiffInfo->comps[countComp].kind = 5;
219 p_pFiffInfo->comps[countComp].kind = p_pFiffInfo->comps[countComp].ctfkind;
222 p_pFiffInfo->comps[countComp].save_calibrated = *(t_pTag->toInt());
225 p_pFiffInfo->comps[countComp].data->nrow = *(t_pTag->toInt());
228 p_pFiffInfo->comps[countComp].data->ncol = *(t_pTag->toInt());
231 row_names = t_pTag->toString();
232 if (!row_names.isEmpty())
236 col_names = t_pTag->toString();
237 if (!col_names.isEmpty())
242 p_pFiffInfo->comps[countComp].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
262 switch (t_pTag->kind) {
264 p_pFiffInfo->sfreq = *(t_pTag->toFloat());
267 p_pFiffInfo->linefreq = *(t_pTag->toFloat());
270 p_pFiffInfo->highpass = *(t_pTag->toFloat());
273 p_pFiffInfo->lowpass = *(t_pTag->toFloat());
276 p_pFiffInfo->nchan = *(t_pTag->toInt());
279 p_pFiffInfo->meas_date[0] = t_pTag->toInt()[0];
280 p_pFiffInfo->meas_date[1] = t_pTag->toInt()[1];
283 p_pFiffInfo->proj_id = *t_pTag->toInt();
286 p_pFiffInfo->proj_name = t_pTag->toString();
289 p_pFiffInfo->xplotter_layout = t_pTag->toString();
292 p_pFiffInfo->experimenter = t_pTag->toString();
295 p_pFiffInfo->description = t_pTag->toString();
298 p_pFiffInfo->gantry_angle = *t_pTag->toInt();
301 p_pFiffInfo->utc_offset = t_pTag->toString();
306 p_pFiffInfo->chs.append(t_pTag->toChInfo());
310 qInfo(
"FIFF_BLOCK_END FIFFB_MEAS_INFO");
311 t_bReadMeasBlockEnd =
true;
319 for (qint32 c = 0; c < p_pFiffInfo->nchan; ++c)
320 p_pFiffInfo->ch_names << p_pFiffInfo->chs[c].ch_name;
332 bool t_bReadMeasBlockStart =
false;
333 bool t_bReadMeasBlockEnd =
false;
334 QString col_names, row_names;
341 while (!t_bReadMeasBlockStart) {
344 qInfo(
"FIFF_BLOCK_START FIFFB_MEAS_INFO");
345 t_bReadMeasBlockStart =
true;
353 bool dev_head_t_read =
false;
354 bool ctf_head_t_read =
false;
356 while (!t_bReadMeasBlockEnd) {
365 p_pFiffInfo->acq_pars = t_pTag->toString();
367 p_pFiffInfo->acq_stim = t_pTag->toString();
374 if (!dev_head_t_read) {
375 p_pFiffInfo->dev_head_t = t_pTag->toCoordTrans();
376 dev_head_t_read =
true;
377 }
else if (!ctf_head_t_read) {
378 p_pFiffInfo->ctf_head_t = t_pTag->toCoordTrans();
379 ctf_head_t_read =
true;
390 p_pFiffInfo->dig.append(t_pTag->toDigPoint());
391 p_pDigData->points.append(t_pTag->toDigPoint());
394 p_pDigData->coord_frame = *t_pTag->toInt();
406 qint32 countProj = p_pFiffInfo->projs.size();
409 switch (t_pTag->kind) {
412 p_pFiffInfo->projs.append(proj);
413 p_pFiffInfo->projs[countProj].desc = t_pTag->toString();
416 p_pFiffInfo->projs[countProj].kind = *(t_pTag->toInt());
419 p_pFiffInfo->projs[countProj].data->ncol = *(t_pTag->toInt());
422 p_pFiffInfo->projs[countProj].data->nrow = *(t_pTag->toInt());
425 p_pFiffInfo->projs[countProj].active = *(t_pTag->toInt());
432 p_pFiffInfo->projs[countProj].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
440 for (qint32 i = 0; i < p_pFiffInfo->projs.size(); ++i) {
441 if (p_pFiffInfo->projs[i].data->data.rows() != p_pFiffInfo->projs[i].data->nrow)
442 p_pFiffInfo->projs[i].data->data.transposeInPlace();
453 qint32 countComp = p_pFiffInfo->comps.size();
456 switch (t_pTag->kind) {
459 p_pFiffInfo->comps.append(comp);
460 p_pFiffInfo->comps[countComp].ctfkind = *(t_pTag->toInt());
462 if (p_pFiffInfo->comps[countComp].ctfkind == 1194410578)
463 p_pFiffInfo->comps[countComp].kind = 1;
464 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194476114)
465 p_pFiffInfo->comps[countComp].kind = 2;
466 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194541650)
467 p_pFiffInfo->comps[countComp].kind = 3;
468 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194479433)
469 p_pFiffInfo->comps[countComp].kind = 4;
470 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194544969)
471 p_pFiffInfo->comps[countComp].kind = 5;
473 p_pFiffInfo->comps[countComp].kind = p_pFiffInfo->comps[countComp].ctfkind;
476 p_pFiffInfo->comps[countComp].save_calibrated = *(t_pTag->toInt());
479 p_pFiffInfo->comps[countComp].data->nrow = *(t_pTag->toInt());
482 p_pFiffInfo->comps[countComp].data->ncol = *(t_pTag->toInt());
485 row_names = t_pTag->toString();
486 if (!row_names.isEmpty())
490 col_names = t_pTag->toString();
491 if (!col_names.isEmpty())
496 p_pFiffInfo->comps[countComp].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
516 switch (t_pTag->kind) {
518 p_pFiffInfo->sfreq = *(t_pTag->toFloat());
521 p_pFiffInfo->linefreq = *(t_pTag->toFloat());
524 p_pFiffInfo->highpass = *(t_pTag->toFloat());
527 p_pFiffInfo->lowpass = *(t_pTag->toFloat());
530 p_pFiffInfo->nchan = *(t_pTag->toInt());
533 p_pFiffInfo->meas_date[0] = t_pTag->toInt()[0];
534 p_pFiffInfo->meas_date[1] = t_pTag->toInt()[1];
537 p_pFiffInfo->proj_id = *t_pTag->toInt();
540 p_pFiffInfo->proj_name = t_pTag->toString();
543 p_pFiffInfo->xplotter_layout = t_pTag->toString();
546 p_pFiffInfo->experimenter = t_pTag->toString();
549 p_pFiffInfo->description = t_pTag->toString();
552 p_pFiffInfo->gantry_angle = *t_pTag->toInt();
555 p_pFiffInfo->utc_offset = t_pTag->toString();
560 p_pFiffInfo->chs.append(t_pTag->toChInfo());
564 qInfo(
"FIFF_BLOCK_END FIFFB_MEAS_INFO");
565 t_bReadMeasBlockEnd =
true;
573 for (qint32 c = 0; c < p_pFiffInfo->nchan; ++c)
574 p_pFiffInfo->ch_names << p_pFiffInfo->chs[c].ch_name;
576 p_pDigData->npoint = p_pDigData->points.size();
578 for (
int k = 0; k < p_pDigData->npoint; k++) {
579 p_pDigData->active.append(1);
580 p_pDigData->discard.append(0);
583 return MetaData(p_pFiffInfo, p_pDigData);