84 bool t_bReadMeasBlockStart =
false;
85 bool t_bReadMeasBlockEnd =
false;
86 QString col_names, row_names;
93 while(!t_bReadMeasBlockStart)
98 qInfo(
"FIFF_BLOCK_START FIFFB_MEAS_INFO");
99 t_bReadMeasBlockStart =
true;
107 bool dev_head_t_read =
false;
108 bool ctf_head_t_read =
false;
110 while(!t_bReadMeasBlockEnd)
122 p_pFiffInfo->acq_pars = t_pTag->toString();
124 p_pFiffInfo->acq_stim = t_pTag->toString();
132 if (!dev_head_t_read)
134 p_pFiffInfo->dev_head_t = t_pTag->toCoordTrans();
135 dev_head_t_read =
true;
137 else if (!ctf_head_t_read)
139 p_pFiffInfo->ctf_head_t = t_pTag->toCoordTrans();
140 ctf_head_t_read =
true;
153 p_pFiffInfo->dig.append(t_pTag->toDigPoint());
167 qint32 countProj = p_pFiffInfo->projs.size();
171 switch (t_pTag->kind)
175 p_pFiffInfo->projs.append(proj);
176 p_pFiffInfo->projs[countProj].desc = t_pTag->toString();
179 p_pFiffInfo->projs[countProj].kind = *(t_pTag->toInt());
182 p_pFiffInfo->projs[countProj].data->ncol = *(t_pTag->toInt());
185 p_pFiffInfo->projs[countProj].data->nrow = *(t_pTag->toInt());
188 p_pFiffInfo->projs[countProj].active = *(t_pTag->toInt());
195 p_pFiffInfo->projs[countProj].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
203 for(qint32 i = 0; i < p_pFiffInfo->projs.size(); ++i)
205 if(p_pFiffInfo->projs[i].data->data.rows() != p_pFiffInfo->projs[i].data->nrow)
206 p_pFiffInfo->projs[i].data->data.transposeInPlace();
220 qint32 countComp = p_pFiffInfo->comps.size();
224 switch (t_pTag->kind)
228 p_pFiffInfo->comps.append(comp);
229 p_pFiffInfo->comps[countComp].ctfkind = *(t_pTag->toInt());
231 if (p_pFiffInfo->comps[countComp].ctfkind == 1194410578)
232 p_pFiffInfo->comps[countComp].kind = 1;
233 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194476114)
234 p_pFiffInfo->comps[countComp].kind = 2;
235 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194541650)
236 p_pFiffInfo->comps[countComp].kind = 3;
237 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194479433)
238 p_pFiffInfo->comps[countComp].kind = 4;
239 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194544969)
240 p_pFiffInfo->comps[countComp].kind = 5;
242 p_pFiffInfo->comps[countComp].kind = p_pFiffInfo->comps[countComp].ctfkind;
245 p_pFiffInfo->comps[countComp].save_calibrated = *(t_pTag->toInt());
248 p_pFiffInfo->comps[countComp].data->nrow = *(t_pTag->toInt());
251 p_pFiffInfo->comps[countComp].data->ncol = *(t_pTag->toInt());
254 row_names = t_pTag->toString();
255 if (!row_names.isEmpty())
259 col_names = t_pTag->toString();
260 if (!col_names.isEmpty())
265 p_pFiffInfo->comps[countComp].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
290 p_pFiffInfo->sfreq = *(t_pTag->toFloat());
293 p_pFiffInfo->linefreq = *(t_pTag->toFloat());
296 p_pFiffInfo->highpass = *(t_pTag->toFloat());
299 p_pFiffInfo->lowpass = *(t_pTag->toFloat());
302 p_pFiffInfo->nchan = *(t_pTag->toInt());
305 p_pFiffInfo->meas_date[0] = t_pTag->toInt()[0];
306 p_pFiffInfo->meas_date[1] = t_pTag->toInt()[1];
309 p_pFiffInfo->proj_id = *t_pTag->toInt();
312 p_pFiffInfo->proj_name = t_pTag->toString();
315 p_pFiffInfo->xplotter_layout = t_pTag->toString();
318 p_pFiffInfo->experimenter = t_pTag->toString();
321 p_pFiffInfo->description = t_pTag->toString();
324 p_pFiffInfo->gantry_angle = *t_pTag->toInt();
327 p_pFiffInfo->utc_offset = t_pTag->toString();
332 p_pFiffInfo->chs.append(t_pTag->toChInfo());
337 qInfo(
"FIFF_BLOCK_END FIFFB_MEAS_INFO");
338 t_bReadMeasBlockEnd =
true;
346 for (qint32 c = 0; c < p_pFiffInfo->nchan; ++c)
347 p_pFiffInfo->ch_names << p_pFiffInfo->chs[c].ch_name;
359 bool t_bReadMeasBlockStart =
false;
360 bool t_bReadMeasBlockEnd =
false;
361 QString col_names, row_names;
368 while(!t_bReadMeasBlockStart)
373 qInfo(
"FIFF_BLOCK_START FIFFB_MEAS_INFO");
374 t_bReadMeasBlockStart =
true;
382 bool dev_head_t_read =
false;
383 bool ctf_head_t_read =
false;
385 while(!t_bReadMeasBlockEnd)
397 p_pFiffInfo->acq_pars = t_pTag->toString();
399 p_pFiffInfo->acq_stim = t_pTag->toString();
407 if (!dev_head_t_read)
409 p_pFiffInfo->dev_head_t = t_pTag->toCoordTrans();
410 dev_head_t_read =
true;
412 else if (!ctf_head_t_read)
414 p_pFiffInfo->ctf_head_t = t_pTag->toCoordTrans();
415 ctf_head_t_read =
true;
428 p_pFiffInfo->dig.append(t_pTag->toDigPoint());
429 p_pDigData->points.append(t_pTag->toDigPoint());
432 p_pDigData->coord_frame = *t_pTag->toInt();
447 qint32 countProj = p_pFiffInfo->projs.size();
451 switch (t_pTag->kind)
455 p_pFiffInfo->projs.append(proj);
456 p_pFiffInfo->projs[countProj].desc = t_pTag->toString();
459 p_pFiffInfo->projs[countProj].kind = *(t_pTag->toInt());
462 p_pFiffInfo->projs[countProj].data->ncol = *(t_pTag->toInt());
465 p_pFiffInfo->projs[countProj].data->nrow = *(t_pTag->toInt());
468 p_pFiffInfo->projs[countProj].active = *(t_pTag->toInt());
475 p_pFiffInfo->projs[countProj].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
483 for(qint32 i = 0; i < p_pFiffInfo->projs.size(); ++i)
485 if(p_pFiffInfo->projs[i].data->data.rows() != p_pFiffInfo->projs[i].data->nrow)
486 p_pFiffInfo->projs[i].data->data.transposeInPlace();
500 qint32 countComp = p_pFiffInfo->comps.size();
504 switch (t_pTag->kind)
508 p_pFiffInfo->comps.append(comp);
509 p_pFiffInfo->comps[countComp].ctfkind = *(t_pTag->toInt());
511 if (p_pFiffInfo->comps[countComp].ctfkind == 1194410578)
512 p_pFiffInfo->comps[countComp].kind = 1;
513 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194476114)
514 p_pFiffInfo->comps[countComp].kind = 2;
515 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194541650)
516 p_pFiffInfo->comps[countComp].kind = 3;
517 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194479433)
518 p_pFiffInfo->comps[countComp].kind = 4;
519 else if (p_pFiffInfo->comps[countComp].ctfkind == 1194544969)
520 p_pFiffInfo->comps[countComp].kind = 5;
522 p_pFiffInfo->comps[countComp].kind = p_pFiffInfo->comps[countComp].ctfkind;
525 p_pFiffInfo->comps[countComp].save_calibrated = *(t_pTag->toInt());
528 p_pFiffInfo->comps[countComp].data->nrow = *(t_pTag->toInt());
531 p_pFiffInfo->comps[countComp].data->ncol = *(t_pTag->toInt());
534 row_names = t_pTag->toString();
535 if (!row_names.isEmpty())
539 col_names = t_pTag->toString();
540 if (!col_names.isEmpty())
545 p_pFiffInfo->comps[countComp].data->data = t_pTag->toFloatMatrix().transpose().cast<
double>();
570 p_pFiffInfo->sfreq = *(t_pTag->toFloat());
573 p_pFiffInfo->linefreq = *(t_pTag->toFloat());
576 p_pFiffInfo->highpass = *(t_pTag->toFloat());
579 p_pFiffInfo->lowpass = *(t_pTag->toFloat());
582 p_pFiffInfo->nchan = *(t_pTag->toInt());
585 p_pFiffInfo->meas_date[0] = t_pTag->toInt()[0];
586 p_pFiffInfo->meas_date[1] = t_pTag->toInt()[1];
589 p_pFiffInfo->proj_id = *t_pTag->toInt();
592 p_pFiffInfo->proj_name = t_pTag->toString();
595 p_pFiffInfo->xplotter_layout = t_pTag->toString();
598 p_pFiffInfo->experimenter = t_pTag->toString();
601 p_pFiffInfo->description = t_pTag->toString();
604 p_pFiffInfo->gantry_angle = *t_pTag->toInt();
607 p_pFiffInfo->utc_offset = t_pTag->toString();
612 p_pFiffInfo->chs.append(t_pTag->toChInfo());
617 qInfo(
"FIFF_BLOCK_END FIFFB_MEAS_INFO");
618 t_bReadMeasBlockEnd =
true;
626 for (qint32 c = 0; c < p_pFiffInfo->nchan; ++c)
627 p_pFiffInfo->ch_names << p_pFiffInfo->chs[c].ch_name;
629 p_pDigData->npoint = p_pDigData->points.size();
631 for (
int k = 0; k < p_pDigData->npoint; k++) {
632 p_pDigData->active.append(1);
633 p_pDigData->discard.append(0);
636 return MetaData(p_pFiffInfo, p_pDigData);