111 std::unique_ptr<MNESssData> s;
124 auto s = std::make_unique<MNESssData>();
125 QList<FiffDirNode::SPtr> sss;
134 if (sss.size() > 0) {
142 s->job = *t_pTag->toInt();
147 s->coord_frame = *t_pTag->toInt();
152 r0 = t_pTag->toFloat();
153 Eigen::Map<Eigen::Vector3f>(s->origin) = Eigen::Map<const Eigen::Vector3f>(r0);
158 s->in_order = *t_pTag->toInt();
163 s->out_order = *t_pTag->toInt();
168 s->nchan = *t_pTag->toInt();
174 int ncomp = t_pTag->size()/
sizeof(
fiff_int_t);
175 int *raw = t_pTag->toInt();
176 s->comp_info = Eigen::VectorXi::Map(raw, ncomp);
178 if (ncomp != (s->in_order*(2+s->in_order) + s->out_order*(2+s->out_order))) {
179 qCritical(
"Number of SSS components does not match the expansion orders listed in the file");
186 for (j = 0, n = 3, p = 0; j < s->in_order; j++, n = n + 2) {
187 for (q = 0; q < n; q++, p++)
191 for (j = 0, n = 3; j < s->out_order; j++, n = n + 2) {
192 for (q = 0; q < n; q++, p++)
237 for (k = 0; frames[k].
frame != -1; k++) {
238 if (frame == frames[k].frame)
239 return frames[k].
name;
241 return frames[k].
name;
250 out <<
"job : " << this->
job <<
"\n";
252 out <<
"origin : " << qSetFieldWidth(6) << qSetRealNumberPrecision(1) << Qt::fixed
253 << 1000*this->
origin[0] <<
" " << 1000*this->
origin[1] <<
" " << 1000*this->
origin[2] << qSetFieldWidth(0) <<
" mm\n";
254 out <<
"in order : " << this->
in_order <<
"\n";
255 out <<
"out order : " << this->
out_order <<
"\n";
256 out <<
"nchan : " << this->
nchan <<
"\n";
257 out <<
"ncomp : " << this->
comp_info.size() <<
"\n";
258 out <<
"in nuse : " << this->
in_nuse <<
"\n";
259 out <<
"out nuse : " << this->
out_nuse <<
"\n";
264 for (j = 0, n = 3, p = 0; j < this->in_order; j++, n = n + 2) {
267 for (q = 0; q < n; q++, p++)
271 for (j = 0, n = 3; j < this->out_order; j++, n = n + 2) {
274 for (q = 0; q < n; q++, p++)
Header file describing the numerical values used in fif files.
#define FIFF_SSS_COMPONENTS
#define FIFFV_SSS_JOB_NOTHING
FiffStream class declaration.
FiffTag class declaration, which provides fiff tag I/O and processing methods.
#define FIFFV_MNE_COORD_MNI_TAL
#define FIFFV_MNE_COORD_FS_TAL_LTZ
#define FIFFV_COORD_MRI_SLICE
#define FIFFV_MNE_COORD_CTF_DEVICE
#define FIFFV_COORD_DEVICE
#define FIFFV_COORD_MRI_DISPLAY
#define FIFFV_MNE_COORD_MRI_VOXEL
#define FIFFV_MNE_COORD_CTF_HEAD
#define FIFFV_COORD_ISOTRAK
#define FIFFV_COORD_UNKNOWN
#define FIFFV_MNE_COORD_FS_TAL_GTZ
#define FIFFV_MNE_COORD_RAS
MNE SSS Data (MNESssData) class declaration.
const char * mne_coord_frame_name_1(int frame)
Core MNE data structures (source spaces, source estimates, hemispheres).
FIFF file I/O and data structures (raw, epochs, evoked, covariance, forward).
QSharedPointer< FiffDirNode > SPtr
QSharedPointer< FiffStream > SPtr
std::unique_ptr< FiffTag > UPtr
Lookup record mapping a FIFF coordinate frame integer code to its human-readable name.
Eigen::VectorXi comp_info
static std::unique_ptr< MNESssData > read_from_node(QSharedPointer< FIFFLIB::FiffStream > &stream, const QSharedPointer< FIFFLIB::FiffDirNode > &start)
void print(QTextStream &out) const
static std::unique_ptr< MNESssData > read(const QString &name)