44: QAbstractTableModel(parent)
48, m_bInitialized(false)
59 if(!m_qMapIdxRowSelection.empty())
60 return m_qMapIdxRowSelection.size();
76 if(role != Qt::DisplayRole && role != Qt::BackgroundRole)
79 if (index.isValid()) {
80 qint32 r = m_qMapIdxRowSelection[index.row()];
83 if(index.column() == 0 && role == Qt::DisplayRole)
85 return QVariant(m_pFiffInfo->chs[r].ch_name);
88 if(index.column()==1) {
92 case Qt::DisplayRole: {
99 vec = m_dataCurrentFreeze.row(r);
105 vec = m_dataCurrent.row(r);
111 case Qt::BackgroundRole: {
136 if(role != Qt::DisplayRole && role != Qt::TextAlignmentRole)
139 if(orientation == Qt::Horizontal) {
145 case Qt::DisplayRole:
146 return QVariant(
"data plot");
147 case Qt::TextAlignmentRole:
148 return QVariant(Qt::AlignLeft);
150 return QVariant(
"data plot");
153 else if(orientation == Qt::Vertical) {
154 QModelIndex chname = createIndex(section,0);
156 case Qt::DisplayRole:
157 return QVariant(
data(chname).toString());
179 m_iScaleType = ScaleType;
186 m_dataCurrent =
data;
188 if(m_vecFreqScale.size() != m_dataCurrent.cols() && m_pFiffInfo)
190 double freqRes = (m_pFiffInfo->sfreq/2) / m_dataCurrent.cols();
192 m_vecFreqScale.resize(1,m_dataCurrent.cols());
195 for(qint32 i = 0; i < m_dataCurrent.cols(); ++i)
198 m_vecFreqScale[i] = log10(currFreq+k);
200 m_vecFreqScale[i] = currFreq;
205 double max = m_vecFreqScale.maxCoeff();
206 m_vecFreqScale /= max;
208 m_vecFreqScaleBound = m_vecFreqScale;
210 m_iUpperFrqIdx = m_vecFreqScale.size()-1;
212 m_bInitialized =
true;
216 QModelIndex topLeft = this->index(0,1);
217 QModelIndex bottomRight = this->index(m_dataCurrent.rows()-1,1);
218 QVector<int> roles; roles << Qt::DisplayRole;
219 emit dataChanged(topLeft, bottomRight, roles);
228 m_qMapIdxRowSelection.clear();
231 for(qint32 i = 0; i < selection.size(); ++i)
233 if(selection[i] < m_pFiffInfo->chs.size())
235 m_qMapIdxRowSelection.insert(count,selection[i]);
251 m_qMapIdxRowSelection.clear();
253 for(qint32 i = 0; i < m_pFiffInfo->chs.size(); ++i)
254 m_qMapIdxRowSelection.insert(i,i);
265 m_bIsFreezed = !m_bIsFreezed;
268 m_dataCurrentFreeze = m_dataCurrent;
271 QModelIndex topLeft = this->index(0,1);
272 QModelIndex bottomRight = this->index(m_dataCurrent.rows()-1,1);
273 QVector<int> roles; roles << Qt::DisplayRole;
274 emit dataChanged(topLeft, bottomRight, roles);
281 if(!m_bInitialized) {
287 double nf = m_pFiffInfo->sfreq/2;
290 m_iUpperFrqIdx = m_vecFreqScale.size()-1;
293 for(qint32 i = 0; i < m_vecFreqScale.size(); ++i) {
294 float val = m_vecFreqScale[i]*nf;
295 if(val < fLowerFrqBound) {
299 if( val > fUpperFrqBound) {
306 m_vecFreqScaleBound = m_vecFreqScale;
307 for(qint32 i = 0; i < m_vecFreqScaleBound.size(); ++i) {
308 m_vecFreqScaleBound[i] = (m_vecFreqScaleBound[i] - m_vecFreqScale[m_iLowerFrqIdx]) / (m_vecFreqScale[m_iUpperFrqIdx] - m_vecFreqScale[m_iLowerFrqIdx]);
QAbstractTableModel storing per-channel FFT magnitudes for SpectrumView.
Full FIFF measurement metadata: everything from FIFFB_MEAS / FIFFB_MEAS_INFO needed to interpret a re...
FIFF file I/O, in-memory data structures and high-level readers/writers.
2-D display widgets and visualisation helpers (charts, topography, colour maps).
void newSelection(QList< qint32 > selection)
void setBoundaries(float fLowerFrqBound, float fUpperFrqBound)
FrequencySpectrumModel(QObject *parent=0)
void selectRows(const QList< qint32 > &selection)
void addData(const Eigen::MatrixXd &data)
void toggleFreeze(const QModelIndex &index)
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
void setInfo(QSharedPointer< FIFFLIB::FiffInfo > &info)
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
void setScaleType(qint8 ScaleType)
QSharedPointer< FiffInfo > SPtr