v2.0.0
Loading...
Searching...
No Matches
rt_averaging.h
Go to the documentation of this file.
1//=============================================================================================================
26
27#ifndef RT_AVERAGING_RTPROCESSING_H
28#define RT_AVERAGING_RTPROCESSING_H
29
30//=============================================================================================================
31// INCLUDES
32//=============================================================================================================
33
34#include "../dsp_global.h"
35
37#include <fiff/fiff_info.h>
38
39//=============================================================================================================
40// QT INCLUDES
41//=============================================================================================================
42
43#include <QThread>
44#include <QSharedPointer>
45#include <QObject>
46
47//=============================================================================================================
48// EIGEN INCLUDES
49//=============================================================================================================
50
51#include <Eigen/Core>
52
53//=============================================================================================================
54// FORWARD DECLARATIONS
55//=============================================================================================================
56
57//=============================================================================================================
58// DEFINE NAMESPACE RTPROCESSINGLIB
59//=============================================================================================================
60
61namespace RTPROCESSINGLIB
62{
63
64//=============================================================================================================
65// RTPROCESSINGLIB FORWARD DECLARATIONS
66//=============================================================================================================
67
68//=============================================================================================================
74class DSPSHARED_EXPORT RtAveragingWorker : public QObject
75{
76 Q_OBJECT
77
78public:
79 //=========================================================================================================
91 RtAveragingWorker(quint32 numAverages,
92 quint32 iPreStimSamples,
93 quint32 iPostStimSamples,
94 quint32 iBaselineFromMSecs,
95 quint32 iBaselineToMSecs,
96 quint32 iTriggerIndex,
97 FIFFLIB::FiffInfo::SPtr pFiffInfo);
98
99 //=========================================================================================================
105 void doWork(const Eigen::MatrixXd& matData);
106
107 //=========================================================================================================
113 void setAverageNumber(qint32 numAve);
114
115 //=========================================================================================================
122 void setPreStim(qint32 samples,
123 qint32 secs);
124
125 //=========================================================================================================
132 void setPostStim(qint32 samples,
133 qint32 secs);
134
135 //=========================================================================================================
141 void setTriggerChIndx(qint32 idx);
142
143 //=========================================================================================================
149 void setArtifactReduction(const QMap<QString, double> &mapThresholds);
150
151 //=========================================================================================================
157 void setBaselineActive(bool activate);
158
159 //=========================================================================================================
166 void setBaselineFrom(int fromSamp,
167 int fromMSec);
168
169 //=========================================================================================================
176 void setBaselineTo(int toSamp,
177 int toMSec);
178
179 //=========================================================================================================
183 void reset();
184
185protected:
186 //=========================================================================================================
190 void doAveraging(const Eigen::MatrixXd& rawSegment);
191
192 //=========================================================================================================
196 void fillFrontBuffer(const Eigen::MatrixXd& data,
197 double dTriggerType);
198
199 void emitEvoked(double dTriggerType,
200 QStringList& lResponsibleTriggerTypes);
201
202 //=========================================================================================================
206 void fillBackBuffer(const Eigen::MatrixXd& data,
207 double dTriggerType);
208
209 //=========================================================================================================
213 void mergeData(double dTriggerType);
214
215 //=========================================================================================================
219 void generateEvoked(double dTriggerType);
220
221 //=========================================================================================================
225 inline bool controlValuesChanged();
226
228
231
234
237
239
241
243
244 QPair<float,float> m_pairBaselineSec;
245 QPair<float,float> m_pairBaselineSamp;
246
248 FIFFLIB::FiffEvokedSet m_stimEvokedSet;
249
250 QMap<QString,double> m_mapThresholds;
251 QMap<double,QList<Eigen::MatrixXd> > m_mapStimAve;
252 QMap<double,Eigen::MatrixXd> m_mapDataPre;
253 QMap<double,Eigen::MatrixXd> m_mapDataPost;
254 QMap<double,qint32> m_mapMatDataPostIdx;
255 QMap<double,bool> m_mapFillingBackBuffer;
256
257signals:
258 //=========================================================================================================
265 void resultReady(const FIFFLIB::FiffEvokedSet& evokedStimSet,
266 const QStringList& lResponsibleTriggerTypes);
267};
268
269//=============================================================================================================
275class DSPSHARED_EXPORT RtAveraging : public QObject
276{
277 Q_OBJECT
278
279public:
280 typedef QSharedPointer<RtAveraging> SPtr;
281 typedef QSharedPointer<const RtAveraging> ConstSPtr;
282
283 //=========================================================================================================
296 explicit RtAveraging(quint32 numAverages,
297 quint32 iPreStimSamples,
298 quint32 iPostStimSamples,
299 quint32 iBaselineFromSecs,
300 quint32 iBaselineToSecs,
301 quint32 iTriggerIndex,
302 FIFFLIB::FiffInfo::SPtr pFiffInfo,
303 QObject *parent = 0);
304
305 //=========================================================================================================
309 ~RtAveraging();
310
311 //=========================================================================================================
317 void append(const Eigen::MatrixXd &data);
318
319 //=========================================================================================================
331 void restart(quint32 numAverages,
332 quint32 iPreStimSamples,
333 quint32 iPostStimSamples,
334 quint32 iBaselineFromSecs,
335 quint32 iBaselineToSecs,
336 quint32 iTriggerIndex,
337 FIFFLIB::FiffInfo::SPtr pFiffInfo);
338
339 //=========================================================================================================
343 void stop();
344
345 //=========================================================================================================
351 void setAverageNumber(qint32 numAve);
352
353 //=========================================================================================================
360 void setPreStim(qint32 samples,
361 qint32 secs);
362
363 //=========================================================================================================
370 void setPostStim(qint32 samples,
371 qint32 secs);
372
373 //=========================================================================================================
379 void setTriggerChIndx(qint32 idx);
380
381 //=========================================================================================================
387 void setArtifactReduction(const QMap<QString, double> &mapThresholds);
388
389 //=========================================================================================================
395 void setBaselineActive(bool activate);
396
397 //=========================================================================================================
404 void setBaselineFrom(int fromSamp,
405 int fromMSec);
406
407 //=========================================================================================================
414 void setBaselineTo(int toSamp,
415 int toMSec);
416
417 //=========================================================================================================
421 void reset();
422
423protected:
424 //=========================================================================================================
428 void handleResults(const FIFFLIB::FiffEvokedSet& evokedStimSet,
429 const QStringList& lResponsibleTriggerTypes);
430
432
433signals:
434 void evokedStim(const FIFFLIB::FiffEvokedSet& evokedStimSet,
435 const QStringList& lResponsibleTriggerTypes);
436 void operate(const Eigen::MatrixXd& matData);
437 void averageNumberChanged(qint32 numAve);
438 void averagePreStimChanged(qint32 samples,
439 qint32 secs);
440 void averagePostStimChanged(qint32 samples,
441 qint32 secs);
443 void averageArtifactReductionChanged(const QMap<QString, double> &mapThresholds);
444 void averageBaselineActiveChanged(bool activate);
445 void averageBaselineFromChanged(int fromSamp,
446 int fromMSec);
448 int toMSec);
450};
451
452//=============================================================================================================
453// INLINE DEFINITIONS
454//=============================================================================================================
455
457{
458 bool result = false;
459
463 result = true;
464 }
465
466 return result;
467}
468} // NAMESPACE
469
470#endif // RT_AVERAGING_RTPROCESSING_H
Set of averaged evoked responses sharing a FiffInfo, plus the ave-style category / rejection descript...
Full FIFF measurement metadata: everything from FIFFB_MEAS / FIFFB_MEAS_INFO needed to interpret a re...
Export/import macros and namespace declaration for the DSP library.
#define DSPSHARED_EXPORT
Definition dsp_global.h:50
void emitEvoked(double dTriggerType, QStringList &lResponsibleTriggerTypes)
void setArtifactReduction(const QMap< QString, double > &mapThresholds)
void fillFrontBuffer(const Eigen::MatrixXd &data, double dTriggerType)
FIFFLIB::FiffInfo::SPtr m_pFiffInfo
QPair< float, float > m_pairBaselineSec
QMap< double, bool > m_mapFillingBackBuffer
RtAveragingWorker(quint32 numAverages, quint32 iPreStimSamples, quint32 iPostStimSamples, quint32 iBaselineFromMSecs, quint32 iBaselineToMSecs, quint32 iTriggerIndex, FIFFLIB::FiffInfo::SPtr pFiffInfo)
QPair< float, float > m_pairBaselineSamp
void setBaselineTo(int toSamp, int toMSec)
FIFFLIB::FiffEvokedSet m_stimEvokedSet
void doAveraging(const Eigen::MatrixXd &rawSegment)
QMap< double, Eigen::MatrixXd > m_mapDataPre
QMap< double, QList< Eigen::MatrixXd > > m_mapStimAve
QMap< double, qint32 > m_mapMatDataPostIdx
void doWork(const Eigen::MatrixXd &matData)
QMap< double, Eigen::MatrixXd > m_mapDataPost
void setPostStim(qint32 samples, qint32 secs)
QMap< QString, double > m_mapThresholds
void resultReady(const FIFFLIB::FiffEvokedSet &evokedStimSet, const QStringList &lResponsibleTriggerTypes)
void fillBackBuffer(const Eigen::MatrixXd &data, double dTriggerType)
void setBaselineFrom(int fromSamp, int fromMSec)
void setPreStim(qint32 samples, qint32 secs)
void mergeData(double dTriggerType)
void generateEvoked(double dTriggerType)
void averageBaselineToChanged(int toSamp, int toMSec)
void setBaselineFrom(int fromSamp, int fromMSec)
void averageBaselineActiveChanged(bool activate)
RtAveraging(quint32 numAverages, quint32 iPreStimSamples, quint32 iPostStimSamples, quint32 iBaselineFromSecs, quint32 iBaselineToSecs, quint32 iTriggerIndex, FIFFLIB::FiffInfo::SPtr pFiffInfo, QObject *parent=0)
QSharedPointer< const RtAveraging > ConstSPtr
void setPreStim(qint32 samples, qint32 secs)
void averagePostStimChanged(qint32 samples, qint32 secs)
void setBaselineTo(int toSamp, int toMSec)
void averageNumberChanged(qint32 numAve)
QSharedPointer< RtAveraging > SPtr
void averagePreStimChanged(qint32 samples, qint32 secs)
void setAverageNumber(qint32 numAve)
void append(const Eigen::MatrixXd &data)
void averageArtifactReductionChanged(const QMap< QString, double > &mapThresholds)
void handleResults(const FIFFLIB::FiffEvokedSet &evokedStimSet, const QStringList &lResponsibleTriggerTypes)
void setPostStim(qint32 samples, qint32 secs)
void setTriggerChIndx(qint32 idx)
void setBaselineActive(bool activate)
void setArtifactReduction(const QMap< QString, double > &mapThresholds)
void evokedStim(const FIFFLIB::FiffEvokedSet &evokedStimSet, const QStringList &lResponsibleTriggerTypes)
void averageBaselineFromChanged(int fromSamp, int fromMSec)
void averageTriggerChIdxChanged(qint32 idx)
void restart(quint32 numAverages, quint32 iPreStimSamples, quint32 iPostStimSamples, quint32 iBaselineFromSecs, quint32 iBaselineToSecs, quint32 iTriggerIndex, FIFFLIB::FiffInfo::SPtr pFiffInfo)
void operate(const Eigen::MatrixXd &matData)
QSharedPointer< FiffInfo > SPtr
Definition fiff_info.h:90