MNE-CPP  beta 1.0
mne.h
1 //=============================================================================================================
36 #ifndef MNE_H
37 #define MNE_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "mne_global.h"
47 
49 
50 #include <fs/annotationset.h>
51 #include <fs/surfaceset.h>
52 #include <fiff/fiff_info.h>
53 #include <fiff/fiff_evoked.h>
55 #include <mne/mne_sourceestimate.h>
57 #include <rtInv/rtinvop.h>
58 
60 #include <xMeas/realtimecov.h>
61 #include <xMeas/realtimeevoked.h>
62 
63 
64 //*************************************************************************************************************
65 //=============================================================================================================
66 // QT INCLUDES
67 //=============================================================================================================
68 
69 #include <QtWidgets>
70 #include <QFile>
71 
72 
73 //*************************************************************************************************************
74 //=============================================================================================================
75 // DEFINE NAMESPACE MNEPlugin
76 //=============================================================================================================
77 
78 namespace MNEPlugin
79 {
80 
81 
82 //*************************************************************************************************************
83 //=============================================================================================================
84 // USED NAMESPACES
85 //=============================================================================================================
86 
87 using namespace FSLIB;
88 using namespace FIFFLIB;
89 using namespace MNELIB;
90 using namespace INVERSELIB;
91 using namespace RTINVLIB;
92 using namespace MNEX;
93 using namespace XMEASLIB;
94 using namespace IOBuffer;
95 
96 
97 //*************************************************************************************************************
98 //=============================================================================================================
99 // FORWARD DECLARATIONS
100 //=============================================================================================================
101 
102 
103 //=============================================================================================================
109 class MNESHARED_EXPORT MNE : public IAlgorithm
110 {
111  Q_OBJECT
112  Q_PLUGIN_METADATA(IID "mne_x/1.0" FILE "mne.json") //NEw Qt5 Plugin system replaces Q_EXPORT_PLUGIN2 macro
113  // Use the Q_INTERFACES() macro to tell Qt's meta-object system about the interfaces
114  Q_INTERFACES(MNEX::IAlgorithm)
115 
116  friend class MNESetupWidget;
117 
118 public:
119 
120  //=========================================================================================================
124  MNE();
125  //=========================================================================================================
129  ~MNE();
130 
131  //=========================================================================================================
135  virtual QSharedPointer<IPlugin> clone() const;
136 
137  //=========================================================================================================
141  void init();
142 
143  //=========================================================================================================
147  virtual void unload();
148 
149  void calcFiffInfo();
150 
151  void doClustering();
152 
153  void finishedClustering();
154 
155  virtual bool start();
156  virtual bool stop();
157 
158  virtual IPlugin::PluginType getType() const;
159  virtual QString getName() const;
160 
161  virtual QWidget* setupWidget();
162 
163  //=========================================================================================================
168  void updateRTC(XMEASLIB::NewMeasurement::SPtr pMeasurement);
169 
170  //=========================================================================================================
176  void updateRTE(XMEASLIB::NewMeasurement::SPtr pMeasurement);
177 
178  //=========================================================================================================
184  void updateInvOp(MNEInverseOperator::SPtr p_pInvOp);
185 
186 signals:
187  //=========================================================================================================
191  void clusteringStarted();
192 
193  //=========================================================================================================
197  void clusteringFinished();
198 
199 protected:
200  virtual void run();
201 
202 private:
208  QMutex m_qMutex;
209 
210  QVector<FiffEvoked> m_qVecFiffEvoked;
211  qint32 m_iNumAverages;
212 
213  QVector<FiffCov> m_qVecFiffCov;
214 
215  bool m_bIsRunning;
216  bool m_bReceiveData;
217  bool m_bProcessData;
219  //MNE stuff
220  QFile m_qFileFwdSolution;
221  MNEForwardSolution::SPtr m_pFwd;
222  MNEForwardSolution::SPtr m_pClusteredFwd;
224  bool m_bFinishedClustering;
226  QString m_sAtlasDir;
227  AnnotationSet::SPtr m_pAnnotationSet;
228  QString m_sSurfaceDir;
229  SurfaceSet::SPtr m_pSurfaceSet;
232  FiffInfo::SPtr m_pFiffInfo;
233  FiffInfo::SPtr m_pFiffInfoEvoked;
234  QStringList m_qListCovChNames;
235  FiffInfoBase::SPtr m_pFiffInfoForward;
237  QStringList m_qListPickChannels;
239  RtInvOp::SPtr m_pRtInvOp;
240  MNEInverseOperator::SPtr m_pInvOp;
242  MinimumNorm::SPtr m_pMinimumNorm;
243  qint32 m_iDownSample;
245 // RealTimeSourceEstimate::SPtr m_pRTSE_MNE; /**< Source Estimate output channel. */
246 };
247 
248 } // NAMESPACE
249 
250 #endif // MNE_H
RtInvOp class declaration.
Contains the declaration of the RealTimeSourceEstimate class.
The DummySetupWidget class provides the DummyToolbox configuration window.
Contains declaration of IAlgorithm interface class.
QSharedPointer< MinimumNorm > SPtr
Definition: minimumnorm.h:85
CircularMatrixBuffer class declaration.
SurfaceSet class declaration.
QSharedPointer< MNEForwardSolution > SPtr
QSharedPointer< PluginOutputData< T > > SPtr
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
Minimum norm class declaration.
FiffInfo class declaration.
Contains the declaration of the RealTimeEvoked class.
The IAlgorithm class provides an interface for a real-time algorithm plugin.
Definition: IAlgorithm.h:70
QSharedPointer< PluginInputData > SPtr
MNEForwardSolution class declaration, which provides the forward solution including the source space ...
QSharedPointer< SurfaceSet > SPtr
Definition: surfaceset.h:86
Definition: arrow.h:75
Definition: fiff.h:98
QSharedPointer< NewMeasurement > SPtr
QSharedPointer< AnnotationSet > SPtr
Definition: annotationset.h:99
MNESourceEstimate class declaration.
AnnotationSet class declaration.
Definition: rtave.h:89
Contains the declaration of the RealTimeCov class.
The MNE class provides wrapper functions to stay consistent with mne matlab toolbox.
Definition: mne.h:103
QSharedPointer< MNEInverseOperator > SPtr
QSharedPointer< RtInvOp > SPtr
Definition: rtinvop.h:110
QSharedPointer< FiffInfoBase > SPtr