MNE-CPP  beta 1.0
covariance.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef COVARIANCE_H
37 #define COVARIANCE_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "covariance_global.h"
46 
50 #include <xMeas/realtimecov.h>
51 #include <rtInv/rtcov.h>
52 
53 
54 //*************************************************************************************************************
55 //=============================================================================================================
56 // FIFF INCLUDES
57 //=============================================================================================================
58 
59 #include <fiff/fiff_info.h>
60 #include <fiff/fiff_cov.h>
61 
62 
63 //*************************************************************************************************************
64 //=============================================================================================================
65 // QT INCLUDES
66 //=============================================================================================================
67 
68 #include <QtWidgets>
69 #include <QVector>
70 
71 
72 //*************************************************************************************************************
73 //=============================================================================================================
74 // DEFINE NAMESPACE CovariancePlugin
75 //=============================================================================================================
76 
77 namespace CovariancePlugin
78 {
79 
80 
81 //*************************************************************************************************************
82 //=============================================================================================================
83 // USED NAMESPACES
84 //=============================================================================================================
85 
86 using namespace MNEX;
87 using namespace XMEASLIB;
88 using namespace IOBuffer;
89 using namespace RTINVLIB;
90 using namespace FIFFLIB;
91 
92 
93 //*************************************************************************************************************
94 //=============================================================================================================
95 // FORWARD DECLARATIONS
96 //=============================================================================================================
97 
98 class CovarianceSettingsWidget;
99 
100 
101 //=============================================================================================================
108 {
109  Q_OBJECT
110  Q_PLUGIN_METADATA(IID "mne_x/1.0" FILE "covariance.json") //NEw Qt5 Plugin system replaces Q_EXPORT_PLUGIN2 macro
111  // Use the Q_INTERFACES() macro to tell Qt's meta-object system about the interfaces
112  Q_INTERFACES(MNEX::IAlgorithm)
113 
114  friend class CovarianceSettingsWidget;
115 
116 public:
117  //=========================================================================================================
121  Covariance();
122 
123  //=========================================================================================================
127  ~Covariance();
128 
129  //=========================================================================================================
133  virtual void init();
134 
135  //=========================================================================================================
139  virtual void unload();
140 
141  //=========================================================================================================
145  virtual QSharedPointer<IPlugin> clone() const;
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  void update(XMEASLIB::NewMeasurement::SPtr pMeasurement);
156 
157  void appendCovariance(FiffCov::SPtr p_pCovariance);
158 
159  void showCovarianceWidget();
160 
161  void changeSamples(qint32 samples);
162 
163 signals:
164  //=========================================================================================================
168  void fiffInfoAvailable();
169 
170 protected:
171  virtual void run();
172 
173 private:
174  QMutex mutex;
175 
177  PluginOutputData<RealTimeCov>::SPtr m_pCovarianceOutput;
179  FiffInfo::SPtr m_pFiffInfo;
181  CircularMatrixBuffer<double>::SPtr m_pCovarianceBuffer;
183  RtCov::SPtr m_pRtCov;
185  QVector<FiffCov::SPtr> m_qVecCovData;
187  bool m_bIsRunning;
188  bool m_bProcessData;
190  qint32 m_iEstimationSamples;
191 
192  QSharedPointer<CovarianceSettingsWidget> m_pCovarianceWidget;
193 
194  QAction* m_pActionShowAdjustment;
195 };
196 
197 } // NAMESPACE
198 
199 #endif // COVARIANCE_H
QSharedPointer< FiffCov > SPtr
Definition: fiff_cov.h:97
Contains declaration of IAlgorithm interface class.
RtCov class declaration.
CircularMatrixBuffer class declaration.
QSharedPointer< PluginOutputData< T > > SPtr
#define COVARIANCESHARED_EXPORT
The circular matrix buffer.
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
FiffInfo class declaration.
The IAlgorithm class provides an interface for a real-time algorithm plugin.
Definition: IAlgorithm.h:70
QSharedPointer< PluginInputData > SPtr
Definition: arrow.h:75
The Covariance class provides a Covariance algorithm structure.
Definition: covariance.h:107
Contains the Covariance library export/import macros.
Definition: fiff.h:98
QSharedPointer< NewMeasurement > SPtr
Contains the declaration of the NewRealTimeMultiSampleArray class.
QSharedPointer< RtCov > SPtr
Definition: rtcov.h:111
Definition: rtave.h:89
Contains the declaration of the RealTimeCov class.
FiffCov class declaration.