v2.0.0
Loading...
Searching...
No Matches
evokedsetmodel.h
Go to the documentation of this file.
1//=============================================================================================================
22
23#ifndef EVOKEDSETMODEL_H
24#define EVOKEDSETMODEL_H
25
26//=============================================================================================================
27// INCLUDES
28//=============================================================================================================
29
30#include "../../disp_global.h"
31
32#include <dsp/filterkernel.h>
33#include <fiff/fiff_types.h>
34
35//=============================================================================================================
36// QT INCLUDES
37//=============================================================================================================
38
39#include <QAbstractTableModel>
40#include <QSharedPointer>
41#include <QColor>
42
43//=============================================================================================================
44// EIGEN INCLUDES
45//=============================================================================================================
46
47#include <Eigen/Core>
48#include <Eigen/SparseCore>
49
50//=============================================================================================================
51// FORWARD DECLARATIONS
52//=============================================================================================================
53
54namespace FIFFLIB {
55 class FiffEvokedSet;
56 class FiffProj;
57}
58
59//=============================================================================================================
60// DEFINE NAMESPACE DISPLIB
61//=============================================================================================================
62
63namespace DISPLIB
64{
65
66//=============================================================================================================
67// DISPLIB FORWARD DECLARATIONS
68//=============================================================================================================
69
71 enum ItemRole{GetAverageData = Qt::UserRole + 1020};
72}
73
74//=============================================================================================================
75// DEFINE TYPEDEFS
76//=============================================================================================================
77
78typedef Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor> MatrixXdR;
79typedef QPair<const double*,qint32> RowVectorPair;
80typedef QPair<QString, Eigen::RowVectorXd> AvrTypeRowVector;
81typedef QPair<QString, DISPLIB::RowVectorPair> AvrTypeRowVectorPair;
82
83//=============================================================================================================
92class DISPSHARED_EXPORT EvokedSetModel : public QAbstractTableModel
93{
94 Q_OBJECT
95
96public:
97 typedef QSharedPointer<EvokedSetModel> SPtr;
98 typedef QSharedPointer<const EvokedSetModel> ConstSPtr;
99
100 //=========================================================================================================
106 EvokedSetModel(QObject *parent = 0);
107
109
110 //=========================================================================================================
116 bool isInit() const;
117
118 //=========================================================================================================
124 qint32 getNumSamples() const;
125
126 //=========================================================================================================
134 virtual int rowCount(const QModelIndex &parent = QModelIndex()) const ;
135
136 //=========================================================================================================
144 virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
145
146 //=========================================================================================================
156 QVariant data(int row,
157 int column,
158 int role = Qt::DisplayRole) const;
159
160 //=========================================================================================================
169 virtual QVariant data(const QModelIndex &index,
170 int role = Qt::DisplayRole) const;
171
172 //=========================================================================================================
182 virtual QVariant headerData(int section,
183 Qt::Orientation orientation,
184 int role = Qt::DisplayRole) const;
185
186 void init();
187
188 //=========================================================================================================
194 void setEvokedSet(QSharedPointer<FIFFLIB::FiffEvokedSet> pEvokedSet);
195
196 //=========================================================================================================
197 QSharedPointer<FIFFLIB::FiffEvokedSet> getEvokedSet();
198
199 //=========================================================================================================
203 void updateData();
204
205 //=========================================================================================================
211 QSharedPointer<QMap<QString, QColor> > getAverageColor() const;
212
213 //=========================================================================================================
219 QSharedPointer<QMap<QString, bool> > getAverageActivation() const;
220
221 //=========================================================================================================
227 void setAverageColor(const QSharedPointer<QMap<QString, QColor> > qMapAverageColor);
228
229 //=========================================================================================================
235 void setAverageActivation(const QSharedPointer<QMap<QString, bool> > qMapAverageActivation);
236
237 //=========================================================================================================
245 FIFFLIB::fiff_int_t getKind(qint32 row) const;
246
247 //=========================================================================================================
255 bool getIsChannelBad(qint32 row) const;
256
257 //=========================================================================================================
265 FIFFLIB::fiff_int_t getUnit(qint32 row) const;
266
267 //=========================================================================================================
275 FIFFLIB::fiff_int_t getCoil(qint32 row) const;
276
277 //=========================================================================================================
283 const QMap<qint32,qint32>& getIdxSelMap() const;
284
285 //=========================================================================================================
291 int getNumberOfTimeSpacers() const;
292
293 //=========================================================================================================
299 QPair<QVariant,QVariant> getBaselineInfo() const;
300
301 //=========================================================================================================
307 int getNumAverages() const;
308
309 //=========================================================================================================
315 qint32 getNumPreStimSamples() const;
316
317 //=========================================================================================================
323 float getSamplingFrequency() const;
324
325 //=========================================================================================================
331 void selectRows(const QList<qint32> &selection);
332
333 //=========================================================================================================
337 void resetSelection();
338
339 //=========================================================================================================
345 qint32 numVLines() const;
346
347 //=========================================================================================================
353 bool isFreezed() const;
354
355 //=========================================================================================================
359 void updateProjection(const QList<FIFFLIB::FiffProj>& projs);
360
361 //=========================================================================================================
367 void updateCompensator(int to);
368
369 //=========================================================================================================
373 void toggleFreeze();
374
375private:
376 QSharedPointer<FIFFLIB::FiffEvokedSet> m_pEvokedSet;
377
378 QMap<qint32,qint32> m_qMapIdxRowSelection;
379 QSharedPointer<QMap<QString, QColor> > m_qMapAverageColor;
380 QSharedPointer<QMap<QString, bool> > m_qMapAverageActivation;
381 QSharedPointer<QMap<QString, QColor> > m_qMapAverageColorOld;
382 QSharedPointer<QMap<QString, bool> > m_qMapAverageActivationOld;
383
384 QList<Eigen::MatrixXd> m_matData;
385 QList<Eigen::MatrixXd> m_matDataFreeze;
386 QStringList m_lAvrTypes;
387
388 Eigen::MatrixXd m_matProj;
389 Eigen::MatrixXd m_matComp;
390 Eigen::SparseMatrix<double> m_matSparseProjCompMult;
391 Eigen::SparseMatrix<double> m_matSparseProjMult;
392 Eigen::SparseMatrix<double> m_matSparseCompMult;
393
394 Eigen::RowVectorXi m_vecBadIdcs;
395
396 QPair<QVariant,QVariant> m_pairBaseline;
397
398 bool m_bIsInit;
399 bool m_bIsFreezed;
400 bool m_bProjActivated;
401 bool m_bCompActivated;
402 float m_fSps;
403
404signals:
405 //=========================================================================================================
411 void newSelection(QList<qint32> selection);
412
413 //=========================================================================================================
419 void newAverageColorMap(const QSharedPointer<QMap<QString, QColor> > qMapAverageColor);
420
421 //=========================================================================================================
427 void newAverageActivationMap(const QSharedPointer<QMap<QString, bool> > qMapAverageActivation);
428};
429
430//=============================================================================================================
431// INLINE DEFINITIONS
432//=============================================================================================================
433} // NAMESPACE
434
435#ifndef metatype_listrowvectorxd
436#define metatype_listrowvectorxd
438#endif
439
440#ifndef metatype_listrowvectorpair
441#define metatype_listrowvectorpair
443#endif
444
445#endif // EVOKEDSETMODEL_H
Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVector)
Export macros and build-info hooks for the DISPLIB shared library.
#define DISPSHARED_EXPORT
Definition disp_global.h:38
Primitive scalar typedefs and forward-compatible aliases backing the FIFF type system.
Linear-phase FIR filter kernel with overlap-add FFT convolution back-end.
FIFF file I/O, in-memory data structures and high-level readers/writers.
2-D display widgets and visualisation helpers (charts, topography, colour maps).
QPair< QString, DISPLIB::RowVectorPair > AvrTypeRowVectorPair
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > MatrixXdR
QPair< QString, Eigen::RowVectorXd > AvrTypeRowVector
QPair< const double *, qint32 > RowVectorPair
FIFFLIB::fiff_int_t getUnit(qint32 row) const
QSharedPointer< QMap< QString, bool > > getAverageActivation() const
void setAverageActivation(const QSharedPointer< QMap< QString, bool > > qMapAverageActivation)
QSharedPointer< const EvokedSetModel > ConstSPtr
QVariant data(int row, int column, int role=Qt::DisplayRole) const
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
void newSelection(QList< qint32 > selection)
void newAverageActivationMap(const QSharedPointer< QMap< QString, bool > > qMapAverageActivation)
float getSamplingFrequency() const
QSharedPointer< EvokedSetModel > SPtr
void newAverageColorMap(const QSharedPointer< QMap< QString, QColor > > qMapAverageColor)
void selectRows(const QList< qint32 > &selection)
void updateProjection(const QList< FIFFLIB::FiffProj > &projs)
void setAverageColor(const QSharedPointer< QMap< QString, QColor > > qMapAverageColor)
const QMap< qint32, qint32 > & getIdxSelMap() const
qint32 getNumPreStimSamples() const
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
QPair< QVariant, QVariant > getBaselineInfo() const
QSharedPointer< QMap< QString, QColor > > getAverageColor() const
FIFFLIB::fiff_int_t getCoil(qint32 row) const
bool getIsChannelBad(qint32 row) const
void setEvokedSet(QSharedPointer< FIFFLIB::FiffEvokedSet > pEvokedSet)
QSharedPointer< FIFFLIB::FiffEvokedSet > getEvokedSet()
EvokedSetModel(QObject *parent=0)
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
FIFFLIB::fiff_int_t getKind(qint32 row) const
Single SSP projection item: kind, active flag, desired flag and the named projection vector matrix.
Definition fiff_proj.h:78