MNE-CPP  0.1.9
A Framework for Electrophysiology
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 
80 namespace FIFFLIB
81 {
82 
83 //=============================================================================================================
84 // FORWARD DECLARATIONS
85 //=============================================================================================================
86 
87 //=============================================================================================================
95 {
96 public:
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
Old fiff_type declarations - replace them.
static bool read(QIODevice &p_IODevice, FiffEvokedSet &p_FiffEvokedSet, QPair< float, float > baseline=defaultFloatPair, bool proj=true)
static Eigen::RowVectorXi pick_channels(const QStringList &ch_names, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
FiffEvokedSet pick_channels(const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList) const
static QList< FiffDirNode::SPtr > dir_tree_find(const FiffDirNode::SPtr &p_Node, fiff_int_t p_kind)
Definition: fiff.h:193
FiffCoordTrans class declaration.
static void write_named_matrix(FiffStream *p_pStream, fiff_int_t kind, FiffNamedMatrix &mat)
Definition: fiff.h:898
static void write_float(FiffStream *p_pStream, fiff_int_t kind, float *data, fiff_int_t nel=1)
Definition: fiff.h:841
FiffStream class declaration.
fiff_long_t write_name_list(fiff_int_t kind, const QStringList &data)
Channel info descriptor.
Definition: fiff_ch_info.h:74
FIFF measurement file information.
Definition: fiff_info.h:84
static void write_proj(FiffStream *p_pStream, QList< FiffProj > &projs)
Definition: fiff.h:916
static QStringList split_name_list(QString p_sNameList)
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)
static bool read_tag(FiffStream::SPtr &p_pStream, FiffTag::SPtr &p_pTag, qint64 pos=-1)
Definition: fiff.h:584
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
bool write_raw_buffer(const Eigen::MatrixXd &buf, const Eigen::RowVectorXd &cals)
static void write_ch_info(FiffStream *p_pStream, const FiffChInfo &ch)
Definition: fiff.h:727
QSharedPointer< FiffDirNode > SPtr
Definition: fiff_dir_node.h:77
fiff_long_t write_float_matrix(fiff_int_t kind, const Eigen::MatrixXf &mat)
Digitization point description.
static bool read_evoked_set(QIODevice &p_IODevice, FiffEvokedSet &data)
Definition: fiff.h:438
FIFF raw measurement data.
Definition: fiff_raw_data.h:78
Coordinate transformation description.
FiffDirEntry class declaration.
fiff_long_t write_coord_trans(const FiffCoordTrans &trans)
fiff_long_t write_named_matrix(fiff_int_t kind, const FiffNamedMatrix &mat)
static bool copy_tree(QSharedPointer< FiffStream > &p_pStreamIn, const FiffId &in_id, const QList< QSharedPointer< FiffDirNode > > &p_Nodes, QSharedPointer< FiffStream > &p_pStreamOut)
The Fiff class provides static wrapper functions to stay consistent with mne matlab toolbox Note: avo...
Definition: fiff.h:94
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 FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice, const FiffInfo &info, Eigen::RowVectorXd &cals, Eigen::MatrixXi sel=defaultMatrixXi, bool bResetRange=true)
FiffRawDir class declaration.
static QStringList read_bad_channels(FiffStream::SPtr &p_pStream, FiffDirNode::SPtr &p_Node)
Definition: fiff.h:368
static void finish_writing_raw(FiffStream *p_pStream)
Definition: fiff.h:173
evoked data set
fiff_long_t write_dig_point(const FiffDigPoint &dig)
static bool open(QIODevice &p_IODevice, FiffStream::SPtr &p_pStream)
Definition: fiff.h:232
FiffInfo pick_info(const Eigen::RowVectorXi &sel=defaultVectorXi) const
Definition: fiff_info.cpp:310
FiffEvokedSet class declaration.
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
static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData &data, bool allow_maxshield=false)
Definition: fiff.h:626
static FiffEvokedSet pick_channels(FiffEvokedSet &orig, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition: fiff.h:277
fiff_long_t write_float(fiff_int_t kind, const float *data, fiff_int_t nel=1)
Fiff constants.
fiff_long_t write_proj(const QList< FiffProj > &projs)
fiff_long_t start_block(fiff_int_t kind)
QSharedPointer< FiffTag > SPtr
Definition: fiff_tag.h:152
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
Universially unique identifier.
Definition: fiff_id.h:68
evoked data
Definition: fiff_evoked.h:77
static void start_block(FiffStream *p_pStream, fiff_int_t kind)
Definition: fiff.h:663
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 QStringList split_name_list(QString p_sNameList)
Definition: fiff.h:645
static FiffStream::SPtr start_writing_raw(QIODevice &p_IODevice, const FiffInfo &info, Eigen::RowVectorXd &cals, Eigen::MatrixXi sel=defaultMatrixXi)
Definition: fiff.h:704
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
FIFF File I/O routines.
Definition: fiff_stream.h:104
FiffRawData class declaration.
static void end_file(FiffStream *p_pStream)
Definition: fiff.h:156
FiffNamedMatrix class declaration.
static void write_id(FiffStream *p_pStream, fiff_int_t kind, FiffId &id=FiffId::getDefault())
Definition: fiff.h:801
FiffDirNode class declaration, which provides fiff dir tree processing methods.
static void write_float_matrix(FiffStream *p_pStream, fiff_int_t kind, Eigen::MatrixXf &mat)
Definition: fiff.h:860
FiffCtfComp class declaration.
fiff_long_t write_ctf_comp(const QList< FiffCtfComp > &comps)
static void write_ctf_comp(FiffStream *p_pStream, QList< FiffCtfComp > &comps)
Definition: fiff.h:763
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
static void write_string(FiffStream *p_pStream, fiff_int_t kind, QString &data)
Definition: fiff.h:956
#define FIFFSHARED_EXPORT
Definition: fiff_global.h:56
static void write_coord_trans(FiffStream *p_pStream, FiffCoordTrans &trans)
Definition: fiff.h:745
#define FIFFV_ASPECT_AVERAGE
Definition: fiff_file.h:438
static FiffStream::SPtr start_file(QIODevice &p_IODevice)
static bool setup_read_raw(QIODevice &p_IODevice, FiffRawData &data, bool allow_maxshield=true, bool is_littleEndian=false)
static void end_block(FiffStream *p_pStream, fiff_int_t kind)
Definition: fiff.h:139
static bool read_tag_info(FiffStream::SPtr &p_pStream, FiffTag::SPtr &p_pTag)
Definition: fiff.h:605
QSharedPointer< FiffStream > SPtr
Definition: fiff_stream.h:107
virtual ~Fiff()
Definition: fiff.h:101
static Eigen::RowVectorXi pick_channels(QStringList &ch_names, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList)
Definition: fiff.h:254
static bool write_raw_buffer(FiffStream *p_pStream, const Eigen::MatrixXd &buf, const Eigen::MatrixXd &cals)
Definition: fiff.h:937
fiff_long_t write_ch_info(const FiffChInfo &ch)
FiffTag class declaration, which provides fiff tag I/O and processing methods.
static bool invert_transform(FiffCoordTrans &p_Transform)
Definition: fiff.h:212
FiffProj class declaration.
static QList< FiffProj > read_proj(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node)
Definition: fiff.h:503
static FiffId & getDefault()
Definition: fiff_id.cpp:210
static FiffInfo pick_info(const FiffInfo &info, const Eigen::RowVectorXi &sel=defaultVectorXi)
Definition: fiff.h:318
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
FiffInfo class declaration.
fiff_long_t write_string(fiff_int_t kind, const QString &data)
Fiff library export/import macros.
static void write_dig_point(FiffStream *p_pStream, FiffDigPoint &dig)
Definition: fiff.h:781
static bool read_named_matrix(FiffStream::SPtr &p_pStream, const FiffDirNode::SPtr &p_Node, fiff_int_t matkind, FiffNamedMatrix &mat)
Definition: fiff.h:483
fiff_long_t end_block(fiff_int_t kind, fiff_int_t next=FIFFV_NEXT_SEQ)
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
bool find_evoked(const FiffEvokedSet &p_FiffEvokedSet) const
static bool find_evoked(FiffEvokedSet &orig)
Definition: fiff.h:298
Eigen::RowVectorXi pick_types(const QString meg, bool eeg=false, bool stim=false, const QStringList &include=defaultQStringList, const QStringList &exclude=defaultQStringList) const
static void write_name_list(FiffStream *p_pStream, fiff_int_t kind, QStringList &data)
Definition: fiff.h:879
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 FiffStream::SPtr start_file(QIODevice &p_IODevice)
Definition: fiff.h:682
fiff_long_t write_id(fiff_int_t kind, const FiffId &id=FiffId::getDefault())