MNE-CPP  0.1.9
A Framework for Electrophysiology
rtinvop.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef RTINVOP_RTPROCESSING_H
37 #define RTINVOP_RTPROCESSING_H
38 
39 //=============================================================================================================
40 // INCLUDES
41 //=============================================================================================================
42 
43 #include "rtprocessing_global.h"
44 
45 #include <fiff/fiff_cov.h>
46 
47 //=============================================================================================================
48 // QT INCLUDES
49 //=============================================================================================================
50 
51 #include <QThread>
52 #include <QSharedPointer>
53 
54 //=============================================================================================================
55 // FORWARD DECLARATIONS
56 //=============================================================================================================
57 
58 namespace FIFFLIB {
59  class FiffInfo;
60 }
61 
62 namespace MNELIB {
63  class MNEForwardSolution;
64  class MNEInverseOperator;
65 }
66 
67 //=============================================================================================================
68 // DEFINE NAMESPACE RTPROCESSINGLIB
69 //=============================================================================================================
70 
71 namespace RTPROCESSINGLIB
72 {
73 
74 //=============================================================================================================
75 // RTPROCESSINGLIB FORWARD DECLARATIONS
76 //=============================================================================================================
77 
78 struct RtInvOpInput {
79  QSharedPointer<FIFFLIB::FiffInfo> pFiffInfo;
80  QSharedPointer<MNELIB::MNEForwardSolution> pFwd;
81  FIFFLIB::FiffCov noiseCov;
82 };
83 
84 //=============================================================================================================
91 {
92  Q_OBJECT
93 
94 public:
95  //=========================================================================================================
101  void doWork(const RtInvOpInput &inputData);
102 
103 signals:
104  //=========================================================================================================
110  void resultReady(const MNELIB::MNEInverseOperator& invOp);
111 };
112 
113 //=============================================================================================================
119 class RTPROCESINGSHARED_EXPORT RtInvOp : public QObject
120 {
121  Q_OBJECT
122 
123 public:
124  typedef QSharedPointer<RtInvOp> SPtr;
125  typedef QSharedPointer<const RtInvOp> ConstSPtr;
127  //=========================================================================================================
135  explicit RtInvOp(QSharedPointer<FIFFLIB::FiffInfo> &p_pFiffInfo,
136  QSharedPointer<MNELIB::MNEForwardSolution> &p_pFwd,
137  QObject *parent = 0);
138 
139  //=========================================================================================================
143  ~RtInvOp();
144 
145  //=========================================================================================================
151  void append(const FIFFLIB::FiffCov &noiseCov);
152 
153  //=========================================================================================================
159  void setFwdSolution(QSharedPointer<MNELIB::MNEForwardSolution> pFwd);
160 
161  //=========================================================================================================
165  void restart();
166 
167  //=========================================================================================================
171  void stop();
172 
173 protected:
174  //=========================================================================================================
178  void handleResults(const MNELIB::MNEInverseOperator& invOp);
179 
180  QSharedPointer<FIFFLIB::FiffInfo> m_pFiffInfo;
181  QSharedPointer<MNELIB::MNEForwardSolution> m_pFwd;
183  QThread m_workerThread;
185 signals:
186  //=========================================================================================================
192  void invOperatorCalculated(const MNELIB::MNEInverseOperator& invOp);
193 
194  //=========================================================================================================
200  void operate(const RtInvOpInput &inputData);
201 };
202 
203 //=============================================================================================================
204 // INLINE DEFINITIONS
205 //=============================================================================================================
206 } // NAMESPACE
207 
208 #endif // RTINV_RTPROCESSING_H
RTPROCESSINGLIB::RtInvOp::m_pFiffInfo
QSharedPointer< FIFFLIB::FiffInfo > m_pFiffInfo
Definition: rtinvop.h:180
RTPROCESSINGLIB::RtInvOp::m_pFwd
QSharedPointer< MNELIB::MNEForwardSolution > m_pFwd
Definition: rtinvop.h:181
RTPROCESSINGLIB::RtInvOpWorker
Real-time inverse operator worker.
Definition: rtinvop.h:90
fiff_cov.h
FiffCov class declaration.
rtprocessing_global.h
realtime library export/import macros.
RTPROCESSINGLIB::RtInvOp::m_workerThread
QThread m_workerThread
Definition: rtinvop.h:183
RTPROCESSINGLIB::RtInvOp::SPtr
QSharedPointer< RtInvOp > SPtr
Definition: rtinvop.h:124
RTPROCESSINGLIB::RtInvOp::ConstSPtr
QSharedPointer< const RtInvOp > ConstSPtr
Definition: rtinvop.h:125
FIFFLIB::FiffCov
covariance data
Definition: fiff_cov.h:77
MNELIB::MNEInverseOperator
Inverse operator.
Definition: mne_inverse_operator.h:141
RTPROCESSINGLIB::RtInvOp
Real-time inverse operator estimation.
Definition: rtinvop.h:119
RTPROCESSINGLIB::RtInvOpInput
Definition: rtinvop.h:78
RTPROCESINGSHARED_EXPORT
#define RTPROCESINGSHARED_EXPORT
Definition: rtprocessing_global.h:55