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::UPtr& 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::UPtr& 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
Fiff library export/import macros.
#define FIFFSHARED_EXPORT
Definition fiff_global.h:52
FiffProj class declaration.
FiffCtfComp class declaration.
FiffInfo class declaration.
FiffRawData class declaration.
Old fiff_type declarations - replace them.
FiffEvents class declaration.
FiffEvokedSet class declaration.
FiffCoordTrans class declaration.
FiffDirNode class declaration, which provides fiff dir tree processing methods.
FiffNamedMatrix class declaration.
#define FIFFV_ASPECT_AVERAGE
Definition fiff_file.h:438
FiffDirEntry class declaration.
FiffStream class declaration.
FiffTag class declaration, which provides fiff tag I/O and processing methods.
FiffRawDir class declaration.
Fiff constants.
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_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 bool read_tag(FiffStream::SPtr &p_pStream, FiffTag::UPtr &p_pTag, qint64 pos=-1)
Definition fiff.h:543
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 bool read_tag_info(FiffStream::SPtr &p_pStream, FiffTag::UPtr &p_pTag)
Definition fiff.h:562
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 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:68
static FiffId & getDefault()
Definition fiff_id.cpp:213
FIFF measurement file information.
Definition fiff_info.h:86
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)
QSharedPointer< FiffStream > SPtr
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)
std::unique_ptr< FiffTag > UPtr
Definition fiff_tag.h:158