v2.0.0
Loading...
Searching...
No Matches
inv_hpi_fit_data.h
Go to the documentation of this file.
1//=============================================================================================================
23
24#ifndef INV_HPI_FIT_DATA_H
25#define INV_HPI_FIT_DATA_H
26
27//=============================================================================================================
28// INCLUDES
29//=============================================================================================================
30
31#include "../inv_global.h"
32#include "inv_hpi_fit.h"
33#include "inv_sensor_set.h"
34
35//=============================================================================================================
36// EIGEN INCLUDES
37//=============================================================================================================
38
39#include <Eigen/Core>
40
41//=============================================================================================================
42// QT INCLUDES
43//=============================================================================================================
44
45#include <QSharedPointer>
46
47//=============================================================================================================
48// FORWARD DECLARATIONS
49//=============================================================================================================
50
51namespace FIFFLIB{
52 class FiffInfo;
53 class FiffCoordTrans;
54 class FiffDigPointSet;
55}
56
57//=============================================================================================================
58// DEFINE NAMESPACE HPILIB
59//=============================================================================================================
60
61namespace INVLIB
62{
63
64//=============================================================================================================
65// Declare all structures to be used
66//=============================================================================================================
73 double error;
74 Eigen::MatrixXd moment;
76};
77
78//=========================================================================================================
85 double base_arr;
86 int idx;
87};
88
89//=============================================================================================================
90// FORWARD DECLARATIONS
91//=============================================================================================================
92
93//=============================================================================================================
104{
105
106public:
107 typedef QSharedPointer<InvHpiFitData> SPtr;
108 typedef QSharedPointer<const InvHpiFitData> ConstSPtr;
109
110 //=========================================================================================================
114 explicit InvHpiFitData();
115
116 //=========================================================================================================
120 void doDipfitConcurrent();
121
122 Eigen::MatrixXd m_coilPos;
123 Eigen::RowVectorXd m_sensorData;
126 Eigen::MatrixXd m_matProjector;
127
130
131protected:
132 //=========================================================================================================
137 Eigen::MatrixXd magnetic_dipole(Eigen::MatrixXd matPos,
138 Eigen::MatrixXd matPnt,
139 Eigen::MatrixXd matOri);
140
141 //=========================================================================================================
150 Eigen::MatrixXd compute_leadfield(const Eigen::MatrixXd& matPos,
151 const InvSensorSet& sensors);
152
153 //=========================================================================================================
160 DipFitError dipfitError(const Eigen::MatrixXd& matPos,
161 const Eigen::MatrixXd& matData,
162 const InvSensorSet& sensors,
163 const Eigen::MatrixXd& matProjectors);
164
165 //=========================================================================================================
169 static bool compare(HPISortStruct a, HPISortStruct b);
170
171 //=========================================================================================================
177 Eigen::MatrixXd fminsearch(const Eigen::MatrixXd& matPos,
178 int iMaxiter,
179 int iMaxfun,
180 int iDisplay,
181 const Eigen::MatrixXd& matData,
182 const Eigen::MatrixXd& matProjectors,
183 const InvSensorSet& sensors,
184 int &iSimplexNumitr);
185};
186
187//=============================================================================================================
188// INLINE DEFINITIONS
189//=============================================================================================================
190} //NAMESPACE
191
192#endif // INV_HPI_FIT_DATA_H
INVLIB library export/import macros, build-info accessors, and namespace docstring for the inverse-so...
#define INVSHARED_EXPORT
Definition inv_global.h:38
HPI (Head Position Indicator) fitting — estimates the MEG dewar-to-head transform from coil-current s...
Compact MEG sensor-geometry container (positions, orientations, integration weights) used by the HPI ...
FIFF file I/O, in-memory data structures and high-level readers/writers.
Inverse source estimation (MNE, dSPM, sLORETA, dipole fitting).
Labelled 4x4 FIFF affine: source frame, destination frame, rotation, translation and cached inverse.
Collection of FiffDigPoint records as parsed from a FIFFB_ISOTRAK block.
Full FIFF measurement info: per-channel descriptors, sampling and filter setup, projectors,...
Definition fiff_info.h:88
Residual error and moment vector from a single magnetic dipole fit iteration.
Eigen::MatrixXd moment
Helper for sorting HPI coil dipole fits by matching each fit to the nearest expected coil position.
Eigen::RowVectorXd m_sensorData
DipFitError dipfitError(const Eigen::MatrixXd &matPos, const Eigen::MatrixXd &matData, const InvSensorSet &sensors, const Eigen::MatrixXd &matProjectors)
QSharedPointer< InvHpiFitData > SPtr
QSharedPointer< const InvHpiFitData > ConstSPtr
Eigen::MatrixXd magnetic_dipole(Eigen::MatrixXd matPos, Eigen::MatrixXd matPnt, Eigen::MatrixXd matOri)
Eigen::MatrixXd m_matProjector
static bool compare(HPISortStruct a, HPISortStruct b)
Eigen::MatrixXd m_coilPos
Eigen::MatrixXd fminsearch(const Eigen::MatrixXd &matPos, int iMaxiter, int iMaxfun, int iDisplay, const Eigen::MatrixXd &matData, const Eigen::MatrixXd &matProjectors, const InvSensorSet &sensors, int &iSimplexNumitr)
Eigen::MatrixXd compute_leadfield(const Eigen::MatrixXd &matPos, const InvSensorSet &sensors)
Stores MEG sensor geometry (positions, orientations, weights, coil count) for a single sensor type.