MNE-CPP  beta 0.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sourcelab.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef SOURCELAB_H
37 #define SOURCELAB_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "sourcelab_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/rtcov.h>
58 #include <rtInv/rtinvop.h>
59 #include <rtInv/rtave.h>
60 
63 
64 
65 //*************************************************************************************************************
66 //=============================================================================================================
67 // QT INCLUDES
68 //=============================================================================================================
69 
70 #include <QtWidgets>
71 #include <QFile>
72 
73 
74 //*************************************************************************************************************
75 //=============================================================================================================
76 // DEFINE NAMESPACE SourceLabPlugin
77 //=============================================================================================================
78 
79 namespace SourceLabPlugin
80 {
81 
82 
83 //*************************************************************************************************************
84 //=============================================================================================================
85 // USED NAMESPACES
86 //=============================================================================================================
87 
88 using namespace FSLIB;
89 using namespace FIFFLIB;
90 using namespace MNELIB;
91 using namespace INVERSELIB;
92 using namespace RTINVLIB;
93 using namespace MNEX;
94 using namespace XMEASLIB;
95 using namespace IOBuffer;
96 
97 
98 //*************************************************************************************************************
99 //=============================================================================================================
100 // FORWARD DECLARATIONS
101 //=============================================================================================================
102 
103 
104 //=============================================================================================================
111 {
112  Q_OBJECT
113  Q_PLUGIN_METADATA(IID "mne_x/1.0" FILE "sourcelab.json") //NEw Qt5 Plugin system replaces Q_EXPORT_PLUGIN2 macro
114  // Use the Q_INTERFACES() macro to tell Qt's meta-object system about the interfaces
115  Q_INTERFACES(MNEX::IAlgorithm)
116 
117  friend class SourceLabSetupWidget;
118 
119 public:
120 
121  //=========================================================================================================
125  SourceLab();
126  //=========================================================================================================
130  ~SourceLab();
131 
132  //=========================================================================================================
136  virtual QSharedPointer<IPlugin> clone() const;
137 
138  //=========================================================================================================
142  void init();
143 
144  void doClustering();
145  void finishedClustering();
146 
147  virtual bool start();
148  virtual bool stop();
149 
150  virtual IPlugin::PluginType getType() const;
151  virtual QString getName() const;
152 
153  virtual QWidget* setupWidget();
154 
155  //=========================================================================================================
161  void appendEvoked(FiffEvoked::SPtr p_pEvoked);
162 
163  void update(XMEASLIB::NewMeasurement::SPtr pMeasurement);
164 
165  //=========================================================================================================
171  void updateFiffCov(FiffCov::SPtr p_pFiffCov);
172 
173  //=========================================================================================================
179  void updateInvOp(MNEInverseOperator::SPtr p_pInvOp);
180 
181 signals:
182  //=========================================================================================================
186  void clusteringStarted();
187 
188  //=========================================================================================================
192  void clusteringFinished();
193 
194 protected:
195  virtual void run();
196 
197 private:
203  QMutex mutex;
204 
205  CircularMatrixBuffer<double>::SPtr m_pSourceLabBuffer;
207  bool m_bIsRunning;
208  bool m_bReceiveData;
209  bool m_bProcessData;
211  //MNE stuff
212  QFile m_qFileFwdSolution;
213  MNEForwardSolution::SPtr m_pFwd;
214  MNEForwardSolution::SPtr m_pClusteredFwd;
216  bool m_bFinishedClustering;
218  QString m_sAtlasDir;
219  AnnotationSet::SPtr m_pAnnotationSet;
220  QString m_sSurfaceDir;
221  SurfaceSet::SPtr m_pSurfaceSet;
224  FiffInfo::SPtr m_pFiffInfo;
226  RtCov::SPtr m_pRtCov;
227  FiffCov::SPtr m_pFiffCov;
229  RtInvOp::SPtr m_pRtInvOp;
230  MNEInverseOperator::SPtr m_pInvOp;
232  RtAve::SPtr m_pRtAve;
233  qint32 m_iNumAverages;
234  bool m_bSingleTrial;
235  QVector<FiffEvoked::SPtr> m_qVecEvokedData;
236  qint32 m_iStimChan;
238  MinimumNorm::SPtr m_pMinimumNorm;
239  qint32 m_iDownSample;
241 // RealTimeSourceEstimate::SPtr m_pRTSE_SourceLab; /**< Source Estimate output channel. */
242 };
243 
244 } // NAMESPACE
245 
246 #endif // SOURCELAB_H
RtInvOp class declaration.
QSharedPointer< FiffCov > SPtr
Definition: fiff_cov.h:97
Contains the declaration of the RealTimeSourceEstimate class.
Contains declaration of IAlgorithm interface class.
QSharedPointer< MinimumNorm > SPtr
Definition: minimumnorm.h:85
RtCov class declaration.
CircularMatrixBuffer class declaration.
SurfaceSet class declaration.
QSharedPointer< MNEForwardSolution > SPtr
QSharedPointer< PluginOutputData< T > > SPtr
The SourceLab class provides a dummy algorithm structure.
Definition: sourcelab.h:110
The circular matrix buffer.
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
#define SOURCELABSHARED_EXPORT
Minimum norm class declaration.
FiffInfo class declaration.
The IAlgorithm class provides an interface for a real-time algorithm plugin.
Definition: IAlgorithm.h:70
QSharedPointer< PluginInputData > SPtr
RtAve class declaration.
MNEForwardSolution class declaration, which provides the forward solution including the source space ...
QSharedPointer< FiffEvoked > SPtr
Definition: fiff_evoked.h:94
QSharedPointer< SurfaceSet > SPtr
Definition: surfaceset.h:86
QSharedPointer< NewMeasurement > SPtr
QSharedPointer< AnnotationSet > SPtr
Definition: annotationset.h:99
Contains the declaration of the NewRealTimeMultiSampleArray class.
MNESourceEstimate class declaration.
QSharedPointer< RtCov > SPtr
Definition: rtcov.h:111
AnnotationSet class declaration.
Contains the SourceLab library export/import macros.
The DummySetupWidget class provides the DummyToolbox configuration window.
QSharedPointer< RtAve > SPtr
Definition: rtave.h:114
QSharedPointer< MNEInverseOperator > SPtr
QSharedPointer< RtInvOp > SPtr
Definition: rtinvop.h:110