v2.0.0
Loading...
Searching...
No Matches
mne.h
Go to the documentation of this file.
1//=============================================================================================================
38
39#ifndef MNE_H
40#define MNE_H
41
42//=============================================================================================================
43// INCLUDES
44//=============================================================================================================
45
46#include "mne_global.h"
47
48#include "mne_hemisphere.h"
49#include "mne_source_spaces.h"
50#include "mne_bem.h"
51#include "mne_bem_surface.h"
52#include "mne_epoch_data_list.h"
53
54#include <fiff/fiff_constants.h>
55#include <fiff/fiff_cov.h>
56#include <fiff/fiff_proj.h>
57#include <fiff/fiff_events.h>
59#include <fiff/fiff_raw_data.h>
60
61#include <math/linalg.h>
62
63//=============================================================================================================
64// QT INCLUDES
65//=============================================================================================================
66
67#include <QMap>
68#include <QList>
69
70//=============================================================================================================
71// DEFINE NAMESPACE MNELIB
72//=============================================================================================================
73
74namespace MNELIB
75{
76
77//=============================================================================================================
78// FORWARD DECLARATIONS
79//=============================================================================================================
80
81//=============================================================================================================
86
88{
89
90public:
91
92 //=========================================================================================================
96 virtual ~MNE()
97 { }
98
99 //=========================================================================================================
113 inline static Eigen::VectorXd combine_xyz(const Eigen::VectorXd& vec)
114 {
116 }
117
118 //=========================================================================================================
132 inline static qint32 find_source_space_hemi(MNEHemisphere& p_Hemisphere)
133 {
134 return p_Hemisphere.find_source_space_hemi();
135 }
136
137 //=========================================================================================================
151 static inline qint32 get_current_comp(FIFFLIB::FiffInfo* info)
152 {
153 return info->get_current_comp();
154 }
155
156 //=========================================================================================================
175 static inline Eigen::SparseMatrix<double> make_block_diag(const Eigen::MatrixXd &A, qint32 n)
176 {
178 }
179
180 //=========================================================================================================
198 inline static bool make_compensator(const FIFFLIB::FiffInfo& info,
202 bool exclude_comp_chs = false)
203 {
204 return info.make_compensator(from, to, ctf_comp, exclude_comp_chs);
205 }
206
207 //=========================================================================================================
227 inline static FIFFLIB::fiff_int_t make_projector(const QList<FIFFLIB::FiffProj>& projs,
228 const QStringList& ch_names,
229 Eigen::MatrixXd& proj,
230 const QStringList& bads = FIFFLIB::defaultQStringList,
231 Eigen::MatrixXd& U = FIFFLIB::defaultMatrixXd)
232 {
234 ch_names,
235 proj,
236 bads,
237 U);
238 }
239
240 //=========================================================================================================
255 static inline qint32 make_projector(FIFFLIB::FiffInfo& info,
256 Eigen::MatrixXd& proj)
257 {
258 return info.make_projector(proj);
259 }
260
261 //=========================================================================================================
273 static bool patch_info(MNEHemisphere &p_Hemisphere)
274 {
275 return p_Hemisphere.compute_patch_info();
276 }
277
278 inline static bool read_events(const QString &t_sEventName,
279 const QString &t_fileRawName,
280 Eigen::MatrixXi& events)
281 {
282 FIFFLIB::FiffEvents fiffEvents;
283 if (!FIFFLIB::FiffEvents::read(t_sEventName, t_fileRawName, fiffEvents))
284 return false;
285 events = fiffEvents.events;
286 return true;
287 }
288
289 //=========================================================================================================
300 inline static bool read_events_from_fif(QIODevice &p_IODevice,
301 Eigen::MatrixXi& eventlist)
302 {
303 FIFFLIB::FiffEvents fiffEvents;
304 if (!FIFFLIB::FiffEvents::read_from_fif(p_IODevice, fiffEvents))
305 return false;
306 eventlist = fiffEvents.events;
307 return true;
308 }
309
310 //=========================================================================================================
321 inline static bool read_events_from_ascii(QIODevice &p_IODevice,
322 Eigen::MatrixXi& eventlist)
323 {
324 FIFFLIB::FiffEvents fiffEvents;
325 if (!FIFFLIB::FiffEvents::read_from_ascii(p_IODevice, fiffEvents))
326 return false;
327 eventlist = fiffEvents.events;
328 return true;
329 }
330
331 //=========================================================================================================
342 inline static bool write_events_to_fif(QIODevice &p_IODevice,
343 const Eigen::MatrixXi& eventlist)
344 {
345 FIFFLIB::FiffEvents fiffEvents;
346 fiffEvents.events = eventlist;
347 return fiffEvents.write_to_fif(p_IODevice);
348 }
349
350 //=========================================================================================================
362 inline static bool write_events_to_ascii(QIODevice &p_IODevice,
363 const Eigen::MatrixXi& eventlist,
364 float sfreq = 0.0f)
365 {
366 FIFFLIB::FiffEvents fiffEvents;
367 fiffEvents.events = eventlist;
368 return fiffEvents.write_to_ascii(p_IODevice, sfreq);
369 }
370
371 //=========================================================================================================
395 const Eigen::MatrixXi &events,
396 const QList<int> &eventCodes,
397 float tmin,
398 float tmax,
399 float bmin = 0.0f,
400 float bmax = 0.0f,
401 bool doBaseline = false,
402 bool removeMean = true)
403 {
404 return FIFFLIB::FiffCov::compute_from_epochs(raw, events, eventCodes, tmin, tmax, bmin, bmax, doBaseline, removeMean);
405 }
406
407 //=========================================================================================================
428 inline static QList<FIFFLIB::FiffProj> compute_proj(const FIFFLIB::FiffRawData &raw,
429 const Eigen::MatrixXi &events,
430 int eventCode,
431 float tmin,
432 float tmax,
433 int nGrad,
434 int nMag,
435 int nEeg,
436 const QMap<QString,double> &mapReject = QMap<QString,double>())
437 {
438 return FIFFLIB::FiffProj::compute_from_raw(raw, events, eventCode, tmin, tmax, nGrad, nMag, nEeg, mapReject);
439 }
440
441 //=========================================================================================================
461 inline static bool save_raw(const FIFFLIB::FiffRawData &raw,
462 QIODevice &p_IODevice,
463 const Eigen::RowVectorXi &picks = Eigen::RowVectorXi(),
464 int decim = 1,
465 int from = -1,
466 int to = -1)
467 {
468 return raw.save(p_IODevice, picks, decim, from, to);
469 }
470
471 static void setup_compensators(FIFFLIB::FiffRawData& raw,
472 FIFFLIB::fiff_int_t dest_comp,
473 bool keep_comp);
474
475 //=========================================================================================================
492 inline static bool read_cov(FIFFLIB::FiffStream::SPtr& p_pStream,
493 const FIFFLIB::FiffDirNode::SPtr& p_Node,
494 FIFFLIB::fiff_int_t cov_kind,
495 FIFFLIB::FiffCov& p_covData)
496 {
497 return p_pStream->read_cov(p_Node,
498 cov_kind,
499 p_covData);
500 }
501
502 //=========================================================================================================
519 bool add_geom,
520 MNESourceSpaces& p_SourceSpace)
521 {
522 return MNESourceSpaces::readFromStream(p_pStream,
523 add_geom,
524 p_SourceSpace);
525 }
526
527 //ToDo FiffChInfoList Class
528 //=========================================================================================================
545 static QList<FIFFLIB::FiffChInfo> set_current_comp(QList<FIFFLIB::FiffChInfo>& chs,
547 {
549 value);
550 }
551
552 //=========================================================================================================
568 static inline bool transform_source_space_to(MNESourceSpaces& p_pMNESourceSpaces,
571 {
572 return p_pMNESourceSpaces.transform_source_space_to(dest,
573 trans);
574 }
575
576 //=========================================================================================================
590 {
592 }
593};
594} // NAMESPACE
595
596#endif // MNE_H
Fiff constants.
FiffRawData class declaration.
FiffProj class declaration.
FiffCov class declaration.
FiffEvokedSet class declaration.
FiffEvents class declaration.
MNESourceSpaces class declaration.
mne library export/import macros.
#define MNESHARED_EXPORT
Definition mne_global.h:52
MNEHemisphere class declaration.
MNEEpochDataList class declaration.
MNEBem class declaration.
MNEBemSurface class declaration.
Linalg class declaration.
Core MNE data structures (source spaces, source estimates, hemispheres).
qint32 fiff_int_t
Definition fiff_types.h:89
Coordinate transformation description.
covariance data
Definition fiff_cov.h:85
static FiffCov compute_from_epochs(const FiffRawData &raw, const Eigen::MatrixXi &events, const QList< int > &eventCodes, float tmin, float tmax, float bmin=0.0f, float bmax=0.0f, bool doBaseline=false, bool removeMean=true, unsigned int ignoreMask=0, float delay=0.0f)
Definition fiff_cov.cpp:487
CTF software compensation data.
QSharedPointer< FiffDirNode > SPtr
FIFF event container with reading, writing and detection.
Definition fiff_events.h:86
bool write_to_ascii(QIODevice &p_IODevice, float sfreq=0.0f) const
static bool read_from_fif(QIODevice &p_IODevice, FiffEvents &p_Events)
bool write_to_fif(QIODevice &p_IODevice) const
static bool read_from_ascii(QIODevice &p_IODevice, FiffEvents &p_Events)
Eigen::MatrixXi events
static bool read(const QString &t_sEventName, const QString &t_fileRawName, FiffEvents &p_Events)
FIFF measurement file information.
Definition fiff_info.h:86
void set_current_comp(fiff_int_t value)
Definition fiff_info.h:299
qint32 make_projector(Eigen::MatrixXd &proj) const
Definition fiff_info.h:285
qint32 get_current_comp()
bool make_compensator(fiff_int_t from, fiff_int_t to, FiffCtfComp &ctf_comp, bool exclude_comp_chs=false) const
static QList< FiffProj > compute_from_raw(const FiffRawData &raw, const Eigen::MatrixXi &events, int eventCode, float tmin, float tmax, int nGrad, int nMag, int nEeg, const QMap< QString, double > &mapReject=QMap< QString, double >())
static fiff_int_t make_projector(const QList< FiffProj > &projs, const QStringList &ch_names, Eigen::MatrixXd &proj, const QStringList &bads=defaultQStringList, Eigen::MatrixXd &U=defaultMatrixXd)
FIFF raw measurement data.
bool save(QIODevice &p_IODevice, const Eigen::RowVectorXi &picks=Eigen::RowVectorXi(), int decim=1, int from=-1, int to=-1) const
QSharedPointer< FiffStream > SPtr
static Eigen::VectorXd combine_xyz(const Eigen::VectorXd &vec)
Definition linalg.cpp:64
static Eigen::SparseMatrix< double > make_block_diag(const Eigen::MatrixXd &A, qint32 n)
Definition linalg.cpp:205
The MNE class provides wrapper functions to stay consistent with mne matlab toolbox.
Definition mne.h:88
static bool write_events_to_fif(QIODevice &p_IODevice, const Eigen::MatrixXi &eventlist)
Definition mne.h:342
static qint32 make_projector(FIFFLIB::FiffInfo &info, Eigen::MatrixXd &proj)
Definition mne.h:255
static qint32 get_current_comp(FIFFLIB::FiffInfo *info)
Definition mne.h:151
static bool read_events_from_ascii(QIODevice &p_IODevice, Eigen::MatrixXi &eventlist)
Definition mne.h:321
static bool make_compensator(const FIFFLIB::FiffInfo &info, FIFFLIB::fiff_int_t from, FIFFLIB::fiff_int_t to, FIFFLIB::FiffCtfComp &ctf_comp, bool exclude_comp_chs=false)
Definition mne.h:198
static FIFFLIB::fiff_int_t make_projector(const QList< FIFFLIB::FiffProj > &projs, const QStringList &ch_names, Eigen::MatrixXd &proj, const QStringList &bads=FIFFLIB::defaultQStringList, Eigen::MatrixXd &U=FIFFLIB::defaultMatrixXd)
Definition mne.h:227
static QList< FIFFLIB::FiffChInfo > set_current_comp(QList< FIFFLIB::FiffChInfo > &chs, FIFFLIB::fiff_int_t value)
Definition mne.h:545
static bool save_raw(const FIFFLIB::FiffRawData &raw, QIODevice &p_IODevice, const Eigen::RowVectorXi &picks=Eigen::RowVectorXi(), int decim=1, int from=-1, int to=-1)
Definition mne.h:461
static bool transform_source_space_to(MNESourceSpaces &p_pMNESourceSpaces, FIFFLIB::fiff_int_t dest, FIFFLIB::FiffCoordTrans &trans)
Definition mne.h:568
virtual ~MNE()
Definition mne.h:96
static void transpose_named_matrix(FIFFLIB::FiffNamedMatrix &mat)
Definition mne.h:589
static bool patch_info(MNEHemisphere &p_Hemisphere)
Definition mne.h:273
static bool read_source_spaces(FIFFLIB::FiffStream::SPtr &p_pStream, bool add_geom, MNESourceSpaces &p_SourceSpace)
Definition mne.h:518
static bool write_events_to_ascii(QIODevice &p_IODevice, const Eigen::MatrixXi &eventlist, float sfreq=0.0f)
Definition mne.h:362
static Eigen::VectorXd combine_xyz(const Eigen::VectorXd &vec)
Definition mne.h:113
static bool read_cov(FIFFLIB::FiffStream::SPtr &p_pStream, const FIFFLIB::FiffDirNode::SPtr &p_Node, FIFFLIB::fiff_int_t cov_kind, FIFFLIB::FiffCov &p_covData)
Definition mne.h:492
static qint32 find_source_space_hemi(MNEHemisphere &p_Hemisphere)
Definition mne.h:132
static bool read_events(const QString &t_sEventName, const QString &t_fileRawName, Eigen::MatrixXi &events)
Definition mne.h:278
static bool read_events_from_fif(QIODevice &p_IODevice, Eigen::MatrixXi &eventlist)
Definition mne.h:300
static FIFFLIB::FiffCov compute_epoch_covariance(const FIFFLIB::FiffRawData &raw, const Eigen::MatrixXi &events, const QList< int > &eventCodes, float tmin, float tmax, float bmin=0.0f, float bmax=0.0f, bool doBaseline=false, bool removeMean=true)
Definition mne.h:394
static QList< FIFFLIB::FiffProj > compute_proj(const FIFFLIB::FiffRawData &raw, const Eigen::MatrixXi &events, int eventCode, float tmin, float tmax, int nGrad, int nMag, int nEeg, const QMap< QString, double > &mapReject=QMap< QString, double >())
Definition mne.h:428
static Eigen::SparseMatrix< double > make_block_diag(const Eigen::MatrixXd &A, qint32 n)
Definition mne.h:175
Hemisphere provides geometry information.
qint32 find_source_space_hemi() const
Source Space descritpion.
bool transform_source_space_to(FIFFLIB::fiff_int_t dest, FIFFLIB::FiffCoordTrans &trans)
static bool readFromStream(FIFFLIB::FiffStream::SPtr &p_pStream, bool add_geom, MNESourceSpaces &p_SourceSpace)