69: m_inverseOperator(p_inverseOperator)
72 this->setRegularization(lambda);
73 this->setMethod(method);
79: m_inverseOperator(p_inverseOperator)
82 this->setRegularization(lambda);
83 this->setMethod(dSPM, sLORETA);
93 qint32 nave = p_fiffEvoked.
nave;
95 if(!m_inverseOperator.check_ch_names(p_fiffEvoked.
info)) {
96 qWarning(
"Channel name check failed.");
107 printf(
"Picked %d channels from the data\n",t_fiffEvoked.
info.
nchan);
110 float tmin = p_fiffEvoked.
times[0];
187 qWarning(
"MinimumNorm::calculateInverse - Inverse not setup -> call doInverseSetup first!");
191 if(K.cols() != data.rows()) {
192 qWarning() <<
"MinimumNorm::calculateInverse - Dimension mismatch between K.cols() and data.rows() -" << K.cols() <<
"and" << data.rows();
196 MatrixXd sol = K * data;
200 printf(
"combining the current components...\n");
202 MatrixXd sol1(sol.rows()/3,sol.cols());
203 for(qint32 i = 0; i < sol.cols(); ++i)
206 sol1.block(0,i,sol.rows()/3,1) = tmp->cwiseSqrt();
209 sol.resize(sol1.rows(),sol1.cols());
216 sol = inv.noisenorm*sol;
220 printf(
"(sLORETA)...");
221 sol = inv.noisenorm*sol;
226 VectorXi p_vecVertices(inv.src[0].vertno.size() + inv.src[1].vertno.size());
227 p_vecVertices << inv.src[0].vertno, inv.src[1].vertno;
233 return MNESourceEstimate(sol, p_vecVertices, tmin, tstep);
243 inv = m_inverseOperator.prepare_inverse_operator(nave, m_fLambda, m_bdSPM, m_bsLORETA);
245 printf(
"Computing inverse...\n");
246 inv.assemble_kernel(label, m_sMethod, pick_normal, K, noise_norm, vertno);
248 std::cout <<
"K " << K.rows() <<
" x " << K.cols() << std::endl;
257 return "Minimum Norm Estimate";
264 return m_inverseOperator.src;
271 if(method.compare(
"MNE") == 0)
273 else if(method.compare(
"dSPM") == 0)
275 else if(method.compare(
"sLORETA") == 0)
279 qWarning(
"Method not recognized!");
284 printf(
"\tSet minimum norm method to %s.\n", method.toUtf8().constData());
293 qWarning(
"Cant activate dSPM and sLORETA at the same time! - Activating dSPM");
300 m_bsLORETA = sLORETA;
302 m_sMethod = QString(
"dSPM");
304 m_sMethod = QString(
"sLORETA");
306 m_sMethod = QString(
"MNE");
#define FIFFV_MNE_FREE_ORI
FiffEvoked class declaration.
MNESourceEstimate class declaration.
Minimum norm class declaration.
Core MNE data structures (source spaces, source estimates, hemispheres).
FIFF file I/O and data structures (raw, epochs, evoked, covariance, forward).
Inverse source estimation (MNE, dSPM, sLORETA, dipole fitting).
Shared utilities (I/O helpers, spectral analysis, layout management, warp algorithms).
FiffEvoked pick_channels(const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList) const
MNE inverse operator combining noise covariance, forward solution, and source covariance for source e...
virtual const MNELIB::MNESourceSpaces & getSourceSpace() const
virtual void doInverseSetup(qint32 nave, bool pick_normal=false)
virtual const char * getName() const
void setMethod(QString method)
MinimumNorm(const MNELIB::MNEInverseOperator &p_inverseOperator, float lambda, const QString method)
void setRegularization(float lambda)
virtual MNELIB::MNESourceEstimate calculateInverse(const FIFFLIB::FiffEvoked &p_fiffEvoked, bool pick_normal=false)
Source Space descritpion.
static Eigen::VectorXd * combine_xyz(const Eigen::VectorXd &vec)