v2.0.0
Loading...
Searching...
No Matches
mne_source_space.h
Go to the documentation of this file.
1//=============================================================================================================
22
23#ifndef MNESOURCESPACE_H
24#define MNESOURCESPACE_H
25
26//=============================================================================================================
27// INCLUDES
28//=============================================================================================================
29
30#include "mne_global.h"
32
33//=============================================================================================================
34// EIGEN INCLUDES
35//=============================================================================================================
36
37#include <Eigen/Core>
38
39//=============================================================================================================
40// STL INCLUDES
41//=============================================================================================================
42
43#include <memory>
44
45//=============================================================================================================
46// DEFINE NAMESPACE MNELIB
47//=============================================================================================================
48
49namespace MNELIB
50{
51
52//=============================================================================================================
53// FORWARD DECLARATIONS
54//=============================================================================================================
55
56class MNEHemisphere;
57
58//=============================================================================================================
65{
66public:
67 using SPtr = std::shared_ptr<MNESourceSpace>;
68 using ConstSPtr = std::shared_ptr<const MNESourceSpace>;
69 using UPtr = std::unique_ptr<MNESourceSpace>;
70
71 //=========================================================================================================
77 MNESourceSpace(int np = 0);
78
79 //=========================================================================================================
83 ~MNESourceSpace() override;
84
85 //=========================================================================================================
91 virtual MNESourceSpace::SPtr clone() const;
92
93 //=========================================================================================================
97 void enable_all_sources();
98
99 //=========================================================================================================
106 bool is_left_hemi() const;
107
108 //=========================================================================================================
115 qint32 find_source_space_hemi() const;
116
117 //=========================================================================================================
123 void update_inuse(Eigen::VectorXi new_inuse);
124
125 //=========================================================================================================
133
134 //=========================================================================================================
140 int add_patch_stats();
141
142 //=========================================================================================================
148
149 //=========================================================================================================
157 static std::unique_ptr<MNESourceSpace> create_source_space(int np);
158
159 //=========================================================================================================
167 static std::unique_ptr<MNESourceSpace> load_surface(const QString& surf_file,
168 const QString& curv_file);
169
170 //=========================================================================================================
180 static std::unique_ptr<MNESourceSpace> load_surface_geom(const QString& surf_file,
181 const QString& curv_file,
182 bool add_geometry,
183 bool check_too_many_neighbors);
184
185 //=========================================================================================================
200 float grid,
201 float exclude,
202 float mindist);
203
204 //=========================================================================================================
205 // Source-space filtering, I/O, and label helpers (moved from MNESurfaceOrVolume)
206 //=========================================================================================================
207
208 static int filter_source_spaces(const MNESurface& surf,
209 float limit,
210 const FIFFLIB::FiffCoordTrans& mri_head_t,
211 std::vector<std::unique_ptr<MNESourceSpace>>& spaces,
212 QTextStream* filtered);
213
214 static void filter_source_space(FilterThreadArg* arg);
215
216 static int filter_source_spaces(float limit,
217 const QString& bemfile,
218 const FIFFLIB::FiffCoordTrans& mri_head_t,
219 std::vector<std::unique_ptr<MNESourceSpace>>& spaces,
220 QTextStream* filtered,
221 bool use_threads);
222
223 static int read_source_spaces(const QString& name,
224 std::vector<std::unique_ptr<MNESourceSpace>>& spaces);
225
228 std::vector<std::unique_ptr<MNESourceSpace>>& spaces);
229
230 static int restrict_sources_to_labels(std::vector<std::unique_ptr<MNESourceSpace>>& spaces,
231 const QStringList& labels,
232 int nlabel);
233
234 static int read_label(const QString& label,
235 Eigen::VectorXi& sel);
236
237 //=========================================================================================================
246 int writeToStream(FIFFLIB::FiffStream::SPtr& stream, bool selected_only) const;
247
248 //=========================================================================================================
263 static MNEHemisphere icoDownsample(const MNEHemisphere& hemi, int icoGrade);
264
265private:
274 int writeVolumeInfo(FIFFLIB::FiffStream::SPtr& stream, bool selected_only) const;
275};
276
277//=============================================================================================================
278// INLINE DEFINITIONS
279//=============================================================================================================
280} // NAMESPACE MNELIB
281
282#endif // MNESOURCESPACE_H
Discriminated geometry container that can represent either a triangulated surface or a discrete/volum...
MNELIB shared-library export/import macros and library build metadata.
#define MNESHARED_EXPORT
Definition mne_global.h:40
Core MNE data structures (source spaces, source estimates, hemispheres).
Labelled 4x4 FIFF affine: source frame, destination frame, rotation, translation and cached inverse.
QSharedPointer< FiffStream > SPtr
Thread-local arguments for parallel raw data filtering (channel range, filter kernel,...
Hemisphere provides geometry information.
virtual MNESourceSpace::SPtr clone() const
std::unique_ptr< MNESourceSpace > UPtr
static std::unique_ptr< MNESourceSpace > load_surface(const QString &surf_file, const QString &curv_file)
qint32 find_source_space_hemi() const
std::shared_ptr< MNESourceSpace > SPtr
static int restrict_sources_to_labels(std::vector< std::unique_ptr< MNESourceSpace > > &spaces, const QStringList &labels, int nlabel)
static int filter_source_spaces(const MNESurface &surf, float limit, const FIFFLIB::FiffCoordTrans &mri_head_t, std::vector< std::unique_ptr< MNESourceSpace > > &spaces, QTextStream *filtered)
static int read_source_spaces(const QString &name, std::vector< std::unique_ptr< MNESourceSpace > > &spaces)
static std::unique_ptr< MNESourceSpace > create_source_space(int np)
static std::unique_ptr< MNESourceSpace > load_surface_geom(const QString &surf_file, const QString &curv_file, bool add_geometry, bool check_too_many_neighbors)
static MNEHemisphere icoDownsample(const MNEHemisphere &hemi, int icoGrade)
static void filter_source_space(FilterThreadArg *arg)
int writeToStream(FIFFLIB::FiffStream::SPtr &stream, bool selected_only) const
static MNESourceSpace * make_volume_source_space(const MNESurface &surf, float grid, float exclude, float mindist)
std::shared_ptr< const MNESourceSpace > ConstSPtr
int transform_source_space(const FIFFLIB::FiffCoordTrans &t)
static int read_label(const QString &label, Eigen::VectorXi &sel)
static int transform_source_spaces_to(int coord_frame, const FIFFLIB::FiffCoordTrans &t, std::vector< std::unique_ptr< MNESourceSpace > > &spaces)
void update_inuse(Eigen::VectorXi new_inuse)
Lightweight triangulated surface (vertices, triangles, normals).
Definition mne_surface.h:68
MNESurfaceOrVolume()
Constructs the MNE FsSurface or Volume.