MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
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
66namespace FIFFLIB {
67 class FiffEvokedSet;
68 class FiffProj;
69}
70
71//=============================================================================================================
72// DEFINE NAMESPACE DISPLIB
73//=============================================================================================================
74
75namespace DISPLIB
76{
77
78//=============================================================================================================
79// DISPLIB FORWARD DECLARATIONS
80//=============================================================================================================
81
82namespace EvokedSetModelRoles {
83 enum ItemRole{GetAverageData = Qt::UserRole + 1020};
84}
85
86//=============================================================================================================
87// DEFINE TYPEDEFS
88//=============================================================================================================
89
90typedef Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor> MatrixXdR;
91typedef QPair<const double*,qint32> RowVectorPair;
92typedef QPair<QString, Eigen::RowVectorXd> AvrTypeRowVector;
93typedef QPair<QString, DISPLIB::RowVectorPair> AvrTypeRowVectorPair;
94
95//=============================================================================================================
101class DISPSHARED_EXPORT EvokedSetModel : public QAbstractTableModel
102{
103 Q_OBJECT
104
105public:
106 typedef QSharedPointer<EvokedSetModel> SPtr;
107 typedef QSharedPointer<const EvokedSetModel> ConstSPtr;
109 //=========================================================================================================
115 EvokedSetModel(QObject *parent = 0);
116
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
384private:
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;
413signals:
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
446Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVector);
447#endif
448
449#ifndef metatype_listrowvectorpair
450#define metatype_listrowvectorpair
451Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVectorPair);
452#endif
453
454#endif // EVOKEDSETMODEL_H
The FilterKernel class represents a filter object that generates the FIR filter coefficients using Pa...
Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVector)
#define DISPSHARED_EXPORT
Definition disp_global.h:55
Definitions for describing the objects in a FIFF file.
The EvokedSetModel class implements the data access model for evoked set data.
QSharedPointer< const EvokedSetModel > ConstSPtr
void newSelection(QList< qint32 > selection)
void newAverageActivationMap(const QSharedPointer< QMap< QString, bool > > qMapAverageActivation)
QSharedPointer< EvokedSetModel > SPtr
void newAverageColorMap(const QSharedPointer< QMap< QString, QColor > > qMapAverageColor)