74 #include "../Utils/types.h"
75 #include "../Utils/filteroperator.h"
76 #include "../Utils/rawsettings.h"
77 #include "../Utils/datapackage.h"
86 #include <QAbstractTableModel>
92 #include <QtConcurrent>
94 #include <QProgressDialog>
102 #include <Eigen/Core>
103 #include <Eigen/SparseCore>
104 #include <unsupported/Eigen/FFT>
106 #ifndef EIGEN_FFTW_DEFAULT
107 #define EIGEN_FFTW_DEFAULT
126 using namespace Eigen;
149 RawModel(QFile& qFile, QObject *parent);
156 virtual int rowCount(
const QModelIndex &parent = QModelIndex())
const ;
157 virtual int columnCount(
const QModelIndex &parent = QModelIndex())
const;
158 virtual QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const;
159 virtual QVariant headerData(
int section, Qt::Orientation orientation,
int role = Qt::DisplayRole)
const;
167 bool loadFiffData(QFile *qFile);
176 bool writeFiffData(QIODevice *p_IODevice);
190 void genStdFilterOps();
197 void loadFiffInfos();
211 void resetPosition(qint32 position);
219 void reloadFiffData(
bool before);
229 QPair<MatrixXd,MatrixXd> readSegment(fiff_int_t from, fiff_int_t to);
233 bool m_bStartReached;
235 bool m_bReloadBefore;
238 QFutureWatcher<QPair<MatrixXd,MatrixXd> > m_reloadFutureWatcher;
243 QFutureWatcher<void> m_operatorFutureWatcher;
244 QList<QPair<int,RowVectorXd> > m_listTmpChData;
246 QString m_filterChType;
251 QList<QSharedPointer<DataPackage> > m_data;
254 QMap<int,QSharedPointer<MNEOperator> > m_assignedOperators;
256 qint32 m_iAbsFiffCursor;
257 qint32 m_iCurAbsScrollPos;
259 qint32 m_iWindowSize;
262 qint16 m_iFilterTaps;
263 int m_iCurrentFFTLength;
286 void assignedOperatorsChanged(
const QMap<
int,QSharedPointer<MNEOperator> >&);
288 void writeProgressChanged(
int);
290 void writeProgressRangeChanged(
int,
int);
299 void updateScrollPos(
int value);
308 void markChBad(QModelIndexList chlist,
bool status);
318 void applyOperator(QModelIndexList chlist,
const QSharedPointer<MNEOperator>& operatorPtr,
const QString &chType);
327 void applyOperator(QModelIndexList chlist,
const QSharedPointer<MNEOperator> &operatorPtr);
335 void applyOperatorsConcurrently(QPair<int, RowVectorXd> &chdata)
const;
343 void updateOperators(QModelIndex chan);
351 void updateOperators(QModelIndexList chlist);
356 void updateOperators();
365 void undoFilter(QModelIndexList chlist,
const QSharedPointer<MNEOperator> &filterPtr);
373 void undoFilter(QModelIndexList chlist);
381 void undoFilter(
const QString &chType);
396 void insertReloadedData(QPair<MatrixXd,MatrixXd> dataTimesPair);
402 void updateOperatorsConcurrently();
410 void updateOperatorsConcurrently(
int windowIndex);
418 void insertProcessedDataRow(
int rowIndex);
426 void insertProcessedDataAll(
int windowIndex);
432 void insertProcessedDataAll();
438 void performOverlapAdd();
446 void performOverlapAdd(
int windowIndex);
455 inline qint32 sizeOfFiffData();
463 inline qint32 firstSample()
const;
471 inline qint32 lastSample()
const;
479 inline qint32 sizeOfPreloadedData()
const;
487 inline qint32 relFiffCursor()
const;
495 inline qint32 absFiffCursor()
const;
503 inline qint32 RawModel::sizeOfFiffData() {
504 if(!m_pfiffIO->m_qlistRaw.empty())
505 return (m_pfiffIO->m_qlistRaw[0]->last_samp-m_pfiffIO->m_qlistRaw[0]->first_samp);
512 inline qint32 RawModel::firstSample()
const {
513 if(!m_pfiffIO->m_qlistRaw.empty())
514 return m_pfiffIO->m_qlistRaw[0]->first_samp;
521 inline qint32 RawModel::lastSample()
const {
522 if(!m_pfiffIO->m_qlistRaw.empty())
523 return m_pfiffIO->m_qlistRaw[0]->last_samp;
530 inline qint32 RawModel::sizeOfPreloadedData()
const {
531 if(!m_data.empty()) {
532 return m_data.size()*m_iWindowSize;
540 inline qint32 RawModel::relFiffCursor()
const {
541 return (m_iAbsFiffCursor - m_pfiffIO->m_qlistRaw[0]->first_samp);
547 inline qint32 RawModel::absFiffCursor()
const {
548 return m_iAbsFiffCursor;
QSharedPointer< FiffIO > m_pfiffIO
FIFF measurement file information.
QList< FiffChInfo > m_chInfolist
QMap< QString, QSharedPointer< MNEOperator > > m_Operators
FIFF class declaration, which provides static wrapper functions to stay consistent with mne matlab to...