MNE-CPP  0.1.9
A Framework for Electrophysiology
evokedsetmodel.h
Go to the documentation of this file.
1 //=============================================================================================================
35 #ifndef EVOKEDSETMODEL_H
36 #define EVOKEDSETMODEL_H
37 
38 //=============================================================================================================
39 // INCLUDES
40 //=============================================================================================================
41 
42 #include "../../disp_global.h"
43 
45 #include <fiff/fiff_types.h>
46 
47 //=============================================================================================================
48 // QT INCLUDES
49 //=============================================================================================================
50 
51 #include <QAbstractTableModel>
52 #include <QSharedPointer>
53 #include <QColor>
54 
55 //=============================================================================================================
56 // EIGEN INCLUDES
57 //=============================================================================================================
58 
59 #include <Eigen/Core>
60 #include <Eigen/SparseCore>
61 
62 //=============================================================================================================
63 // FORWARD DECLARATIONS
64 //=============================================================================================================
65 
66 namespace FIFFLIB {
67  class FiffEvokedSet;
68  class FiffProj;
69 }
70 
71 //=============================================================================================================
72 // DEFINE NAMESPACE DISPLIB
73 //=============================================================================================================
74 
75 namespace DISPLIB
76 {
77 
78 //=============================================================================================================
79 // DISPLIB FORWARD DECLARATIONS
80 //=============================================================================================================
81 
82 namespace EvokedSetModelRoles {
83  enum ItemRole{GetAverageData = Qt::UserRole + 1020};
84 }
85 
86 //=============================================================================================================
87 // DEFINE TYPEDEFS
88 //=============================================================================================================
89 
90 typedef Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor> MatrixXdR;
91 typedef QPair<const double*,qint32> RowVectorPair;
92 typedef QPair<QString, Eigen::RowVectorXd> AvrTypeRowVector;
93 typedef QPair<QString, DISPLIB::RowVectorPair> AvrTypeRowVectorPair;
94 
95 //=============================================================================================================
101 class DISPSHARED_EXPORT EvokedSetModel : public QAbstractTableModel
102 {
103  Q_OBJECT
104 
105 public:
106  typedef QSharedPointer<EvokedSetModel> SPtr;
107  typedef QSharedPointer<const EvokedSetModel> ConstSPtr;
109  //=========================================================================================================
115  EvokedSetModel(QObject *parent = 0);
116 
117  ~EvokedSetModel();
118 
119  //=========================================================================================================
125  bool isInit() const;
126 
127  //=========================================================================================================
133  qint32 getNumSamples() const;
134 
135  //=========================================================================================================
143  virtual int rowCount(const QModelIndex &parent = QModelIndex()) const ;
144 
145  //=========================================================================================================
153  virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
154 
155  //=========================================================================================================
165  QVariant data(int row,
166  int column,
167  int role = Qt::DisplayRole) const;
168 
169  //=========================================================================================================
178  virtual QVariant data(const QModelIndex &index,
179  int role = Qt::DisplayRole) const;
180 
181  //=========================================================================================================
191  virtual QVariant headerData(int section,
192  Qt::Orientation orientation,
193  int role = Qt::DisplayRole) const;
194 
195  void init();
196 
197  //=========================================================================================================
203  void setEvokedSet(QSharedPointer<FIFFLIB::FiffEvokedSet> pEvokedSet);
204 
205  //=========================================================================================================
206  QSharedPointer<FIFFLIB::FiffEvokedSet> getEvokedSet();
207 
208  //=========================================================================================================
212  void updateData();
213 
214  //=========================================================================================================
220  QSharedPointer<QMap<QString, QColor> > getAverageColor() const;
221 
222  //=========================================================================================================
228  QSharedPointer<QMap<QString, bool> > getAverageActivation() const;
229 
230  //=========================================================================================================
236  void setAverageColor(const QSharedPointer<QMap<QString, QColor> > qMapAverageColor);
237 
238  //=========================================================================================================
244  void setAverageActivation(const QSharedPointer<QMap<QString, bool> > qMapAverageActivation);
245 
246  //=========================================================================================================
254  FIFFLIB::fiff_int_t getKind(qint32 row) const;
255 
256  //=========================================================================================================
264  bool getIsChannelBad(qint32 row) const;
265 
266  //=========================================================================================================
274  FIFFLIB::fiff_int_t getUnit(qint32 row) const;
275 
276  //=========================================================================================================
284  FIFFLIB::fiff_int_t getCoil(qint32 row) const;
285 
286  //=========================================================================================================
292  const QMap<qint32,qint32>& getIdxSelMap() const;
293 
294  //=========================================================================================================
300  int getNumberOfTimeSpacers() const;
301 
302  //=========================================================================================================
308  QPair<QVariant,QVariant> getBaselineInfo() const;
309 
310  //=========================================================================================================
316  int getNumAverages() const;
317 
318  //=========================================================================================================
324  qint32 getNumPreStimSamples() const;
325 
326  //=========================================================================================================
332  float getSamplingFrequency() const;
333 
334  //=========================================================================================================
340  void selectRows(const QList<qint32> &selection);
341 
342  //=========================================================================================================
346  void resetSelection();
347 
348  //=========================================================================================================
354  qint32 numVLines() const;
355 
356  //=========================================================================================================
362  bool isFreezed() const;
363 
364  //=========================================================================================================
368  void updateProjection(const QList<FIFFLIB::FiffProj>& projs);
369 
370  //=========================================================================================================
376  void updateCompensator(int to);
377 
378  //=========================================================================================================
382  void toggleFreeze();
383 
384 private:
385  QSharedPointer<FIFFLIB::FiffEvokedSet> m_pEvokedSet;
387  QMap<qint32,qint32> m_qMapIdxRowSelection;
388  QSharedPointer<QMap<QString, QColor> > m_qMapAverageColor;
389  QSharedPointer<QMap<QString, bool> > m_qMapAverageActivation;
390  QSharedPointer<QMap<QString, QColor> > m_qMapAverageColorOld;
391  QSharedPointer<QMap<QString, bool> > m_qMapAverageActivationOld;
393  QList<Eigen::MatrixXd> m_matData;
394  QList<Eigen::MatrixXd> m_matDataFreeze;
395  QStringList m_lAvrTypes;
397  Eigen::MatrixXd m_matProj;
398  Eigen::MatrixXd m_matComp;
399  Eigen::SparseMatrix<double> m_matSparseProjCompMult;
400  Eigen::SparseMatrix<double> m_matSparseProjMult;
401  Eigen::SparseMatrix<double> m_matSparseCompMult;
403  Eigen::RowVectorXi m_vecBadIdcs;
405  QPair<QVariant,QVariant> m_pairBaseline;
407  bool m_bIsInit;
408  bool m_bIsFreezed;
409  bool m_bProjActivated;
410  bool m_bCompActivated;
411  float m_fSps;
413 signals:
414  //=========================================================================================================
420  void newSelection(QList<qint32> selection);
421 
422  //=========================================================================================================
428  void newAverageColorMap(const QSharedPointer<QMap<QString, QColor> > qMapAverageColor);
429 
430  //=========================================================================================================
436  void newAverageActivationMap(const QSharedPointer<QMap<QString, bool> > qMapAverageActivation);
437 };
438 
439 //=============================================================================================================
440 // INLINE DEFINITIONS
441 //=============================================================================================================
442 } // NAMESPACE
443 
444 #ifndef metatype_listrowvectorxd
445 #define metatype_listrowvectorxd
446 Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVector);
447 #endif
448 
449 #ifndef metatype_listrowvectorpair
450 #define metatype_listrowvectorpair
451 Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVectorPair);
452 #endif
453 
454 #endif // EVOKEDSETMODEL_H
DISPSHARED_EXPORT
#define DISPSHARED_EXPORT
Definition: disp_global.h:55
DISPLIB::EvokedSetModel::SPtr
QSharedPointer< EvokedSetModel > SPtr
Definition: evokedsetmodel.h:106
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVector)
DISPLIB::EvokedSetModel::ConstSPtr
QSharedPointer< const EvokedSetModel > ConstSPtr
Definition: evokedsetmodel.h:107
DISPLIB::EvokedSetModel
The EvokedSetModel class implements the data access model for evoked set data.
Definition: evokedsetmodel.h:101
fiff_types.h
Definitions for describing the objects in a FIFF file.
filterkernel.h
The FilterKernel class represents a filter object that generates the FIR filter coefficients using Pa...