51 #include <QtCore/QtPlugin>
61 using namespace RapLabPlugin;
62 using namespace FIFFLIB;
63 using namespace XMEASLIB;
73 , m_bReceiveData(false)
74 , m_bProcessData(false)
75 , m_qFileFwdSolution(
"./MNE-sample-data/MEG/sample/sample_audvis-meg-eeg-oct-6-fwd.fif")
76 , m_sAtlasDir(
"./MNE-sample-data/subjects/sample/label")
77 , m_sSurfaceDir(
"./MNE-sample-data/subjects/sample/surf")
79 , m_bSingleTrial(false)
100 QSharedPointer<RapLab> pRapLabClone(
new RapLab());
122 if(!m_pRapLabBuffer.isNull())
127 connect(m_pRTMSAInput.data(), &PluginInputConnector::notify,
this, &RapLab::update, Qt::DirectConnection);
134 m_pRTSEOutput->data()->setName(
"Real-Time Source Estimate");
135 m_pRTSEOutput->data()->setAnnotSet(m_pAnnotationSet);
136 m_pRTSEOutput->data()->setSurfSet(m_pSurfaceSet);
138 m_pRTSEOutput->data()->setSrc(m_pClusteredFwd->src);
140 m_pRTSEOutput->data()->setSamplingRate(600/m_iDownSample);
199 m_bIsRunning =
false;
202 QThread::terminate();
205 if(m_pRtCov->isRunning())
208 if(m_pRtInvOp->isRunning())
212 m_pRapLabBuffer->
clear();
214 m_bReceiveData =
false;
252 if(pRTMSA && m_bReceiveData)
260 m_pFiffInfo = pRTMSA->getFiffInfo();
264 MatrixXd t_mat(pRTMSA->getNumChannels(), pRTMSA->getMultiArraySize());
266 for(
unsigned char i = 0; i < pRTMSA->getMultiArraySize(); ++i)
267 t_mat.col(i) = pRTMSA->getMultiSampleArray()[i];
269 m_pRapLabBuffer->
push(&t_mat);
279 if(p_pEvoked->comment == QString(
"Stim %1").arg(m_iStimChan))
281 std::cout << p_pEvoked->comment.toLatin1().constData() <<
" append" << std::endl;
284 m_qVecEvokedData.push_back(p_pEvoked);
294 m_pFiffCov = p_pFiffCov;
297 m_pRtInvOp->appendNoiseCov(m_pFiffCov);
308 double lambda2 = 1.0 / pow(snr, 2);
310 QString method(
"dSPM");
317 m_pMinimumNorm->doInverseSetup(m_iNumAverages,
false);
346 m_bReceiveData =
true;
386 m_bProcessData =
true;
388 qint32 skip_count = 0;
392 qint32 nrows = m_pRapLabBuffer->
rows();
397 MatrixXd t_mat = m_pRapLabBuffer->
pop();
400 m_pRtCov->append(t_mat);
406 if(m_pMinimumNorm && t_mat.cols() > 0)
411 MNESourceEstimate sourceEstimate = m_pMinimumNorm->calculateInverse(t_mat, 0, 1/m_pFiffInfo->sfreq);
413 std::cout <<
"Source Estimated" << std::endl;
420 m_pRtAve->append(t_mat);
425 if(m_pMinimumNorm && m_qVecEvokedData.size() > 0 && skip_count > 2)
427 FiffEvoked t_fiffEvoked = *m_qVecEvokedData[0].data();
429 float tmin = ((float)t_fiffEvoked.
first) / t_fiffEvoked.
info.
sfreq;
434 std::cout <<
"SourceEstimated:\n" << std::endl;
438 for(qint32 i = 0; i < sourceEstimate.
data.cols(); i += m_iDownSample)
439 m_pRTSEOutput->data()->setValue(sourceEstimate.
data.col(i));
441 m_qVecEvokedData.pop_front();
virtual QWidget * setupWidget()
OutputConnectorList m_outputConnectors
QSharedPointer< FiffCov > SPtr
virtual QString getName() const
Real-time inverse operator estimation.
QSharedPointer< MinimumNorm > SPtr
void evokedStim(FIFFLIB::FiffEvoked::SPtr p_pEvokedStim)
void invOperatorCalculated(MNELIB::MNEInverseOperator::SPtr p_pInvOp)
Real-time covariance estimation.
void updateFiffCov(FiffCov::SPtr p_pFiffCov)
QSharedPointer< MNEForwardSolution > SPtr
QSharedPointer< CircularMatrixBuffer > SPtr
Contains the declaration of the RapLab class.
The circular matrix buffer.
virtual QSharedPointer< IPlugin > clone() const
void covCalculated(FIFFLIB::FiffCov::SPtr p_pCov)
virtual IPlugin::PluginType getType() const
void push(const Matrix< _Tp, Dynamic, Dynamic > *pMatrix)
Real-time averaging helper.
void appendEvoked(FiffEvoked::SPtr p_pEvoked)
void updateInvOp(MNEInverseOperator::SPtr p_pInvOp)
QSharedPointer< FiffEvoked > SPtr
QSharedPointer< SurfaceSet > SPtr
Matrix< _Tp, Dynamic, Dynamic > pop()
QSharedPointer< NewMeasurement > SPtr
QSharedPointer< AnnotationSet > SPtr
static QSharedPointer< PluginOutputData< T > > create(IPlugin *parent, const QString &name, const QString &descr)
QSharedPointer< RtCov > SPtr
InputConnectorList m_inputConnectors
A hemisphere set of surfaces.
QSharedPointer< RtAve > SPtr
QSharedPointer< MNEInverseOperator > SPtr
The RealTimeMultiSampleArrayNew class is the base class of every RealTimeMultiSampleArrayNew Measurem...
QSharedPointer< RtInvOp > SPtr