v2.0.0
Loading...
Searching...
No Matches
geometryinfo.h
Go to the documentation of this file.
1//=============================================================================================================
30
31#ifndef GEOMETRYINFO_H
32#define GEOMETRYINFO_H
33
34//=============================================================================================================
35// INCLUDES
36//=============================================================================================================
37
38#include "../disp3D_global.h"
39
40#include <fiff/fiff_evoked.h>
41
42//=============================================================================================================
43// STL INCLUDES
44//=============================================================================================================
45
46#include <atomic>
47#include <limits>
48#include <functional>
49
50//=============================================================================================================
51// QT INCLUDES
52//=============================================================================================================
53
54#include <QSharedPointer>
55#include <QVector>
56#include <vector>
57
58//=============================================================================================================
59// EIGEN INCLUDES
60//=============================================================================================================
61
62#include <Eigen/Core>
63#include <Eigen/Sparse>
64
65//=============================================================================================================
66// DEFINE NAMESPACE
67//=============================================================================================================
68
69namespace DISP3DLIB
70{
71
72#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
73
74//=============================================================================================================
82
84{
85public:
86 typedef QSharedPointer<GeometryInfo> SPtr;
87 typedef QSharedPointer<const GeometryInfo> ConstSPtr;
88
89 GeometryInfo() = delete;
90
91 //=========================================================================================================
101 static QSharedPointer<Eigen::MatrixXd> scdc(const Eigen::MatrixX3f& matVertices,
102 const std::vector<Eigen::VectorXi>& vecNeighborVertices,
103 Eigen::VectorXi& vecVertSubset,
104 double dCancelDist = FLOAT_INFINITY);
105
106 //=========================================================================================================
122 static QSharedPointer<Eigen::SparseMatrix<float>> scdcInterpolationMat(
123 const Eigen::MatrixX3f& matVertices,
124 const std::vector<Eigen::VectorXi>& vecNeighborVertices,
125 const Eigen::VectorXi& vecVertSubset,
126 double (*interpolationFunction)(double),
127 double dCancelDist,
128 std::function<void(int, int)> progressCallback = nullptr,
129 const std::atomic<bool>* cancelledFlag = nullptr);
130
131 //=========================================================================================================
139 static Eigen::VectorXi projectSensors(const Eigen::MatrixX3f& matVertices,
140 const Eigen::MatrixX3f& matSensorPositions);
141
142 //=========================================================================================================
151 static Eigen::VectorXi filterBadChannels(QSharedPointer<Eigen::MatrixXd> matDistanceTable,
152 const FIFFLIB::FiffInfo& fiffInfo,
153 qint32 iSensorType);
154
155protected:
156 static inline double squared(double dBase);
157
158 static Eigen::VectorXi nearestNeighbor(const Eigen::MatrixX3f& matVertices,
159 const Eigen::MatrixX3f& matSensorPositions,
160 qint32 iBegin,
161 qint32 iEnd);
162
163 static void iterativeDijkstra(QSharedPointer<Eigen::MatrixXd> matOutputDistMatrix,
164 const Eigen::MatrixX3f& matVertices,
165 const std::vector<Eigen::VectorXi>& vecNeighborVertices,
166 const Eigen::VectorXi& vecVertSubset,
167 qint32 iBegin,
168 qint32 iEnd,
169 double dCancelDistance);
170};
171
172//=============================================================================================================
173// INLINE DEFINITIONS
174//=============================================================================================================
175
176double GeometryInfo::squared(double dBase)
177{
178 return dBase * dBase;
179}
180
181} // namespace DISP3DLIB
182
183#endif // GEOMETRYINFO_H
Single averaged evoked response: time axis, samples, baseline, channel info and processing history.
Library export/import macros and namespace marker for the disp3D library.
#define DISP3DSHARED_EXPORT
#define FLOAT_INFINITY
3-D brain visualisation using the Qt RHI rendering backend.
static QSharedPointer< Eigen::SparseMatrix< float > > scdcInterpolationMat(const Eigen::MatrixX3f &matVertices, const std::vector< Eigen::VectorXi > &vecNeighborVertices, const Eigen::VectorXi &vecVertSubset, double(*interpolationFunction)(double), double dCancelDist, std::function< void(int, int)> progressCallback=nullptr, const std::atomic< bool > *cancelledFlag=nullptr)
scdcInterpolationMat Computes geodesic distances (SCDC) and builds the sparse interpolation matrix in...
static Eigen::VectorXi nearestNeighbor(const Eigen::MatrixX3f &matVertices, const Eigen::MatrixX3f &matSensorPositions, qint32 iBegin, qint32 iEnd)
QSharedPointer< GeometryInfo > SPtr
QSharedPointer< const GeometryInfo > ConstSPtr
static Eigen::VectorXi filterBadChannels(QSharedPointer< Eigen::MatrixXd > matDistanceTable, const FIFFLIB::FiffInfo &fiffInfo, qint32 iSensorType)
filterBadChannels Filters bad channels from distance table.
static void iterativeDijkstra(QSharedPointer< Eigen::MatrixXd > matOutputDistMatrix, const Eigen::MatrixX3f &matVertices, const std::vector< Eigen::VectorXi > &vecNeighborVertices, const Eigen::VectorXi &vecVertSubset, qint32 iBegin, qint32 iEnd, double dCancelDistance)
static double squared(double dBase)
static Eigen::VectorXi projectSensors(const Eigen::MatrixX3f &matVertices, const Eigen::MatrixX3f &matSensorPositions)
projectSensors Calculates the nearest neighbor vertex to each sensor.
static QSharedPointer< Eigen::MatrixXd > scdc(const Eigen::MatrixX3f &matVertices, const std::vector< Eigen::VectorXi > &vecNeighborVertices, Eigen::VectorXi &vecVertSubset, double dCancelDist=FLOAT_INFINITY)
scdc Calculates surface constrained distances on a mesh.
Full FIFF measurement info: per-channel descriptors, sampling and filter setup, projectors,...
Definition fiff_info.h:90