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{
56class FiffEvokedSet;
57class FiffProj;
58}
59
60//=============================================================================================================
61// DEFINE NAMESPACE DISPLIB
62//=============================================================================================================
63
64namespace DISPLIB
65{
66
67//=============================================================================================================
68// DISPLIB FORWARD DECLARATIONS
69//=============================================================================================================
70
72{
74{
75 GetAverageData = Qt::UserRole + 1020
76};
77}
78
79//=============================================================================================================
80// DEFINE TYPEDEFS
81//=============================================================================================================
82
83typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> MatrixXdR;
84typedef QPair<const double*, qint32> RowVectorPair;
85typedef QPair<QString, Eigen::RowVectorXd> AvrTypeRowVector;
86typedef QPair<QString, DISPLIB::RowVectorPair> AvrTypeRowVectorPair;
87
88//=============================================================================================================
97class DISPSHARED_EXPORT EvokedSetModel : public QAbstractTableModel
98{
99 Q_OBJECT
100
101public:
102 typedef QSharedPointer<EvokedSetModel> SPtr;
103 typedef QSharedPointer<const EvokedSetModel> ConstSPtr;
104
105 //=========================================================================================================
111 EvokedSetModel(QObject* parent = 0);
112
114
115 //=========================================================================================================
121 bool isInit() const;
122
123 //=========================================================================================================
129 qint32 getNumSamples() const;
130
131 //=========================================================================================================
139 virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
140
141 //=========================================================================================================
149 virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
150
151 //=========================================================================================================
161 QVariant data(int row,
162 int column,
163 int role = Qt::DisplayRole) const;
164
165 //=========================================================================================================
174 virtual QVariant data(const QModelIndex& index,
175 int role = Qt::DisplayRole) const;
176
177 //=========================================================================================================
187 virtual QVariant headerData(int section,
188 Qt::Orientation orientation,
189 int role = Qt::DisplayRole) const;
190
191 void init();
192
193 //=========================================================================================================
199 void setEvokedSet(QSharedPointer<FIFFLIB::FiffEvokedSet> pEvokedSet);
200
201 //=========================================================================================================
202 QSharedPointer<FIFFLIB::FiffEvokedSet> getEvokedSet();
203
204 //=========================================================================================================
208 void updateData();
209
210 //=========================================================================================================
216 QSharedPointer<QMap<QString, QColor>> getAverageColor() const;
217
218 //=========================================================================================================
224 QSharedPointer<QMap<QString, bool>> getAverageActivation() const;
225
226 //=========================================================================================================
232 void setAverageColor(const QSharedPointer<QMap<QString, QColor>> qMapAverageColor);
233
234 //=========================================================================================================
240 void setAverageActivation(const QSharedPointer<QMap<QString, bool>> qMapAverageActivation);
241
242 //=========================================================================================================
250 FIFFLIB::fiff_int_t getKind(qint32 row) const;
251
252 //=========================================================================================================
260 bool getIsChannelBad(qint32 row) const;
261
262 //=========================================================================================================
270 FIFFLIB::fiff_int_t getUnit(qint32 row) const;
271
272 //=========================================================================================================
280 FIFFLIB::fiff_int_t getCoil(qint32 row) const;
281
282 //=========================================================================================================
288 const QMap<qint32, qint32>& getIdxSelMap() const;
289
290 //=========================================================================================================
296 int getNumberOfTimeSpacers() const;
297
298 //=========================================================================================================
304 QPair<QVariant, QVariant> getBaselineInfo() const;
305
306 //=========================================================================================================
312 int getNumAverages() const;
313
314 //=========================================================================================================
320 qint32 getNumPreStimSamples() const;
321
322 //=========================================================================================================
328 float getSamplingFrequency() const;
329
330 //=========================================================================================================
336 void selectRows(const QList<qint32>& selection);
337
338 //=========================================================================================================
342 void resetSelection();
343
344 //=========================================================================================================
350 qint32 numVLines() const;
351
352 //=========================================================================================================
358 bool isFreezed() const;
359
360 //=========================================================================================================
366 void updateProjection(const QList<FIFFLIB::FiffProj>& projs);
367
368 //=========================================================================================================
374 void updateCompensator(int to);
375
376 //=========================================================================================================
380 void toggleFreeze();
381
382private:
383 QSharedPointer<FIFFLIB::FiffEvokedSet> m_pEvokedSet;
384
385 QMap<qint32, qint32> m_qMapIdxRowSelection;
386 QSharedPointer<QMap<QString, QColor>> m_qMapAverageColor;
387 QSharedPointer<QMap<QString, bool>> m_qMapAverageActivation;
388 QSharedPointer<QMap<QString, QColor>> m_qMapAverageColorOld;
389 QSharedPointer<QMap<QString, bool>> m_qMapAverageActivationOld;
390
391 QList<Eigen::MatrixXd> m_matData;
392 QList<Eigen::MatrixXd> m_matDataFreeze;
393 QStringList m_lAvrTypes;
394 QStringList m_lAvrTypesFreeze;
395
396 Eigen::MatrixXd m_matProj;
397 Eigen::MatrixXd m_matComp;
398 Eigen::SparseMatrix<double> m_matSparseProjCompMult;
399 Eigen::SparseMatrix<double> m_matSparseProjMult;
400 Eigen::SparseMatrix<double> m_matSparseCompMult;
401
402 Eigen::RowVectorXi m_vecBadIdcs;
403
404 QPair<QVariant, QVariant> m_pairBaseline;
405
406 bool m_bIsInit;
407 bool m_bIsFreezed;
408 bool m_bProjActivated;
409 bool m_bCompActivated;
410 float m_fSps;
411
412signals:
413 //=========================================================================================================
419 void newSelection(QList<qint32> selection);
420
421 //=========================================================================================================
427 void newAverageColorMap(const QSharedPointer<QMap<QString, QColor>> qMapAverageColor);
428
429 //=========================================================================================================
435 void newAverageActivationMap(const QSharedPointer<QMap<QString, bool>> qMapAverageActivation);
436};
437
438//=============================================================================================================
439// INLINE DEFINITIONS
440//=============================================================================================================
441} // NAMESPACE
442
443#ifndef metatype_listrowvectorxd
444#define metatype_listrowvectorxd
446#endif
447
448#ifndef metatype_listrowvectorpair
449#define metatype_listrowvectorpair
451#endif
452
453#endif // EVOKEDSETMODEL_H
MatrixXi selectRows(const MatrixXi &events, const std::vector< bool > &keep)
Primitive scalar typedefs and forward-compatible aliases backing the FIFF type system.
Export macros and build-info hooks for the DISPLIB shared library.
#define DISPSHARED_EXPORT
Definition disp_global.h:38
Q_DECLARE_METATYPE(DISPLIB::AvrTypeRowVector)
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.
qint32 fiff_int_t
Definition fiff_types.h:86
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 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
Set of FiffEvoked instances sharing one FiffInfo, plus channel-picking and compensation helpers.
Single SSP projection item: kind, active flag, desired flag and the named projection vector matrix.
Definition fiff_proj.h:81