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 class FiffInfo;
59}
60
61namespace INVLIB {
62 class InvSensorSet;
63 class InvHpiFit;
64 struct HpiFitResult;
66}
67
68//=============================================================================================================
69// DEFINE NAMESPACE RTPROCESSINGLIB
70//=============================================================================================================
71
72namespace RTPROCESSINGLIB
73{
74
75//=============================================================================================================
81class DSPSHARED_EXPORT RtHpiWorker : public QObject
82{
83 Q_OBJECT
84
85public:
86
87 //=========================================================================================================
93 explicit RtHpiWorker(const INVLIB::InvSensorSet sensorSet);
94
95 //=========================================================================================================
104 void doWork(const Eigen::MatrixXd& matData,
105 const Eigen::MatrixXd& matProjectors,
106 const INVLIB::InvHpiModelParameters& hpiModelParameters,
107 const Eigen::MatrixXd& matCoilsHead);
108
109protected:
110 //=========================================================================================================
111 QSharedPointer<INVLIB::InvHpiFit> m_pHpiFit;
112
113signals:
114 void resultReady(const INVLIB::HpiFitResult &fitResult);
115};
116
117//=============================================================================================================
123class DSPSHARED_EXPORT RtHpi : public QObject
124{
125 Q_OBJECT
126
127public:
128 typedef QSharedPointer<RtHpi> SPtr;
129 typedef QSharedPointer<const RtHpi> ConstSPtr;
130
131 //=========================================================================================================
138 explicit RtHpi(const INVLIB::InvSensorSet sensorSet,
139 QObject *parent = 0);
140
141 //=========================================================================================================
145 ~RtHpi();
146
147 //=========================================================================================================
153 void append(const Eigen::MatrixXd &data);
154
155 //=========================================================================================================
161 void setModelParameters(INVLIB::InvHpiModelParameters hpiModelParameters);
162
163 //=========================================================================================================
169 void setProjectionMatrix(const Eigen::MatrixXd& matProjectors);
170
171 //=========================================================================================================
177 void setHpiDigitizer(const Eigen::MatrixXd& matCoilsHead);
178
179 //=========================================================================================================
183 void restart();
184
185 //=========================================================================================================
189 void stop();
190
191protected:
192 //=========================================================================================================
196 void handleResults(const INVLIB::HpiFitResult &fitResult);
197
199 Eigen::MatrixXd m_matCoilsHead;
200 Eigen::MatrixXd m_matProjectors;
203
204signals:
206 void operate(const Eigen::MatrixXd& matData,
207 const Eigen::MatrixXd& matProjectors,
208 const INVLIB::InvHpiModelParameters& hpiModelParameters,
209 const Eigen::MatrixXd& matCoilsHead);
210};
211
212//=============================================================================================================
213// INLINE DEFINITIONS
214//=============================================================================================================
215} // NAMESPACE
216
217#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:111
INVLIB::InvSensorSet m_sensorSet
Definition rt_hpis.h:201
QSharedPointer< const RtHpi > ConstSPtr
Definition rt_hpis.h:129
void newHpiFitResultAvailable(const INVLIB::HpiFitResult &fitResult)
INVLIB::InvHpiModelParameters m_modelParameters
Definition rt_hpis.h:202
QSharedPointer< RtHpi > SPtr
Definition rt_hpis.h:128
Eigen::MatrixXd m_matCoilsHead
Definition rt_hpis.h:199
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:200
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:88
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.