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
Linalg class declaration.
FiffProj class declaration.
FiffRawData class declaration.
FiffEvents class declaration.
FiffEvokedSet class declaration.
FiffCov class declaration.
Fiff constants.
MNEBem class declaration.
MNESourceSpaces class declaration.
MNEBemSurface class declaration.
mne library export/import macros.
#define MNESHARED_EXPORT
Definition mne_global.h:52
MNEEpochDataList class declaration.
MNEHemisphere 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:488
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)