v2.0.0
Loading...
Searching...
No Matches
sensorfieldmapper.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef SENSORFIELDMAPPER_H
36#define SENSORFIELDMAPPER_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
43
44#include "core/viewstate.h"
45
46#include <fiff/fiff_evoked.h>
48
49#include <Eigen/Core>
50#include <QMap>
51#include <QVector>
52#include <QSharedPointer>
53#include <QString>
54#include <memory>
55
56class BrainSurface;
57
58//=============================================================================================================
74{
75public:
76 //=========================================================================================================
80 SensorFieldMapper() = default;
81
82 //=========================================================================================================
91
92 //=========================================================================================================
96 bool isLoaded() const { return m_loaded; }
97
98 //=========================================================================================================
104 void setTimePoint(int tp) { m_timePoint = tp; }
105
109 int timePoint() const { return m_timePoint; }
110
111 //=========================================================================================================
118 void setMegFieldMapOnHead(bool onHead) { m_megOnHead = onHead; }
119
120 bool megFieldMapOnHead() const { return m_megOnHead; }
121
122 //=========================================================================================================
128 void setColormap(const QString &name) { m_colormap = name; }
129
130 const QString &colormap() const { return m_colormap; }
131
132 //=========================================================================================================
136 const FIFFLIB::FiffEvoked &evoked() const { return m_evoked; }
137
138 //=========================================================================================================
147 bool hasMappingFor(const FIFFLIB::FiffEvoked &newEvoked) const;
148
152 const QVector<int> &megPick() const { return m_megPick; }
153
157 const QVector<int> &eegPick() const { return m_eegPick; }
158
162 QSharedPointer<Eigen::MatrixXf> megMapping() const { return m_megMapping; }
163
167 QSharedPointer<Eigen::MatrixXf> eegMapping() const { return m_eegMapping; }
168
169 //=========================================================================================================
182 bool buildMapping(const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces,
183 const FIFFLIB::FiffCoordTrans &headToMriTrans,
184 bool applySensorTrans);
185
186 //=========================================================================================================
197 void apply(QMap<QString, std::shared_ptr<BrainSurface>> &surfaces,
198 const SubView &singleView,
199 const QVector<SubView> &subViews);
200
201 //=========================================================================================================
205 const QString &megSurfaceKey() const { return m_megSurfaceKey; }
206
210 const QString &eegSurfaceKey() const { return m_eegSurfaceKey; }
211
212 //=========================================================================================================
213 // ── Static utilities ───────────────────────────────────────────────
214
221 static QString findHeadSurfaceKey(const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces);
222
226 static QString findHelmetSurfaceKey(const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces);
227
231 static float contourStep(float minVal, float maxVal, int targetTicks);
232
246 static Eigen::Vector3f fitSphereOrigin(const FIFFLIB::FiffInfo &info,
247 float *radius = nullptr);
248
265 void computeNormRange();
266
267private:
268 //=========================================================================================================
269 // ── Contour surface generation ─────────────────────────────────────
270
283 void updateContourSurfaces(QMap<QString, std::shared_ptr<BrainSurface>> &surfaces,
284 const QString &prefix,
285 const BrainSurface &surface,
286 const QVector<float> &values,
287 float step,
288 bool visible);
289
290 //=========================================================================================================
291 // ── Internal data ──────────────────────────────────────────────────
292
293 FIFFLIB::FiffEvoked m_evoked;
294 bool m_loaded = false;
295 int m_timePoint = 0;
296 bool m_megOnHead = false;
297 QString m_colormap = QStringLiteral("MNE");
298
299 QString m_megSurfaceKey;
300 QString m_eegSurfaceKey;
301 QString m_megContourPrefix = QStringLiteral("sens_contour_meg");
302 QString m_eegContourPrefix = QStringLiteral("sens_contour_eeg");
303
304 QVector<int> m_megPick;
305 QVector<int> m_eegPick;
306 QVector<Eigen::Vector3f> m_megPositions;
307 QVector<Eigen::Vector3f> m_eegPositions;
308 QSharedPointer<Eigen::MatrixXf> m_megMapping;
309 QSharedPointer<Eigen::MatrixXf> m_eegMapping;
310
311 float m_megVmax = 0.0f;
312 float m_eegVmax = 0.0f;
313};
314
315#endif // SENSORFIELDMAPPER_H
FiffEvoked class declaration.
FiffCoordTrans class declaration.
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
ViewState declarations — per-view data structures and conversion helpers.
Viewport subdivision holding its own camera, projection, and scissor rectangle.
Definition viewstate.h:148
Renderable cortical surface mesh with per-vertex color, curvature data, and GPU buffer management.
void setMegFieldMapOnHead(bool onHead)
QSharedPointer< Eigen::MatrixXf > megMapping() const
const QString & colormap() const
SensorFieldMapper()=default
const QString & megSurfaceKey() const
const QVector< int > & eegPick() const
QSharedPointer< Eigen::MatrixXf > eegMapping() const
const QVector< int > & megPick() const
void setTimePoint(int tp)
const FIFFLIB::FiffEvoked & evoked() const
void setColormap(const QString &name)
bool megFieldMapOnHead() const
const QString & eegSurfaceKey() const
void setEvoked(const FIFFLIB::FiffEvoked &evoked)
Coordinate transformation description.
FIFF measurement file information.
Definition fiff_info.h:85