v2.0.0
Loading...
Searching...
No Matches
rt_hpis.h
Go to the documentation of this file.
1//=============================================================================================================
26
27#ifndef RT_HPIS_RTPROCESSING_H
28#define RT_HPIS_RTPROCESSING_H
29
30//=============================================================================================================
31// INCLUDES
32//=============================================================================================================
33
34#include "../dsp_global.h"
37
38//=============================================================================================================
39// EIGEN INCLUDES
40//=============================================================================================================
41
42#include <Eigen/Core>
43
44//=============================================================================================================
45// QT INCLUDES
46//=============================================================================================================
47
48#include <QThread>
49#include <QMutex>
50#include <QSharedPointer>
51#include <QVector>
52
53//=============================================================================================================
54// FORWARD DECLARATIONS
55//=============================================================================================================
56
57namespace FIFFLIB
58{
59class FiffInfo;
60}
61
62namespace INVLIB
63{
64class InvSensorSet;
65class InvHpiFit;
66struct HpiFitResult;
68}
69
70//=============================================================================================================
71// DEFINE NAMESPACE RTPROCESSINGLIB
72//=============================================================================================================
73
74namespace RTPROCESSINGLIB
75{
76
77//=============================================================================================================
85class DSPSHARED_EXPORT RtHpiWorker : public QObject
86{
87 Q_OBJECT
88
89public:
90 //=========================================================================================================
96 explicit RtHpiWorker(const INVLIB::InvSensorSet sensorSet);
97
98 //=========================================================================================================
107 void doWork(const Eigen::MatrixXd& matData,
108 const Eigen::MatrixXd& matProjectors,
109 const INVLIB::InvHpiModelParameters& hpiModelParameters,
110 const Eigen::MatrixXd& matCoilsHead);
111
112protected:
113 //=========================================================================================================
114 QSharedPointer<INVLIB::InvHpiFit> m_pHpiFit;
115
116signals:
117 void resultReady(const INVLIB::HpiFitResult& fitResult);
118};
119
120//=============================================================================================================
128class DSPSHARED_EXPORT RtHpi : public QObject
129{
130 Q_OBJECT
131
132public:
133 typedef QSharedPointer<RtHpi> SPtr;
134 typedef QSharedPointer<const RtHpi> ConstSPtr;
135
136 //=========================================================================================================
143 explicit RtHpi(const INVLIB::InvSensorSet sensorSet,
144 QObject* parent = 0);
145
146 //=========================================================================================================
150 ~RtHpi();
151
152 //=========================================================================================================
158 void append(const Eigen::MatrixXd& data);
159
160 //=========================================================================================================
166 void setModelParameters(INVLIB::InvHpiModelParameters hpiModelParameters);
167
168 //=========================================================================================================
174 void setProjectionMatrix(const Eigen::MatrixXd& matProjectors);
175
176 //=========================================================================================================
182 void setHpiDigitizer(const Eigen::MatrixXd& matCoilsHead);
183
184 //=========================================================================================================
188 void restart();
189
190 //=========================================================================================================
194 void stop();
195
196protected:
197 //=========================================================================================================
203 void handleResults(const INVLIB::HpiFitResult& fitResult);
204
206 Eigen::MatrixXd m_matCoilsHead;
207 Eigen::MatrixXd m_matProjectors;
210
211signals:
213 void operate(const Eigen::MatrixXd& matData,
214 const Eigen::MatrixXd& matProjectors,
215 const INVLIB::InvHpiModelParameters& hpiModelParameters,
216 const Eigen::MatrixXd& matCoilsHead);
217};
218
219//=============================================================================================================
220// INLINE DEFINITIONS
221//=============================================================================================================
222} // NAMESPACE
223
224#endif // RT_HPIS_RTPROCESSING_H
Sinusoidal HPI signal model — builds and inverts the regressor matrix that extracts coil amplitudes f...
Compact MEG sensor-geometry container (positions, orientations, integration weights) used by the HPI ...
Export/import macros and namespace declaration for the DSP library.
#define DSPSHARED_EXPORT
Definition dsp_global.h:50
FIFF file I/O, in-memory data structures and high-level readers/writers.
Inverse source estimation (MNE, dSPM, sLORETA, dipole fitting).
RtHpiWorker(const INVLIB::InvSensorSet sensorSet)
Definition rt_hpis.cpp:46
void doWork(const Eigen::MatrixXd &matData, const Eigen::MatrixXd &matProjectors, const INVLIB::InvHpiModelParameters &hpiModelParameters, const Eigen::MatrixXd &matCoilsHead)
Definition rt_hpis.cpp:51
void resultReady(const INVLIB::HpiFitResult &fitResult)
QSharedPointer< INVLIB::InvHpiFit > m_pHpiFit
Definition rt_hpis.h:114
INVLIB::InvSensorSet m_sensorSet
Definition rt_hpis.h:208
QSharedPointer< const RtHpi > ConstSPtr
Definition rt_hpis.h:134
void newHpiFitResultAvailable(const INVLIB::HpiFitResult &fitResult)
INVLIB::InvHpiModelParameters m_modelParameters
Definition rt_hpis.h:209
QSharedPointer< RtHpi > SPtr
Definition rt_hpis.h:133
Eigen::MatrixXd m_matCoilsHead
Definition rt_hpis.h:206
void setHpiDigitizer(const Eigen::MatrixXd &matCoilsHead)
Definition rt_hpis.cpp:139
void append(const Eigen::MatrixXd &data)
Definition rt_hpis.cpp:111
RtHpi(const INVLIB::InvSensorSet sensorSet, QObject *parent=0)
Definition rt_hpis.cpp:78
void setProjectionMatrix(const Eigen::MatrixXd &matProjectors)
Definition rt_hpis.cpp:132
Eigen::MatrixXd m_matProjectors
Definition rt_hpis.h:207
void setModelParameters(INVLIB::InvHpiModelParameters hpiModelParameters)
Definition rt_hpis.cpp:125
void handleResults(const INVLIB::HpiFitResult &fitResult)
Definition rt_hpis.cpp:146
void operate(const Eigen::MatrixXd &matData, const Eigen::MatrixXd &matProjectors, const INVLIB::InvHpiModelParameters &hpiModelParameters, const Eigen::MatrixXd &matCoilsHead)
Full FIFF measurement info: per-channel descriptors, sampling and filter setup, projectors,...
Definition fiff_info.h:90
Complete HPI fit output: per-coil dipole parameters, head-to-device transform, fit error,...
Drives one HPI fit (per-coil dipole localisation, coil ordering, dewar-to-head transform).
Configuration parameters for the HPI signal model (line frequency, coil frequencies,...
Stores MEG sensor geometry (positions, orientations, weights, coil count) for a single sensor type.