v2.0.0
Loading...
Searching...
No Matches
rtaveraging.h
Go to the documentation of this file.
1//=============================================================================================================
35
36#ifndef RTAVERAGING_RTPROCESSING_H
37#define RTAVERAGING_RTPROCESSING_H
38
39//=============================================================================================================
40// INCLUDES
41//=============================================================================================================
42
43#include "rtprocessing_global.h"
44
46#include <fiff/fiff_info.h>
47
48//=============================================================================================================
49// QT INCLUDES
50//=============================================================================================================
51
52#include <QThread>
53#include <QSharedPointer>
54#include <QObject>
55
56//=============================================================================================================
57// EIGEN INCLUDES
58//=============================================================================================================
59
60#include <Eigen/Core>
61
62//=============================================================================================================
63// FORWARD DECLARATIONS
64//=============================================================================================================
65
66//=============================================================================================================
67// DEFINE NAMESPACE RTPROCESSINGLIB
68//=============================================================================================================
69
70namespace RTPROCESSINGLIB
71{
72
73//=============================================================================================================
74// RTPROCESSINGLIB FORWARD DECLARATIONS
75//=============================================================================================================
76
77//=============================================================================================================
84{
85 Q_OBJECT
86
87public:
88 //=========================================================================================================
100 RtAveragingWorker(quint32 numAverages,
101 quint32 iPreStimSamples,
102 quint32 iPostStimSamples,
103 quint32 iBaselineFromMSecs,
104 quint32 iBaselineToMSecs,
105 quint32 iTriggerIndex,
106 FIFFLIB::FiffInfo::SPtr pFiffInfo);
107
108 //=========================================================================================================
114 void doWork(const Eigen::MatrixXd& matData);
115
116 //=========================================================================================================
122 void setAverageNumber(qint32 numAve);
123
124 //=========================================================================================================
131 void setPreStim(qint32 samples,
132 qint32 secs);
133
134 //=========================================================================================================
141 void setPostStim(qint32 samples,
142 qint32 secs);
143
144 //=========================================================================================================
150 void setTriggerChIndx(qint32 idx);
151
152 //=========================================================================================================
158 void setArtifactReduction(const QMap<QString, double> &mapThresholds);
159
160 //=========================================================================================================
166 void setBaselineActive(bool activate);
167
168 //=========================================================================================================
175 void setBaselineFrom(int fromSamp,
176 int fromMSec);
177
178 //=========================================================================================================
185 void setBaselineTo(int toSamp,
186 int toMSec);
187
188 //=========================================================================================================
192 void reset();
193
194protected:
195 //=========================================================================================================
199 void doAveraging(const Eigen::MatrixXd& rawSegment);
200
201 //=========================================================================================================
205 void fillFrontBuffer(const Eigen::MatrixXd& data,
206 double dTriggerType);
207
208 void emitEvoked(double dTriggerType,
209 QStringList& lResponsibleTriggerTypes);
210
211 //=========================================================================================================
215 void fillBackBuffer(const Eigen::MatrixXd& data,
216 double dTriggerType);
217
218 //=========================================================================================================
222 void mergeData(double dTriggerType);
223
224 //=========================================================================================================
228 void generateEvoked(double dTriggerType);
229
230 //=========================================================================================================
234 inline bool controlValuesChanged();
235
237
240
243
246
248
250
252
253 QPair<float,float> m_pairBaselineSec;
254 QPair<float,float> m_pairBaselineSamp;
255
258
259 QMap<QString,double> m_mapThresholds;
260 QMap<double,QList<Eigen::MatrixXd> > m_mapStimAve;
261 QMap<double,Eigen::MatrixXd> m_mapDataPre;
262 QMap<double,Eigen::MatrixXd> m_mapDataPost;
263 QMap<double,qint32> m_mapMatDataPostIdx;
264 QMap<double,bool> m_mapFillingBackBuffer;
265
266signals:
267 //=========================================================================================================
274 void resultReady(const FIFFLIB::FiffEvokedSet& evokedStimSet,
275 const QStringList& lResponsibleTriggerTypes);
276};
277
278//=============================================================================================================
285{
286 Q_OBJECT
287
288public:
289 typedef QSharedPointer<RtAveraging> SPtr;
290 typedef QSharedPointer<const RtAveraging> ConstSPtr;
291
292 //=========================================================================================================
305 explicit RtAveraging(quint32 numAverages,
306 quint32 iPreStimSamples,
307 quint32 iPostStimSamples,
308 quint32 iBaselineFromSecs,
309 quint32 iBaselineToSecs,
310 quint32 iTriggerIndex,
311 FIFFLIB::FiffInfo::SPtr pFiffInfo,
312 QObject *parent = 0);
313
314 //=========================================================================================================
318 ~RtAveraging();
319
320 //=========================================================================================================
326 void append(const Eigen::MatrixXd &data);
327
328 //=========================================================================================================
340 void restart(quint32 numAverages,
341 quint32 iPreStimSamples,
342 quint32 iPostStimSamples,
343 quint32 iBaselineFromSecs,
344 quint32 iBaselineToSecs,
345 quint32 iTriggerIndex,
346 FIFFLIB::FiffInfo::SPtr pFiffInfo);
347
348 //=========================================================================================================
352 void stop();
353
354 //=========================================================================================================
360 void setAverageNumber(qint32 numAve);
361
362 //=========================================================================================================
369 void setPreStim(qint32 samples,
370 qint32 secs);
371
372 //=========================================================================================================
379 void setPostStim(qint32 samples,
380 qint32 secs);
381
382 //=========================================================================================================
388 void setTriggerChIndx(qint32 idx);
389
390 //=========================================================================================================
396 void setArtifactReduction(const QMap<QString, double> &mapThresholds);
397
398 //=========================================================================================================
404 void setBaselineActive(bool activate);
405
406 //=========================================================================================================
413 void setBaselineFrom(int fromSamp,
414 int fromMSec);
415
416 //=========================================================================================================
423 void setBaselineTo(int toSamp,
424 int toMSec);
425
426 //=========================================================================================================
430 void reset();
431
432protected:
433 //=========================================================================================================
437 void handleResults(const FIFFLIB::FiffEvokedSet& evokedStimSet,
438 const QStringList& lResponsibleTriggerTypes);
439
441
442signals:
443 void evokedStim(const FIFFLIB::FiffEvokedSet& evokedStimSet,
444 const QStringList& lResponsibleTriggerTypes);
445 void operate(const Eigen::MatrixXd& matData);
446 void averageNumberChanged(qint32 numAve);
447 void averagePreStimChanged(qint32 samples,
448 qint32 secs);
449 void averagePostStimChanged(qint32 samples,
450 qint32 secs);
452 void averageArtifactReductionChanged(const QMap<QString, double> &mapThresholds);
453 void averageBaselineActiveChanged(bool activate);
454 void averageBaselineFromChanged(int fromSamp,
455 int fromMSec);
457 int toMSec);
459};
460
461//=============================================================================================================
462// INLINE DEFINITIONS
463//=============================================================================================================
464
466{
467 bool result = false;
468
472 result = true;
473 }
474
475 return result;
476}
477} // NAMESPACE
478
479#endif // RTAVERAGING_RTPROCESSING_H
realtime library export/import macros.
#define RTPROCESINGSHARED_EXPORT
FiffInfo class declaration.
FiffEvokedSet class declaration.
Real-time signal processing (filtering, averaging, HPI fitting, noise reduction).
QSharedPointer< FiffInfo > SPtr
Definition fiff_info.h:87
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 setBaselineActive(bool activate)
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)