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
49#include "mne_forwardsolution.h"
50#include "mne_hemisphere.h"
51#include "mne_source_spaces.h"
52#include "mne_bem.h"
53#include "mne_bem_surface.h"
54#include "mne_epoch_data_list.h"
55
56#include <fiff/fiff_constants.h>
57#include <fiff/fiff_cov.h>
58#include <fiff/fiff_proj.h>
59#include <fiff/fiff_events.h>
61#include <fiff/fiff_raw_data.h>
62
63#include <utils/mnemath.h>
64
65//=============================================================================================================
66// QT INCLUDES
67//=============================================================================================================
68
69#include <QMap>
70#include <QList>
71
72//=============================================================================================================
73// DEFINE NAMESPACE MNELIB
74//=============================================================================================================
75
76namespace MNELIB
77{
78
79//=============================================================================================================
80// FORWARD DECLARATIONS
81//=============================================================================================================
82
83//=============================================================================================================
88
90{
91
92public:
93
94 //=========================================================================================================
98 virtual ~MNE()
99 { }
100
101 //=========================================================================================================
115 inline static Eigen::VectorXd* combine_xyz(const Eigen::VectorXd& vec)
116 {
118 }
119
120 //=========================================================================================================
128 // static inline Eigen::MatrixXd extract_block_diag(MatrixXd& A, qint32 n);
129
130 //=========================================================================================================
144 inline static qint32 find_source_space_hemi(MNEHemisphere& p_Hemisphere)
145 {
146 return p_Hemisphere.find_source_space_hemi();
147 }
148
149 //=========================================================================================================
163 static inline qint32 get_current_comp(FIFFLIB::FiffInfo* info)
164 {
165 return info->get_current_comp();
166 }
167
168 //ToDo Why is make_block_diag part of MNEForwardSolution - restructure this
169 //=========================================================================================================
188 static inline Eigen::SparseMatrix<double>* make_block_diag(const Eigen::MatrixXd &A, qint32 n)
189 {
191 }
192
193 //=========================================================================================================
211 inline static bool make_compensator(const FIFFLIB::FiffInfo& info,
215 bool exclude_comp_chs = false)
216 {
217 return info.make_compensator(from, to, ctf_comp, exclude_comp_chs);
218 }
219
220 //=========================================================================================================
240 inline static FIFFLIB::fiff_int_t make_projector(const QList<FIFFLIB::FiffProj>& projs,
241 const QStringList& ch_names,
242 Eigen::MatrixXd& proj,
243 const QStringList& bads = FIFFLIB::defaultQStringList,
244 Eigen::MatrixXd& U = FIFFLIB::defaultMatrixXd)
245 {
247 ch_names,
248 proj,
249 bads,
250 U);
251 }
252
253 //=========================================================================================================
268 static inline qint32 make_projector(FIFFLIB::FiffInfo& info,
269 Eigen::MatrixXd& proj)
270 {
271 return info.make_projector(proj);
272 }
273
274 //=========================================================================================================
286 static bool patch_info(MNEHemisphere &p_Hemisphere)
287 {
288 return p_Hemisphere.compute_patch_info();
289 }
290
291 //=========================================================================================================
310 qint32 nave,
311 float lambda2,
312 bool dSPM,
313 bool sLORETA = false)
314 {
315 return orig.prepare_inverse_operator(nave, lambda2, dSPM, sLORETA);
316 }
317
318 inline static bool read_events(const QString &t_sEventName,
319 const QString &t_fileRawName,
320 Eigen::MatrixXi& events)
321 {
322 FIFFLIB::FiffEvents fiffEvents;
323 if (!FIFFLIB::FiffEvents::read(t_sEventName, t_fileRawName, fiffEvents))
324 return false;
325 events = fiffEvents.events;
326 return true;
327 }
328
329 //=========================================================================================================
340 inline static bool read_events_from_fif(QIODevice &p_IODevice,
341 Eigen::MatrixXi& eventlist)
342 {
343 FIFFLIB::FiffEvents fiffEvents;
344 if (!FIFFLIB::FiffEvents::read_from_fif(p_IODevice, fiffEvents))
345 return false;
346 eventlist = fiffEvents.events;
347 return true;
348 }
349
350 //=========================================================================================================
361 inline static bool read_events_from_ascii(QIODevice &p_IODevice,
362 Eigen::MatrixXi& eventlist)
363 {
364 FIFFLIB::FiffEvents fiffEvents;
365 if (!FIFFLIB::FiffEvents::read_from_ascii(p_IODevice, fiffEvents))
366 return false;
367 eventlist = fiffEvents.events;
368 return true;
369 }
370
371 //=========================================================================================================
382 inline static bool write_events_to_fif(QIODevice &p_IODevice,
383 const Eigen::MatrixXi& eventlist)
384 {
385 FIFFLIB::FiffEvents fiffEvents;
386 fiffEvents.events = eventlist;
387 return fiffEvents.write_to_fif(p_IODevice);
388 }
389
390 //=========================================================================================================
402 inline static bool write_events_to_ascii(QIODevice &p_IODevice,
403 const Eigen::MatrixXi& eventlist,
404 float sfreq = 0.0f)
405 {
406 FIFFLIB::FiffEvents fiffEvents;
407 fiffEvents.events = eventlist;
408 return fiffEvents.write_to_ascii(p_IODevice, sfreq);
409 }
410
411 //=========================================================================================================
435 const Eigen::MatrixXi &events,
436 const QList<int> &eventCodes,
437 float tmin,
438 float tmax,
439 float bmin = 0.0f,
440 float bmax = 0.0f,
441 bool doBaseline = false,
442 bool removeMean = true)
443 {
444 return FIFFLIB::FiffCov::compute_from_epochs(raw, events, eventCodes, tmin, tmax, bmin, bmax, doBaseline, removeMean);
445 }
446
447 //=========================================================================================================
468 inline static QList<FIFFLIB::FiffProj> compute_proj(const FIFFLIB::FiffRawData &raw,
469 const Eigen::MatrixXi &events,
470 int eventCode,
471 float tmin,
472 float tmax,
473 int nGrad,
474 int nMag,
475 int nEeg,
476 const QMap<QString,double> &mapReject = QMap<QString,double>())
477 {
478 return FIFFLIB::FiffProj::compute_from_raw(raw, events, eventCode, tmin, tmax, nGrad, nMag, nEeg, mapReject);
479 }
480
481 //=========================================================================================================
501 inline static bool save_raw(const FIFFLIB::FiffRawData &raw,
502 QIODevice &p_IODevice,
503 const Eigen::RowVectorXi &picks = Eigen::RowVectorXi(),
504 int decim = 1,
505 int from = -1,
506 int to = -1)
507 {
508 return raw.save(p_IODevice, picks, decim, from, to);
509 }
510
511 static void setup_compensators(FIFFLIB::FiffRawData& raw,
512 FIFFLIB::fiff_int_t dest_comp,
513 bool keep_comp);
514
515 //=========================================================================================================
532 inline static bool read_cov(FIFFLIB::FiffStream::SPtr& p_pStream,
533 const FIFFLIB::FiffDirNode::SPtr& p_Node,
534 FIFFLIB::fiff_int_t cov_kind,
535 FIFFLIB::FiffCov& p_covData)
536 {
537 return p_pStream->read_cov(p_Node,
538 cov_kind,
539 p_covData);
540 }
541
542 //=========================================================================================================
557 static bool read_inverse_operator(QIODevice& p_pIODevice,
559 {
561 inv);
562 }
563
564 //=========================================================================================================
583 static inline bool read_forward_solution(QIODevice& p_IODevice,
585 bool force_fixed = false,
586 bool surf_ori = false,
587 const QStringList& include = FIFFLIB::defaultQStringList,
588 const QStringList& exclude = FIFFLIB::defaultQStringList)
589 {
590 return MNEForwardSolution::read(p_IODevice,
591 fwd,
592 force_fixed,
593 surf_ori,
594 include,
595 exclude);
596 }
597
598 //=========================================================================================================
616 bool add_geom,
617 MNESourceSpaces& p_SourceSpace)
618 {
619 return MNESourceSpaces::readFromStream(p_pStream,
620 add_geom,
621 p_SourceSpace);
622 }
623
624 //ToDo FiffChInfoList Class
625 //=========================================================================================================
642 static QList<FIFFLIB::FiffChInfo> set_current_comp(QList<FIFFLIB::FiffChInfo>& chs,
644 {
646 value);
647 }
648
649 //=========================================================================================================
665 static inline bool transform_source_space_to(MNESourceSpaces& p_pMNESourceSpaces,
668 {
669 return p_pMNESourceSpaces.transform_source_space_to(dest,
670 trans);
671 }
672
673 //=========================================================================================================
687 {
689 }
690};
691} // NAMESPACE
692
693#endif // MNE_H
Fiff constants.
FiffRawData class declaration.
FiffProj class declaration.
FiffCov class declaration.
FiffEvokedSet class declaration.
FiffEvents class declaration.
MNEMath class declaration.
MNESourceSpaces class declaration.
mne library export/import macros.
#define MNESHARED_EXPORT
Definition mne_global.h:52
MNEHemisphere class declaration.
MNEForwardSolution class declaration, which provides the forward solution including the source space ...
MNEEpochDataList class declaration.
MNEBem class declaration.
MNEBemSurface 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:84
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:486
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:85
void set_current_comp(fiff_int_t value)
Definition fiff_info.h:280
qint32 make_projector(Eigen::MatrixXd &proj) const
Definition fiff_info.h:266
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
The MNE class provides wrapper functions to stay consistent with mne matlab toolbox.
Definition mne.h:90
static bool write_events_to_fif(QIODevice &p_IODevice, const Eigen::MatrixXi &eventlist)
Definition mne.h:382
static qint32 make_projector(FIFFLIB::FiffInfo &info, Eigen::MatrixXd &proj)
Definition mne.h:268
static qint32 get_current_comp(FIFFLIB::FiffInfo *info)
Definition mne.h:163
static bool read_inverse_operator(QIODevice &p_pIODevice, MNEInverseOperator &inv)
Definition mne.h:557
static bool read_events_from_ascii(QIODevice &p_IODevice, Eigen::MatrixXi &eventlist)
Definition mne.h:361
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:211
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:240
static QList< FIFFLIB::FiffChInfo > set_current_comp(QList< FIFFLIB::FiffChInfo > &chs, FIFFLIB::fiff_int_t value)
Definition mne.h:642
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:501
static bool transform_source_space_to(MNESourceSpaces &p_pMNESourceSpaces, FIFFLIB::fiff_int_t dest, FIFFLIB::FiffCoordTrans &trans)
Definition mne.h:665
virtual ~MNE()
Definition mne.h:98
static MNEInverseOperator prepare_inverse_operator(MNEInverseOperator &orig, qint32 nave, float lambda2, bool dSPM, bool sLORETA=false)
Definition mne.h:309
static void transpose_named_matrix(FIFFLIB::FiffNamedMatrix &mat)
Definition mne.h:686
static bool patch_info(MNEHemisphere &p_Hemisphere)
Definition mne.h:286
static bool read_source_spaces(FIFFLIB::FiffStream::SPtr &p_pStream, bool add_geom, MNESourceSpaces &p_SourceSpace)
Definition mne.h:615
static bool write_events_to_ascii(QIODevice &p_IODevice, const Eigen::MatrixXi &eventlist, float sfreq=0.0f)
Definition mne.h:402
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:532
static qint32 find_source_space_hemi(MNEHemisphere &p_Hemisphere)
Definition mne.h:144
static Eigen::SparseMatrix< double > * make_block_diag(const Eigen::MatrixXd &A, qint32 n)
Definition mne.h:188
static bool read_events(const QString &t_sEventName, const QString &t_fileRawName, Eigen::MatrixXi &events)
Definition mne.h:318
static bool read_events_from_fif(QIODevice &p_IODevice, Eigen::MatrixXi &eventlist)
Definition mne.h:340
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:434
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:468
static Eigen::VectorXd * combine_xyz(const Eigen::VectorXd &vec)
Definition mne.h:115
static bool read_forward_solution(QIODevice &p_IODevice, MNEForwardSolution &fwd, bool force_fixed=false, bool surf_ori=false, const QStringList &include=FIFFLIB::defaultQStringList, const QStringList &exclude=FIFFLIB::defaultQStringList)
Definition mne.h:583
static bool read(QIODevice &p_IODevice, MNEForwardSolution &fwd, bool force_fixed=false, bool surf_ori=false, const QStringList &include=FIFFLIB::defaultQStringList, const QStringList &exclude=FIFFLIB::defaultQStringList, bool bExcludeBads=true)
Hemisphere provides geometry information.
MNEInverseOperator prepare_inverse_operator(qint32 nave, float lambda2, bool dSPM, bool sLORETA=false) const
static bool read_inverse_operator(QIODevice &p_IODevice, MNEInverseOperator &inv)
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)
static Eigen::SparseMatrix< double > * make_block_diag(const Eigen::MatrixXd &A, qint32 n)
Definition mnemath.cpp:347
static Eigen::VectorXd * combine_xyz(const Eigen::VectorXd &vec)
Definition mnemath.cpp:81
MNEInverseOperator class declaration.