v2.0.0
Loading...
Searching...
No Matches
fiff.h
Go to the documentation of this file.
1//=============================================================================================================
38
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#include "fiff_events.h"
62
63//=============================================================================================================
64// EIGEN INCLUDES
65//=============================================================================================================
66
67#include <Eigen/Core>
68
69//=============================================================================================================
70// QT INCLUDES
71//=============================================================================================================
72
73#include <QIODevice>
74#include <QList>
75#include <QStringList>
76
77//=============================================================================================================
78// DEFINE NAMESPACE FIFFLIB
79//=============================================================================================================
80
81namespace FIFFLIB
82{
83
84//=============================================================================================================
85// FORWARD DECLARATIONS
86//=============================================================================================================
87
88//=============================================================================================================
96{
97public:
98 //=========================================================================================================
102 virtual ~Fiff(){ }
103
104 //Alphabetic ordered MNE Toolbox fiff_function
105 //=========================================================================================================
120 inline static bool copy_tree(FiffStream::SPtr p_pStreamIn, const FiffId& in_id, const QList<FiffDirNode::SPtr>& p_Nodes, FiffStream::SPtr& p_pStreamOut)
121 {
122 return FiffDirNode::copy_tree(p_pStreamIn, in_id, p_Nodes, p_pStreamOut);
123 }
124
125 //=========================================================================================================
136 inline static void end_block(FiffStream* p_pStream, fiff_int_t kind)
137 {
138 p_pStream->end_block(kind);
139 }
140
141 //=========================================================================================================
151 inline static void end_file(FiffStream* p_pStream)
152 {
153 p_pStream->end_file();
154 }
155
156 //=========================================================================================================
166 inline static void finish_writing_raw(FiffStream* p_pStream)
167 {
168 p_pStream->finish_writing_raw();
169 }
170
171 //=========================================================================================================
184 inline static QList<FiffDirNode::SPtr> dir_tree_find(const FiffDirNode::SPtr& p_Node, fiff_int_t p_kind)
185 {
186 return p_Node->dir_tree_find(p_kind);
187 }
188
189 //=========================================================================================================
201 inline static bool invert_transform(FiffCoordTrans& p_Transform)
202 {
203 return p_Transform.invert_transform();
204 }
205
206 //=========================================================================================================
219 static bool open(QIODevice& p_IODevice, FiffStream::SPtr& p_pStream)
220 {
221 p_pStream = FiffStream::SPtr(new FiffStream(&p_IODevice));
222
223 return p_pStream->open();
224 }
225
226 //=========================================================================================================
239 inline static Eigen::RowVectorXi pick_channels(QStringList& ch_names,
240 const QStringList& include = defaultQStringList,
241 const QStringList& exclude = defaultQStringList)
242 {
243 return FiffInfo::pick_channels(ch_names, include, exclude);
244 }
245
246 //=========================================================================================================
261 const QStringList& include = defaultQStringList,
262 const QStringList& exclude = defaultQStringList)
263 {
264 return orig.pick_channels(include, exclude);
265 }
266
267 //=========================================================================================================
279 inline static bool find_evoked(FiffEvokedSet& orig)
280 {
281 return orig.find_evoked(orig);
282 }
283
284 //=========================================================================================================
297 inline static FiffInfo pick_info(const FiffInfo& info,
298 const Eigen::RowVectorXi &sel = defaultVectorXi)
299 {
300 return info.pick_info(sel);
301 }
302
303 //=========================================================================================================
320 inline static Eigen::RowVectorXi pick_types(FiffInfo &info,
321 bool meg,
322 bool eeg = false,
323 bool stim = false,
324 const QStringList& include = defaultQStringList,
325 const QStringList& exclude = defaultQStringList)
326 {
327 return info.pick_types(meg, eeg, stim, include, exclude);
328 }
329
330 //=========================================================================================================
343 static inline QStringList read_bad_channels(FiffStream::SPtr& p_pStream,
344 FiffDirNode::SPtr& p_Node)
345 {
346 return p_pStream->read_bad_channels(p_Node);
347 }
348
349 //=========================================================================================================
363 static inline QList<FiffCtfComp> read_ctf_comp(FiffStream::SPtr& p_pStream,
364 const FiffDirNode::SPtr& p_Node,
365 const QList<FiffChInfo>& p_Chs)
366 {
367 return p_pStream->read_ctf_comp(p_Node, p_Chs);
368 }
369
370 //=========================================================================================================
390 static inline bool read_evoked(QIODevice& p_IODevice,
391 FiffEvoked& data,
392 QVariant setno = 0,
393 QPair<float,float> baseline = defaultFloatPair,
394 bool proj = true,
395 fiff_int_t p_aspect_kind = FIFFV_ASPECT_AVERAGE)
396 {
397 return FiffEvoked::read(p_IODevice, data, setno, baseline, proj, p_aspect_kind);
398 }
399
400 //=========================================================================================================
409 static inline bool read_evoked_set(QIODevice& p_IODevice, FiffEvokedSet& data)
410 {
411 return FiffEvokedSet::read(p_IODevice, data);
412 }
413
414 //=========================================================================================================
430 static inline bool read_meas_info(FiffStream::SPtr& p_pStream, const FiffDirNode::SPtr& p_Node, FiffInfo& p_Info, FiffDirNode::SPtr& p_NodeInfo)
431 {
432 return p_pStream->read_meas_info(p_Node, p_Info, p_NodeInfo);
433 }
434
435 //=========================================================================================================
450 static inline bool read_named_matrix(FiffStream::SPtr& p_pStream, const FiffDirNode::SPtr& p_Node, fiff_int_t matkind, FiffNamedMatrix& mat)
451 {
452 return p_pStream->read_named_matrix(p_Node, matkind, mat);
453 }
454
455 //=========================================================================================================
468 static inline QList<FiffProj> read_proj(FiffStream::SPtr& p_pStream, const FiffDirNode::SPtr& p_Node)
469 {
470 return p_pStream->read_proj(p_Node);
471 }
472
473 //=========================================================================================================
490 inline static bool read_raw_segment(FiffRawData& raw,
491 Eigen::MatrixXd& data,
492 Eigen::MatrixXd& times,
493 fiff_int_t from = -1,
494 fiff_int_t to = -1,
495 Eigen::MatrixXi sel = defaultMatrixXi)
496 {
497 return raw.read_raw_segment(data, times, from, to, sel);
498 }
499
517 inline static bool read_raw_segment(FiffRawData& raw,
518 Eigen::MatrixXd& data,
519 Eigen::MatrixXd& times,
520 Eigen::SparseMatrix<double>& mult,
521 fiff_int_t from = -1,
522 fiff_int_t to = -1,
523 Eigen::MatrixXi sel = defaultMatrixXi)
524 {
525 return raw.read_raw_segment(data, times, mult, from, to, sel);
526 }
527
528 //=========================================================================================================
543 inline static bool read_tag(FiffStream::SPtr& p_pStream, FiffTag::SPtr& p_pTag, qint64 pos = -1)
544 {
545 return p_pStream->read_tag(p_pTag, pos);
546 }
547
548 //=========================================================================================================
562 static inline bool read_tag_info(FiffStream::SPtr& p_pStream, FiffTag::SPtr& p_pTag)
563 {
564 return p_pStream->read_tag_info(p_pTag);
565 }
566
567 //=========================================================================================================
581 inline static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData& data, bool allow_maxshield = false)
582 {
583 return FiffStream::setup_read_raw(p_IODevice, data, allow_maxshield);
584 }
585
586 //=========================================================================================================
598 inline static QStringList split_name_list(QString p_sNameList)
599 {
600 return FiffStream::split_name_list(p_sNameList);
601 }
602
603 //=========================================================================================================
614 inline static void start_block(FiffStream* p_pStream, fiff_int_t kind)
615 {
616 p_pStream->start_block(kind);
617 }
618
619 //=========================================================================================================
631 inline static FiffStream::SPtr start_file(QIODevice& p_IODevice)
632 {
633 return FiffStream::start_file(p_IODevice);
634 }
635
636 //=========================================================================================================
651 inline static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice,
652 const FiffInfo& info,
653 Eigen::RowVectorXd& cals,
654 Eigen::MatrixXi sel = defaultMatrixXi)
655 {
656 return FiffStream::start_writing_raw(p_IODevice, info, cals, sel);
657 }
658
659 //=========================================================================================================
672 inline static void write_ch_info(FiffStream* p_pStream, const FiffChInfo& ch)
673 {
674 p_pStream->write_ch_info(ch);
675 }
676
677 //=========================================================================================================
688 inline static void write_coord_trans(FiffStream* p_pStream, FiffCoordTrans& trans)
689 {
690 p_pStream->write_coord_trans(trans);
691 }
692
693 //=========================================================================================================
704 inline static void write_ctf_comp(FiffStream* p_pStream, QList<FiffCtfComp>& comps)
705 {
706 p_pStream->write_ctf_comp(comps);
707 }
708
709 //=========================================================================================================
720 inline static void write_dig_point(FiffStream* p_pStream, FiffDigPoint& dig)
721 {
722 p_pStream->write_dig_point(dig);
723 }
724
725 //=========================================================================================================
738 inline static void write_id(FiffStream* p_pStream, fiff_int_t kind, FiffId& id = FiffId::getDefault())
739 {
740 p_pStream->write_id(kind, id);
741 }
742
743 //=========================================================================================================
756 inline static void write_int(FiffStream* p_pStream, fiff_int_t kind, const fiff_int_t* data, fiff_int_t nel = 1)
757 {
758 p_pStream->write_int(kind, data, nel);
759 }
760
761 //=========================================================================================================
774 inline static void write_float(FiffStream* p_pStream, fiff_int_t kind, float* data, fiff_int_t nel = 1)
775 {
776 p_pStream->write_float(kind, data, nel);
777 }
778
779 //=========================================================================================================
791 inline static void write_float_matrix(FiffStream* p_pStream, fiff_int_t kind, Eigen::MatrixXf& mat)
792 {
793 p_pStream->write_float_matrix(kind, mat);
794 }
795
796 //=========================================================================================================
808 inline static void write_name_list(FiffStream* p_pStream, fiff_int_t kind, QStringList& data)
809 {
810 p_pStream->write_name_list(kind, data);
811 }
812
813 //=========================================================================================================
825 inline static void write_named_matrix(FiffStream* p_pStream, fiff_int_t kind,FiffNamedMatrix& mat)
826 {
827 p_pStream->write_named_matrix(kind, mat);
828 }
829
830 //=========================================================================================================
841 inline static void write_proj(FiffStream* p_pStream, QList<FiffProj>& projs)
842 {
843 p_pStream->write_proj(projs);
844 }
845
846 //=========================================================================================================
860 inline static bool write_raw_buffer(FiffStream* p_pStream, const Eigen::MatrixXd& buf, const Eigen::MatrixXd& cals)
861 {
862 return p_pStream->write_raw_buffer(buf, cals);
863 }
864
865 //=========================================================================================================
877 inline static void write_string(FiffStream* p_pStream, fiff_int_t kind, QString& data)
878 {
879 p_pStream->write_string(kind, data);
880 }
881};
882
883//=============================================================================================================
884// INLINE DEFINITIONS
885//=============================================================================================================
886} // NAMESPACE
887
888#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:52
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
Old fiff_type declarations - replace them.
FiffCoordTrans class declaration.
FiffEvents class declaration.
FIFF file I/O and data structures (raw, epochs, evoked, covariance, forward).
qint32 fiff_int_t
Definition fiff_types.h:89
The Fiff class provides static wrapper functions to stay consistent with mne matlab toolbox Note: avo...
Definition fiff.h:96
static bool read_tag_info(FiffStream::SPtr &p_pStream, FiffTag::SPtr &p_pTag)
Definition fiff.h:562
static bool read_named_matrix(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, fiff_int_t matkind, FiffNamedMatrix &mat)
Definition fiff.h:450
static QList< FiffProj > read_proj(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node)
Definition fiff.h:468
static void write_ctf_comp(FiffStream *p_pStream, QList< FiffCtfComp > &comps)
Definition fiff.h:704
static bool open(QIODevice &p_IODevice, FiffStream::SPtr &p_pStream)
Definition fiff.h:219
static void write_float(FiffStream *p_pStream, fiff_int_t kind, float *data, fiff_int_t nel=1)
Definition fiff.h:774
static Eigen::RowVectorXi pick_channels(QStringList &ch_names, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition fiff.h:239
static void write_named_matrix(FiffStream *p_pStream, fiff_int_t kind, FiffNamedMatrix &mat)
Definition fiff.h:825
static bool read_meas_info(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, FiffInfo &p_Info, FiffDirNode::SPtr &p_NodeInfo)
Definition fiff.h:430
static void write_dig_point(FiffStream *p_pStream, FiffDigPoint &dig)
Definition fiff.h:720
static void write_int(FiffStream *p_pStream, fiff_int_t kind, const fiff_int_t *data, fiff_int_t nel=1)
Definition fiff.h:756
static void write_id(FiffStream *p_pStream, fiff_int_t kind, FiffId &id=FiffId::getDefault())
Definition fiff.h:738
static bool read_evoked_set(QIODevice &p_IODevice, FiffEvokedSet &data)
Definition fiff.h:409
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:390
static void end_file(FiffStream *p_pStream)
Definition fiff.h:151
static void write_ch_info(FiffStream *p_pStream, const FiffChInfo &ch)
Definition fiff.h:672
static void start_block(FiffStream *p_pStream, fiff_int_t kind)
Definition fiff.h:614
static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice, const FiffInfo &info, Eigen::RowVectorXd &cals, Eigen::MatrixXi sel=defaultMatrixXi)
Definition fiff.h:651
static void write_proj(FiffStream *p_pStream, QList< FiffProj > &projs)
Definition fiff.h:841
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:490
virtual ~Fiff()
Definition fiff.h:102
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:517
static void write_float_matrix(FiffStream *p_pStream, fiff_int_t kind, Eigen::MatrixXf &mat)
Definition fiff.h:791
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:320
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:120
static void write_name_list(FiffStream *p_pStream, fiff_int_t kind, QStringList &data)
Definition fiff.h:808
static void end_block(FiffStream *p_pStream, fiff_int_t kind)
Definition fiff.h:136
static void finish_writing_raw(FiffStream *p_pStream)
Definition fiff.h:166
static bool find_evoked(FiffEvokedSet &orig)
Definition fiff.h:279
static void write_coord_trans(FiffStream *p_pStream, FiffCoordTrans &trans)
Definition fiff.h:688
static FiffStream::SPtr start_file(QIODevice &p_IODevice)
Definition fiff.h:631
static bool read_tag(FiffStream::SPtr &p_pStream, FiffTag::SPtr &p_pTag, qint64 pos=-1)
Definition fiff.h:543
static QStringList read_bad_channels(FiffStream::SPtr &p_pStream, FiffDirNode::SPtr &p_Node)
Definition fiff.h:343
static QList< FiffCtfComp > read_ctf_comp(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, const QList< FiffChInfo > &p_Chs)
Definition fiff.h:363
static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData &data, bool allow_maxshield=false)
Definition fiff.h:581
static FiffInfo pick_info(const FiffInfo &info, const Eigen::RowVectorXi &sel=defaultVectorXi)
Definition fiff.h:297
static QStringList split_name_list(QString p_sNameList)
Definition fiff.h:598
static QList< FiffDirNode::SPtr > dir_tree_find(const FiffDirNode::SPtr &p_Node, fiff_int_t p_kind)
Definition fiff.h:184
static FiffEvokedSet pick_channels(FiffEvokedSet &orig, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition fiff.h:260
static bool write_raw_buffer(FiffStream *p_pStream, const Eigen::MatrixXd &buf, const Eigen::MatrixXd &cals)
Definition fiff.h:860
static bool invert_transform(FiffCoordTrans &p_Transform)
Definition fiff.h:201
static void write_string(FiffStream *p_pStream, fiff_int_t kind, QString &data)
Definition fiff.h:877
Channel info descriptor.
Coordinate transformation description.
Digitization point description.
QSharedPointer< FiffDirNode > SPtr
static bool copy_tree(QSharedPointer< FiffStream > &p_pStreamIn, const FiffId &in_id, const QList< QSharedPointer< FiffDirNode > > &p_Nodes, QSharedPointer< FiffStream > &p_pStreamOut)
static bool read(QIODevice &p_IODevice, FiffEvoked &p_FiffEvoked, QVariant setno=0, QPair< float, float > t_baseline=defaultFloatPair, bool proj=true, fiff_int_t p_aspect_kind=FIFFV_ASPECT_AVERAGE)
bool find_evoked(const FiffEvokedSet &p_FiffEvokedSet) const
FiffEvokedSet pick_channels(const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList) const
static bool read(QIODevice &p_IODevice, FiffEvokedSet &p_FiffEvokedSet, QPair< float, float > baseline=defaultFloatPair, bool proj=true)
Universally unique identifier.
Definition fiff_id.h:67
static FiffId & getDefault()
Definition fiff_id.cpp:210
FIFF measurement file information.
Definition fiff_info.h:85
FiffInfo pick_info(const Eigen::RowVectorXi &sel=defaultVectorXi) const
static Eigen::RowVectorXi pick_channels(const QStringList &ch_names, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
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)
static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData &data, bool allow_maxshield=true, bool is_littleEndian=false)
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)
static QStringList split_name_list(QString p_sNameList)
fiff_long_t write_string(fiff_int_t kind, const QString &data)
static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice, const FiffInfo &info, Eigen::RowVectorXd &cals, Eigen::MatrixXi sel=defaultMatrixXi, bool bResetRange=true)
static FiffStream::SPtr start_file(QIODevice &p_IODevice)
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:155