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{
53class FiffInfo;
54class FiffCoordTrans;
55class FiffDigPointSet;
56}
57
58//=============================================================================================================
59// DEFINE NAMESPACE HPILIB
60//=============================================================================================================
61
62namespace INVLIB
63{
64
65//=============================================================================================================
66// Declare all structures to be used
67//=============================================================================================================
74{
75 double error;
76 Eigen::MatrixXd moment;
78};
79
80//=========================================================================================================
87{
88 double base_arr;
89 int idx;
90};
91
92//=============================================================================================================
93// FORWARD DECLARATIONS
94//=============================================================================================================
95
96//=============================================================================================================
109{
110public:
111 typedef QSharedPointer<InvHpiFitData> SPtr;
112 typedef QSharedPointer<const InvHpiFitData> ConstSPtr;
113
114 //=========================================================================================================
118 explicit InvHpiFitData();
119
120 //=========================================================================================================
124 void doDipfitConcurrent();
125
126 Eigen::MatrixXd m_coilPos;
127 Eigen::RowVectorXd m_sensorData;
130 Eigen::MatrixXd m_matProjector;
131
134
135protected:
136 //=========================================================================================================
146 Eigen::MatrixXd magnetic_dipole(Eigen::MatrixXd matPos,
147 Eigen::MatrixXd matPnt,
148 Eigen::MatrixXd matOri);
149
150 //=========================================================================================================
163 Eigen::MatrixXd compute_leadfield(const Eigen::MatrixXd& matPos,
164 const InvSensorSet& sensors);
165
166 //=========================================================================================================
179 DipFitError dipfitError(const Eigen::MatrixXd& matPos,
180 const Eigen::MatrixXd& matData,
181 const InvSensorSet& sensors,
182 const Eigen::MatrixXd& matProjectors);
183
184 //=========================================================================================================
192 static bool compare(HPISortStruct a, HPISortStruct b);
193
194 //=========================================================================================================
210 Eigen::MatrixXd fminsearch(const Eigen::MatrixXd& matPos,
211 int iMaxiter,
212 int iMaxfun,
213 int iDisplay,
214 const Eigen::MatrixXd& matData,
215 const Eigen::MatrixXd& matProjectors,
216 const InvSensorSet& sensors,
217 int& iSimplexNumitr);
218};
219
220//=============================================================================================================
221// INLINE DEFINITIONS
222//=============================================================================================================
223} //NAMESPACE
224
225#endif // INV_HPI_FIT_DATA_H
Compact MEG sensor-geometry container (positions, orientations, integration weights) used by the HPI ...
HPI (Head Position Indicator) fitting — estimates the MEG dewar-to-head transform from coil-current s...
INVLIB library export/import macros, build-info accessors, and namespace docstring for the inverse-so...
#define INVSHARED_EXPORT
Definition inv_global.h:38
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:90
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.