MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
fiff.h
Go to the documentation of this file.
1//=============================================================================================================
39#ifndef FIFF_H
40#define FIFF_H
41
42//=============================================================================================================
43// INCLUDES
44//=============================================================================================================
45
46#include "fiff_global.h"
47#include "fiff_constants.h"
48#include "fiff_coord_trans.h"
49#include "fiff_dir_node.h"
50#include "fiff_dir_entry.h"
51#include "fiff_named_matrix.h"
52#include "fiff_tag.h"
53#include "fiff_types.h"
54#include "fiff_proj.h"
55#include "fiff_ctf_comp.h"
56#include "fiff_info.h"
57#include "fiff_raw_data.h"
58#include "fiff_raw_dir.h"
59#include "fiff_stream.h"
60#include "fiff_evoked_set.h"
61
62//=============================================================================================================
63// EIGEN INCLUDES
64//=============================================================================================================
65
66#include <Eigen/Core>
67
68//=============================================================================================================
69// QT INCLUDES
70//=============================================================================================================
71
72#include <QIODevice>
73#include <QList>
74#include <QStringList>
75
76//=============================================================================================================
77// DEFINE NAMESPACE FIFFLIB
78//=============================================================================================================
79
80namespace FIFFLIB
81{
82
83//=============================================================================================================
84// FORWARD DECLARATIONS
85//=============================================================================================================
86
87//=============================================================================================================
95{
96public:
97 //=========================================================================================================
101 virtual ~Fiff(){ }
102
103 //Alphabetic ordered MNE Toolbox fiff_function
104 //=========================================================================================================
121 inline static bool copy_tree(FiffStream::SPtr p_pStreamIn, const FiffId& in_id, const QList<FiffDirNode::SPtr>& p_Nodes, FiffStream::SPtr& p_pStreamOut)
122 {
123 return FiffDirNode::copy_tree(p_pStreamIn, in_id, p_Nodes, p_pStreamOut);
124 }
125
126 //=========================================================================================================
139 inline static void end_block(FiffStream* p_pStream, fiff_int_t kind)
140 {
141 p_pStream->end_block(kind);
142 }
143
144 //=========================================================================================================
156 inline static void end_file(FiffStream* p_pStream)
157 {
158 p_pStream->end_file();
159 }
160
161 //=========================================================================================================
173 inline static void finish_writing_raw(FiffStream* p_pStream)
174 {
175 p_pStream->finish_writing_raw();
176 }
177
178 //=========================================================================================================
193 inline static QList<FiffDirNode::SPtr> dir_tree_find(const FiffDirNode::SPtr& p_Node, fiff_int_t p_kind)
194 {
195 return p_Node->dir_tree_find(p_kind);
196 }
197
198 //=========================================================================================================
212 inline static bool invert_transform(FiffCoordTrans& p_Transform)
213 {
214 return p_Transform.invert_transform();
215 }
216
217 //=========================================================================================================
232 static bool open(QIODevice& p_IODevice, FiffStream::SPtr& p_pStream)
233 {
234 p_pStream = FiffStream::SPtr(new FiffStream(&p_IODevice));
235
236 return p_pStream->open();
237 }
238
239 //=========================================================================================================
254 inline static Eigen::RowVectorXi pick_channels(QStringList& ch_names,
255 const QStringList& include = defaultQStringList,
256 const QStringList& exclude = defaultQStringList)
257 {
258 return FiffInfo::pick_channels(ch_names, include, exclude);
259 }
260
261 //=========================================================================================================
278 const QStringList& include = defaultQStringList,
279 const QStringList& exclude = defaultQStringList)
280 {
281 return orig.pick_channels(include, exclude);
282 }
283
284 //=========================================================================================================
298 inline static bool find_evoked(FiffEvokedSet& orig)
299 {
300 return orig.find_evoked(orig);
301 }
302
303 //=========================================================================================================
318 inline static FiffInfo pick_info(const FiffInfo& info,
319 const Eigen::RowVectorXi &sel = defaultVectorXi)
320 {
321 return info.pick_info(sel);
322 }
323
324 //=========================================================================================================
343 inline static Eigen::RowVectorXi pick_types(FiffInfo &info,
344 bool meg,
345 bool eeg = false,
346 bool stim = false,
347 const QStringList& include = defaultQStringList,
348 const QStringList& exclude = defaultQStringList)
349 {
350 return info.pick_types(meg, eeg, stim, include, exclude);
351 }
352
353 //=========================================================================================================
368 static inline QStringList read_bad_channels(FiffStream::SPtr& p_pStream,
369 FiffDirNode::SPtr& p_Node)
370 {
371 return p_pStream->read_bad_channels(p_Node);
372 }
373
374 //=========================================================================================================
390 static inline QList<FiffCtfComp> read_ctf_comp(FiffStream::SPtr& p_pStream,
391 const FiffDirNode::SPtr& p_Node,
392 const QList<FiffChInfo>& p_Chs)
393 {
394 return p_pStream->read_ctf_comp(p_Node, p_Chs);
395 }
396
397 //=========================================================================================================
419 static inline bool read_evoked(QIODevice& p_IODevice,
420 FiffEvoked& data,
421 QVariant setno = 0,
422 QPair<float,float> baseline = defaultFloatPair,
423 bool proj = true,
424 fiff_int_t p_aspect_kind = FIFFV_ASPECT_AVERAGE)
425 {
426 return FiffEvoked::read(p_IODevice, data, setno, baseline, proj, p_aspect_kind);
427 }
428
429 //=========================================================================================================
438 static inline bool read_evoked_set(QIODevice& p_IODevice, FiffEvokedSet& data)
439 {
440 return FiffEvokedSet::read(p_IODevice, data);
441 }
442
443 //=========================================================================================================
461 static inline bool read_meas_info(FiffStream::SPtr& p_pStream, const FiffDirNode::SPtr& p_Node, FiffInfo& p_Info, FiffDirNode::SPtr& p_NodeInfo)
462 {
463 return p_pStream->read_meas_info(p_Node, p_Info, p_NodeInfo);
464 }
465
466 //=========================================================================================================
483 static inline bool read_named_matrix(FiffStream::SPtr& p_pStream, const FiffDirNode::SPtr& p_Node, fiff_int_t matkind, FiffNamedMatrix& mat)
484 {
485 return p_pStream->read_named_matrix(p_Node, matkind, mat);
486 }
487
488 //=========================================================================================================
503 static inline QList<FiffProj> read_proj(FiffStream::SPtr& p_pStream, const FiffDirNode::SPtr& p_Node)
504 {
505 return p_pStream->read_proj(p_Node);
506 }
507
508 //=========================================================================================================
527 inline static bool read_raw_segment(FiffRawData& raw,
528 Eigen::MatrixXd& data,
529 Eigen::MatrixXd& times,
530 fiff_int_t from = -1,
531 fiff_int_t to = -1,
532 Eigen::MatrixXi sel = defaultMatrixXi)
533 {
534 return raw.read_raw_segment(data, times, from, to, sel);
535 }
536
556 inline static bool read_raw_segment(FiffRawData& raw,
557 Eigen::MatrixXd& data,
558 Eigen::MatrixXd& times,
559 Eigen::SparseMatrix<double>& mult,
560 fiff_int_t from = -1,
561 fiff_int_t to = -1,
562 Eigen::MatrixXi sel = defaultMatrixXi)
563 {
564 return raw.read_raw_segment(data, times, mult, from, to, sel);
565 }
566
567 //=========================================================================================================
584 inline static bool read_tag(FiffStream::SPtr& p_pStream, FiffTag::SPtr& p_pTag, qint64 pos = -1)
585 {
586 return p_pStream->read_tag(p_pTag, pos);
587 }
588
589 //=========================================================================================================
605 static inline bool read_tag_info(FiffStream::SPtr& p_pStream, FiffTag::SPtr& p_pTag)
606 {
607 return p_pStream->read_tag_info(p_pTag);
608 }
609
610 //=========================================================================================================
626 inline static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData& data, bool allow_maxshield = false)
627 {
628 return FiffStream::setup_read_raw(p_IODevice, data, allow_maxshield);
629 }
630
631 //=========================================================================================================
645 inline static QStringList split_name_list(QString p_sNameList)
646 {
647 return FiffStream::split_name_list(p_sNameList);
648 }
649
650 //=========================================================================================================
663 inline static void start_block(FiffStream* p_pStream, fiff_int_t kind)
664 {
665 p_pStream->start_block(kind);
666 }
667
668 //=========================================================================================================
682 inline static FiffStream::SPtr start_file(QIODevice& p_IODevice)
683 {
684 return FiffStream::start_file(p_IODevice);
685 }
686
687 //=========================================================================================================
704 inline static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice,
705 const FiffInfo& info,
706 Eigen::RowVectorXd& cals,
707 Eigen::MatrixXi sel = defaultMatrixXi)
708 {
709 return FiffStream::start_writing_raw(p_IODevice, info, cals, sel);
710 }
711
712 //=========================================================================================================
727 inline static void write_ch_info(FiffStream* p_pStream, const FiffChInfo& ch)
728 {
729 p_pStream->write_ch_info(ch);
730 }
731
732 //=========================================================================================================
745 inline static void write_coord_trans(FiffStream* p_pStream, FiffCoordTrans& trans)
746 {
747 p_pStream->write_coord_trans(trans);
748 }
749
750 //=========================================================================================================
763 inline static void write_ctf_comp(FiffStream* p_pStream, QList<FiffCtfComp>& comps)
764 {
765 p_pStream->write_ctf_comp(comps);
766 }
767
768 //=========================================================================================================
781 inline static void write_dig_point(FiffStream* p_pStream, FiffDigPoint& dig)
782 {
783 p_pStream->write_dig_point(dig);
784 }
785
786 //=========================================================================================================
801 inline static void write_id(FiffStream* p_pStream, fiff_int_t kind, FiffId& id = FiffId::getDefault())
802 {
803 p_pStream->write_id(kind, id);
804 }
805
806 //=========================================================================================================
821 inline static void write_int(FiffStream* p_pStream, fiff_int_t kind, const fiff_int_t* data, fiff_int_t nel = 1)
822 {
823 p_pStream->write_int(kind, data, nel);
824 }
825
826 //=========================================================================================================
841 inline static void write_float(FiffStream* p_pStream, fiff_int_t kind, float* data, fiff_int_t nel = 1)
842 {
843 p_pStream->write_float(kind, data, nel);
844 }
845
846 //=========================================================================================================
860 inline static void write_float_matrix(FiffStream* p_pStream, fiff_int_t kind, Eigen::MatrixXf& mat)
861 {
862 p_pStream->write_float_matrix(kind, mat);
863 }
864
865 //=========================================================================================================
879 inline static void write_name_list(FiffStream* p_pStream, fiff_int_t kind, QStringList& data)
880 {
881 p_pStream->write_name_list(kind, data);
882 }
883
884 //=========================================================================================================
898 inline static void write_named_matrix(FiffStream* p_pStream, fiff_int_t kind,FiffNamedMatrix& mat)
899 {
900 p_pStream->write_named_matrix(kind, mat);
901 }
902
903 //=========================================================================================================
916 inline static void write_proj(FiffStream* p_pStream, QList<FiffProj>& projs)
917 {
918 p_pStream->write_proj(projs);
919 }
920
921 //=========================================================================================================
937 inline static bool write_raw_buffer(FiffStream* p_pStream, const Eigen::MatrixXd& buf, const Eigen::MatrixXd& cals)
938 {
939 return p_pStream->write_raw_buffer(buf, cals);
940 }
941
942 //=========================================================================================================
956 inline static void write_string(FiffStream* p_pStream, fiff_int_t kind, QString& data)
957 {
958 p_pStream->write_string(kind, data);
959 }
960};
961
962//=============================================================================================================
963// INLINE DEFINITIONS
964//=============================================================================================================
965} // NAMESPACE
966
967#endif // FIFF_H
FiffTag class declaration, which provides fiff tag I/O and processing methods.
FiffInfo class declaration.
Fiff library export/import macros.
#define FIFFSHARED_EXPORT
Definition fiff_global.h:56
Fiff constants.
FiffNamedMatrix class declaration.
FiffStream class declaration.
FiffRawDir class declaration.
FiffDirEntry class declaration.
FiffRawData class declaration.
FiffDirNode class declaration, which provides fiff dir tree processing methods.
FiffCtfComp class declaration.
FiffProj class declaration.
FiffEvokedSet class declaration.
#define FIFFV_ASPECT_AVERAGE
Definition fiff_file.h:438
Definitions for describing the objects in a FIFF file.
FiffCoordTrans class declaration.
The Fiff class provides static wrapper functions to stay consistent with mne matlab toolbox Note: avo...
Definition fiff.h:95
static bool read_tag_info(FiffStream::SPtr &p_pStream, FiffTag::SPtr &p_pTag)
Definition fiff.h:605
static bool read_named_matrix(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, fiff_int_t matkind, FiffNamedMatrix &mat)
Definition fiff.h:483
static QList< FiffProj > read_proj(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node)
Definition fiff.h:503
static void write_ctf_comp(FiffStream *p_pStream, QList< FiffCtfComp > &comps)
Definition fiff.h:763
static bool open(QIODevice &p_IODevice, FiffStream::SPtr &p_pStream)
Definition fiff.h:232
static void write_float(FiffStream *p_pStream, fiff_int_t kind, float *data, fiff_int_t nel=1)
Definition fiff.h:841
static Eigen::RowVectorXi pick_channels(QStringList &ch_names, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition fiff.h:254
static void write_named_matrix(FiffStream *p_pStream, fiff_int_t kind, FiffNamedMatrix &mat)
Definition fiff.h:898
static bool read_meas_info(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, FiffInfo &p_Info, FiffDirNode::SPtr &p_NodeInfo)
Definition fiff.h:461
static void write_dig_point(FiffStream *p_pStream, FiffDigPoint &dig)
Definition fiff.h:781
static void write_int(FiffStream *p_pStream, fiff_int_t kind, const fiff_int_t *data, fiff_int_t nel=1)
Definition fiff.h:821
static void write_id(FiffStream *p_pStream, fiff_int_t kind, FiffId &id=FiffId::getDefault())
Definition fiff.h:801
static bool read_evoked_set(QIODevice &p_IODevice, FiffEvokedSet &data)
Definition fiff.h:438
static bool read_evoked(QIODevice &p_IODevice, FiffEvoked &data, QVariant setno=0, QPair< float, float > baseline=defaultFloatPair, bool proj=true, fiff_int_t p_aspect_kind=FIFFV_ASPECT_AVERAGE)
Definition fiff.h:419
static void end_file(FiffStream *p_pStream)
Definition fiff.h:156
static void write_ch_info(FiffStream *p_pStream, const FiffChInfo &ch)
Definition fiff.h:727
static void start_block(FiffStream *p_pStream, fiff_int_t kind)
Definition fiff.h:663
static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice, const FiffInfo &info, Eigen::RowVectorXd &cals, Eigen::MatrixXi sel=defaultMatrixXi)
Definition fiff.h:704
static void write_proj(FiffStream *p_pStream, QList< FiffProj > &projs)
Definition fiff.h:916
static bool read_raw_segment(FiffRawData &raw, Eigen::MatrixXd &data, Eigen::MatrixXd &times, fiff_int_t from=-1, fiff_int_t to=-1, Eigen::MatrixXi sel=defaultMatrixXi)
Definition fiff.h:527
virtual ~Fiff()
Definition fiff.h:101
static bool read_raw_segment(FiffRawData &raw, Eigen::MatrixXd &data, Eigen::MatrixXd &times, Eigen::SparseMatrix< double > &mult, fiff_int_t from=-1, fiff_int_t to=-1, Eigen::MatrixXi sel=defaultMatrixXi)
Definition fiff.h:556
static void write_float_matrix(FiffStream *p_pStream, fiff_int_t kind, Eigen::MatrixXf &mat)
Definition fiff.h:860
static Eigen::RowVectorXi pick_types(FiffInfo &info, bool meg, bool eeg=false, bool stim=false, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition fiff.h:343
static bool copy_tree(FiffStream::SPtr p_pStreamIn, const FiffId &in_id, const QList< FiffDirNode::SPtr > &p_Nodes, FiffStream::SPtr &p_pStreamOut)
Definition fiff.h:121
static void write_name_list(FiffStream *p_pStream, fiff_int_t kind, QStringList &data)
Definition fiff.h:879
static void end_block(FiffStream *p_pStream, fiff_int_t kind)
Definition fiff.h:139
static void finish_writing_raw(FiffStream *p_pStream)
Definition fiff.h:173
static bool find_evoked(FiffEvokedSet &orig)
Definition fiff.h:298
static void write_coord_trans(FiffStream *p_pStream, FiffCoordTrans &trans)
Definition fiff.h:745
static FiffStream::SPtr start_file(QIODevice &p_IODevice)
Definition fiff.h:682
static bool read_tag(FiffStream::SPtr &p_pStream, FiffTag::SPtr &p_pTag, qint64 pos=-1)
Definition fiff.h:584
static QStringList read_bad_channels(FiffStream::SPtr &p_pStream, FiffDirNode::SPtr &p_Node)
Definition fiff.h:368
static QList< FiffCtfComp > read_ctf_comp(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, const QList< FiffChInfo > &p_Chs)
Definition fiff.h:390
static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData &data, bool allow_maxshield=false)
Definition fiff.h:626
static FiffInfo pick_info(const FiffInfo &info, const Eigen::RowVectorXi &sel=defaultVectorXi)
Definition fiff.h:318
static QStringList split_name_list(QString p_sNameList)
Definition fiff.h:645
static QList< FiffDirNode::SPtr > dir_tree_find(const FiffDirNode::SPtr &p_Node, fiff_int_t p_kind)
Definition fiff.h:193
static FiffEvokedSet pick_channels(FiffEvokedSet &orig, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition fiff.h:277
static bool write_raw_buffer(FiffStream *p_pStream, const Eigen::MatrixXd &buf, const Eigen::MatrixXd &cals)
Definition fiff.h:937
static bool invert_transform(FiffCoordTrans &p_Transform)
Definition fiff.h:212
static void write_string(FiffStream *p_pStream, fiff_int_t kind, QString &data)
Definition fiff.h:956
Channel info descriptor.
Coordinate transformation description.
Digitization point description.
QSharedPointer< FiffDirNode > SPtr
bool find_evoked(const FiffEvokedSet &p_FiffEvokedSet) const
FiffEvokedSet pick_channels(const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList) const
Universially unique identifier.
Definition fiff_id.h:68
FIFF measurement file information.
Definition fiff_info.h:85
FiffInfo pick_info(const Eigen::RowVectorXi &sel=defaultVectorXi) const
Eigen::RowVectorXi pick_types(const QString meg, bool eeg=false, bool stim=false, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList) const
FIFF raw measurement data.
bool read_raw_segment(Eigen::MatrixXd &data, Eigen::MatrixXd &times, fiff_int_t from=-1, fiff_int_t to=-1, const Eigen::RowVectorXi &sel=defaultRowVectorXi, bool do_debug=false) const
FIFF File I/O routines.
bool write_raw_buffer(const Eigen::MatrixXd &buf, const Eigen::RowVectorXd &cals)
fiff_long_t start_block(fiff_int_t kind)
fiff_long_t write_float_matrix(fiff_int_t kind, const Eigen::MatrixXf &mat)
fiff_long_t write_proj(const QList< FiffProj > &projs)
fiff_long_t write_dig_point(const FiffDigPoint &dig)
fiff_long_t write_int(fiff_int_t kind, const fiff_int_t *data, fiff_int_t nel=1, fiff_int_t next=FIFFV_NEXT_SEQ)
fiff_long_t write_float(fiff_int_t kind, const float *data, fiff_int_t nel=1)
fiff_long_t write_id(fiff_int_t kind, const FiffId &id=FiffId::getDefault())
fiff_long_t write_coord_trans(const FiffCoordTrans &trans)
fiff_long_t write_name_list(fiff_int_t kind, const QStringList &data)
fiff_long_t write_named_matrix(fiff_int_t kind, const FiffNamedMatrix &mat)
fiff_long_t write_string(fiff_int_t kind, const QString &data)
fiff_long_t end_block(fiff_int_t kind, fiff_int_t next=FIFFV_NEXT_SEQ)
fiff_long_t write_ch_info(const FiffChInfo &ch)
fiff_long_t write_ctf_comp(const QList< FiffCtfComp > &comps)
QSharedPointer< FiffStream > SPtr
QSharedPointer< FiffTag > SPtr
Definition fiff_tag.h:152