28#include <QRegularExpression>
62 s->
models.push_back(std::move(m));
70 static const int def_nlayer = 4;
71 VectorXf def_unit_rads(def_nlayer);
72 def_unit_rads << 0.90f,0.92f,0.97f,1.0f;
73 VectorXf def_sigmas(def_nlayer);
74 def_sigmas << 0.33f,1.0f,0.4e-2f,0.33f;
77 def_nlayer,def_unit_rads,def_sigmas));
87 if (filename.isEmpty())
91 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
94 QTextStream in(&file);
100 while (!in.atEnd()) {
101 QString line = in.readLine().trimmed();
102 if (line.isEmpty() || line.startsWith(
'#'))
105 QStringList parts = line.split(QRegularExpression(
"[:\\n\\r]"), Qt::SkipEmptyParts);
109 name = parts[0].trimmed();
112 for (
int i = 1; i + 1 < parts.size(); i += 2) {
113 bool okRad =
false, okSig =
false;
114 float r = parts[i].trimmed().toFloat(&okRad);
115 float s = parts[i + 1].trimmed().toFloat(&okSig);
116 if (!okRad || !okSig)
118 rads.conservativeResize(nlayer + 1);
119 sigmas.conservativeResize(nlayer + 1);
134 QString name(
"Default");
136 if (!p_sName.isEmpty())
139 if (this->
nmodel() == 0) {
140 qWarning(
"No EEG sphere model definitions available");
144 for (
int k = 0; k < this->
nmodel(); k++) {
145 if (this->
models[k]->name.compare(name) == 0) {
146 qInfo(
"Selected model: %s",this->
models[k]->name.toUtf8().constData());
150 qWarning(
"EEG sphere model %s not found.",name.toUtf8().constData());
160 qInfo(
"Available EEG sphere models:");
161 for (
int k = 0; k < this->
nmodel(); k++) {
163 QString line = QString(
"\t%1 : %2").arg(this_model->
name).arg(this_model->
nlayer());
164 for (
int p = 0; p < this_model->
nlayer(); p++)
165 line += QString(
" : %1 : %2").arg(this_model->
layers[p].rel_rad, 7,
'f', 3).arg(this_model->
layers[p].sigma, 7,
'f', 3);
166 qInfo(
"%s", line.toUtf8().constData());
Named container of FwdEegSphereModel objects loaded from an mne_setup_eeg_sphere_model parameter file...
Forward modelling — BEM solver, spherical models, sensor/coil definitions and the lead-field assembly...
Multi-shell concentric-sphere head model holding the Berg-Scherg equivalent-source parameters that ac...
static FwdEegSphereModel::UPtr fwd_create_eeg_sphere_model(const QString &name, int nlayer, const Eigen::VectorXf &rads, const Eigen::VectorXf &sigmas)
std::vector< FwdEegSphereLayer > layers
std::unique_ptr< FwdEegSphereModel > UPtr
FwdEegSphereModel * fwd_select_eeg_sphere_model(const QString &p_sName)
static FwdEegSphereModelSet * fwd_add_default_eeg_sphere_model(FwdEegSphereModelSet *s)
static FwdEegSphereModelSet * fwd_add_to_eeg_sphere_model_set(FwdEegSphereModelSet *s, FwdEegSphereModel::UPtr m)
static FwdEegSphereModelSet * fwd_load_eeg_sphere_models(const QString &p_sFileName, FwdEegSphereModelSet *now)
std::vector< FwdEegSphereModel::UPtr > models
void fwd_list_eeg_sphere_models()