MNE-CPP  0.1.9
A Framework for Electrophysiology
rtsourcedatacontroller.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 //=============================================================================================================
36 // INCLUDES
37 //=============================================================================================================
38 
39 #include "rtsourcedatacontroller.h"
41 #include "rtsourcedataworker.h"
42 
43 //=============================================================================================================
44 // QT INCLUDES
45 //=============================================================================================================
46 
47 #include <QDebug>
48 
49 //=============================================================================================================
50 // EIGEN INCLUDES
51 //=============================================================================================================
52 
53 #include <Eigen/Core>
54 
55 //=============================================================================================================
56 // USED NAMESPACES
57 //=============================================================================================================
58 
59 using namespace DISP3DLIB;
60 using namespace Eigen;
61 using namespace FSLIB;
62 
63 //=============================================================================================================
64 // DEFINE MEMBER METHODS
65 //=============================================================================================================
66 
68 : m_iMSecInterval(17)
69 {
70  //Stream data
73 
74  connect(&m_rtSourceDataWorkerThread, &QThread::finished,
75  m_pRtSourceDataWorker.data(), &QObject::deleteLater);
76 
78  this, &RtSourceDataController::onNewRtRawData, Qt::BlockingQueuedConnection);
79 
81  this, &RtSourceDataController::onNewSmoothedRtRawData, Qt::BlockingQueuedConnection);
82 
83  connect(&m_timer, &QTimer::timeout,
85 
87  m_pRtSourceDataWorker.data(), &RtSourceDataWorker::addData, Qt::DirectConnection);
88 
91 
94 
97 
99  m_pRtSourceDataWorker.data(), &RtSourceDataWorker::setThresholds, Qt::DirectConnection);
100 
103 
105  m_pRtSourceDataWorker.data(), &RtSourceDataWorker::setLoopState, Qt::DirectConnection);
106 
108  m_pRtSourceDataWorker.data(), &RtSourceDataWorker::setNumberAverages, Qt::DirectConnection);
109 
111  m_pRtSourceDataWorker.data(), &RtSourceDataWorker::setColormapType, Qt::DirectConnection);
112 
115 
117 
118  //Calculate interpolation matrix left hemisphere
121 
124 
125  connect(&m_rtInterpolationLeftWorkerThread, &QThread::finished,
126  m_pRtInterpolationLeftWorker.data(), &QObject::deleteLater);
127 
130 
133 
136 
139 
142 
144 
145  //Calculate interpolation matrix right hemisphere
148 
151 
152  connect(&m_rtInterpolationRightWorkerThread, &QThread::finished,
153  m_pRtInterpolationRightWorker.data(), &QObject::deleteLater);
154 
157 
160 
163 
166 
169 
171 }
172 
173 //=============================================================================================================
174 
176 {
183 }
184 
185 //=============================================================================================================
186 
188 {
189  if(bStreamingState) {
190  m_timer.start(m_iMSecInterval);
191  } else {
192  m_timer.stop();
193  }
194 }
195 
196 //=============================================================================================================
197 
198 void RtSourceDataController::setInterpolationFunction(const QString &sInterpolationFunction)
199 {
200  emit interpolationFunctionChanged(sInterpolationFunction);
201 }
202 
203 //=============================================================================================================
204 
206 {
207  emit loopStateChanged(bLoopState);
208 }
209 
210 //=============================================================================================================
211 
213 {
214  emit cancelDistanceChanged(dCancelDist);
215 }
216 
217 //=============================================================================================================
218 
220 {
221 // if(iMSec < 17) {
222 // qDebug() << "RtSourceDataController::setTimeInterval - The minimum time interval is 17mSec.";
223 // iMSec = 17;
224 // }
225 
226  m_iMSecInterval = iMSec;
227  m_timer.setInterval(m_iMSecInterval);
228 }
229 
230 //=============================================================================================================
231 
232 void RtSourceDataController::setInterpolationInfo(const MatrixX3f &matVerticesLeft,
233  const MatrixX3f &matVerticesRight,
234  const QVector<QVector<int> > &vecNeighborVerticesLeft,
235  const QVector<QVector<int> > &vecNeighborVerticesRight,
236  const VectorXi &vecVertNoLeftHemi,
237  const VectorXi &vecVertNoRightHemi)
238 {
239  QVector<int> vecMappedSubsetLeft, vecMappedSubsetRight;
240 
241  for(int i = 0; i < vecVertNoLeftHemi.rows(); ++i) {
242  vecMappedSubsetLeft.append(vecVertNoLeftHemi[i]);
243  }
244 
245  for(int i = 0; i < vecVertNoRightHemi.rows(); ++i) {
246  vecMappedSubsetRight.append(vecVertNoRightHemi[i]);
247  }
248 
249  emit interpolationInfoLeftChanged(matVerticesLeft,
250  vecNeighborVerticesLeft,
251  vecMappedSubsetLeft);
252 
253  emit interpolationInfoRightChanged(matVerticesRight,
254  vecNeighborVerticesRight,
255  vecMappedSubsetRight);
256 }
257 
258 //=============================================================================================================
259 
260 void RtSourceDataController::setSurfaceColor(const MatrixX4f &matColorLeft,
261  const MatrixX4f &matColorRight)
262 {
263  emit surfaceColorChanged(matColorLeft,
264  matColorRight);
265 }
266 
267 //=============================================================================================================
268 
269 void RtSourceDataController::setAnnotationInfo(const VectorXi &vecLabelIdsLeftHemi,
270  const VectorXi &vecLabelIdsRightHemi,
271  const QList<Label> &lLabelsLeftHemi,
272  const QList<Label> &lLabelsRightHemi,
273  const VectorXi &vecVertNoLeft,
274  const VectorXi &vecVertNoRight)
275 {
276  emit annotationInfoLeftChanged(vecLabelIdsLeftHemi,
277  lLabelsLeftHemi,
278  vecVertNoLeft);
279 
280  emit annotationInfoRightChanged(vecLabelIdsRightHemi,
281  lLabelsRightHemi,
282  vecVertNoRight);
283 }
284 
285 //=============================================================================================================
286 
287 void RtSourceDataController::setThresholds(const QVector3D &vecThresholds)
288 {
289  emit thresholdsChanged(vecThresholds);
290 }
291 
292 //=============================================================================================================
293 
295 {
296  emit visualizationTypeChanged(iVisType);
297 }
298 
299 //=============================================================================================================
300 
301 void RtSourceDataController::setColormapType(const QString &sColormapType)
302 {
303  emit colormapTypeChanged(sColormapType);
304 }
305 
306 //=============================================================================================================
307 
309 {
310  emit numberAveragesChanged(iNumAvr);
311 }
312 
313 //=============================================================================================================
314 
316 {
317  emit sFreqChanged(dSFreq);
318 }
319 
320 //=============================================================================================================
321 
322 void RtSourceDataController::setStreamSmoothedData(bool bStreamSmoothedData)
323 {
324  emit streamSmoothedDataChanged(bStreamSmoothedData);
325 }
326 
327 //=============================================================================================================
328 
329 void RtSourceDataController::addData(const MatrixXd& data)
330 {
331  emit rawDataChanged(data);
332 }
333 
334 //=============================================================================================================
335 
336 void RtSourceDataController::onNewRtRawData(const VectorXd &vecDataVectorLeftHemi,
337  const VectorXd &vecDataVectorRightHemi)
338 {
339  emit newRtRawDataAvailable(vecDataVectorLeftHemi,
340  vecDataVectorRightHemi);
341 }
342 
343 //=============================================================================================================
344 
345 void RtSourceDataController::onNewSmoothedRtRawData(const MatrixX4f &matColorMatrixLeftHemi,
346  const MatrixX4f &matColorMatrixRightHemi)
347 {
348  emit newRtSmoothedDataAvailable(matColorMatrixLeftHemi,
349  matColorMatrixRightHemi);
350 }
351 
352 //=============================================================================================================
353 
354 void RtSourceDataController::onNewInterpolationMatrixLeftCalculated(QSharedPointer<Eigen::SparseMatrix<float> > pMatInterpolationMatrixLeftHemi)
355 {
356  emit newInterpolationMatrixLeftAvailable(pMatInterpolationMatrixLeftHemi);
357 }
358 
359 //=============================================================================================================
360 
361 void RtSourceDataController::onNewInterpolationMatrixRightCalculated(QSharedPointer<Eigen::SparseMatrix<float> > pMatInterpolationMatrixRightHemi)
362 {
363  emit newInterpolationMatrixRightAvailable(pMatInterpolationMatrixRightHemi);
364 }
365 
rtsourcedataworker.h
RtSourceDataWorker class declaration.
DISP3DLIB::RtSourceDataController::m_pRtInterpolationLeftWorker
QPointer< RtSourceInterpolationMatWorker > m_pRtInterpolationLeftWorker
Definition: rtsourcedatacontroller.h:294
DISP3DLIB::RtSourceDataController::setInterpolationFunction
void setInterpolationFunction(const QString &sInterpolationFunction)
Definition: rtsourcedatacontroller.cpp:198
DISP3DLIB::RtSourceDataController::surfaceColorChanged
void surfaceColorChanged(const Eigen::MatrixX4f &matColorLeft, const Eigen::MatrixX4f &matColorRight)
DISP3DLIB::RtSourceDataController::setSurfaceColor
void setSurfaceColor(const Eigen::MatrixX4f &matColorLeft, const Eigen::MatrixX4f &matColorRight)
Definition: rtsourcedatacontroller.cpp:260
DISP3DLIB::RtSourceDataController::setVisualizationType
void setVisualizationType(int iVisType)
Definition: rtsourcedatacontroller.cpp:294
DISP3DLIB::RtSourceDataController::annotationInfoLeftChanged
void annotationInfoLeftChanged(const Eigen::VectorXi &vecLabelIdsLeftHemi, const QList< FSLIB::Label > &lLabels, const Eigen::VectorXi &vecVertNoLeft)
DISP3DLIB::RtSourceDataWorker::setSurfaceColor
void setSurfaceColor(const Eigen::MatrixX4f &matColorLeft, const Eigen::MatrixX4f &matColorRight)
Definition: rtsourcedataworker.cpp:112
DISP3DLIB::RtSourceDataWorker::newRtRawData
void newRtRawData(const Eigen::VectorXd &vecDataVectorLeftHemi, const Eigen::VectorXd &vecDataVectorRightHemi)
DISP3DLIB::RtSourceDataController::setThresholds
void setThresholds(const QVector3D &vecThresholds)
Definition: rtsourcedatacontroller.cpp:287
DISP3DLIB::RtSourceDataController::onNewRtRawData
void onNewRtRawData(const Eigen::VectorXd &vecDataVectorLeftHemi, const Eigen::VectorXd &vecDataVectorRightHemi)
Definition: rtsourcedatacontroller.cpp:336
DISP3DLIB::RtSourceInterpolationMatWorker::setInterpolationFunction
void setInterpolationFunction(const QString &sInterpolationFunction)
Definition: rtsourceinterpolationmatworker.cpp:81
DISP3DLIB::RtSourceDataController::newInterpolationMatrixRightAvailable
void newInterpolationMatrixRightAvailable(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrixRightHemi)
DISP3DLIB::RtSourceDataController::setColormapType
void setColormapType(const QString &sColormapType)
Definition: rtsourcedatacontroller.cpp:301
DISP3DLIB::RtSourceDataController::rawDataChanged
void rawDataChanged(const Eigen::MatrixXd &data)
DISP3DLIB::RtSourceDataController::streamSmoothedDataChanged
void streamSmoothedDataChanged(bool bStreamSmoothedData)
DISP3DLIB::RtSourceDataWorker
This worker streams either interpolated or raw data.
Definition: rtsourcedataworker.h:104
DISP3DLIB::RtSourceDataController::annotationInfoRightChanged
void annotationInfoRightChanged(const Eigen::VectorXi &vecLabelIdsRightHemi, const QList< FSLIB::Label > &lLabels, const Eigen::VectorXi &vecVertNoRight)
DISP3DLIB::RtSourceDataController::setTimeInterval
void setTimeInterval(int iMSec)
Definition: rtsourcedatacontroller.cpp:219
rtsourcedatacontroller.h
RtSourceDataController class declaration.
DISP3DLIB::RtSourceDataController::m_iMSecInterval
int m_iMSecInterval
Definition: rtsourcedatacontroller.h:297
DISP3DLIB::RtSourceDataController::newRtRawDataAvailable
void newRtRawDataAvailable(const Eigen::VectorXd &vecDataVectorLeftHemi, const Eigen::VectorXd &vecDataVectorRightHemi)
DISP3DLIB::RtSourceDataController::setStreamingState
void setStreamingState(bool bStreamingState)
Definition: rtsourcedatacontroller.cpp:187
DISP3DLIB::RtSourceDataController::m_rtSourceDataWorkerThread
QThread m_rtSourceDataWorkerThread
Definition: rtsourcedatacontroller.h:289
DISP3DLIB::RtSourceDataWorker::setColormapType
void setColormapType(const QString &sColormapType)
Definition: rtsourcedataworker.cpp:135
DISP3DLIB::RtSourceDataController::newInterpolationMatrixLeftAvailable
void newInterpolationMatrixLeftAvailable(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrixLeftHemi)
DISP3DLIB::RtSourceDataWorker::setLoopState
void setLoopState(bool bLoopState)
Definition: rtsourcedataworker.cpp:154
DISP3DLIB::RtSourceDataController::interpolationInfoRightChanged
void interpolationInfoRightChanged(const Eigen::MatrixX3f &matVerticesRight, const QVector< QVector< int > > &vecNeighborVerticesRight, const QVector< int > &vecMappedSubsetRight)
DISP3DLIB::RtSourceDataController::loopStateChanged
void loopStateChanged(bool bLoopState)
DISP3DLIB::RtSourceDataController::setCancelDistance
void setCancelDistance(double dCancelDist)
Definition: rtsourcedatacontroller.cpp:212
DISP3DLIB::RtSourceDataController::onNewInterpolationMatrixRightCalculated
void onNewInterpolationMatrixRightCalculated(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrixRightHemi)
Definition: rtsourcedatacontroller.cpp:361
DISP3DLIB::RtSourceDataController::m_pRtInterpolationRightWorker
QPointer< RtSourceInterpolationMatWorker > m_pRtInterpolationRightWorker
Definition: rtsourcedatacontroller.h:295
DISP3DLIB::RtSourceDataController::addData
void addData(const Eigen::MatrixXd &data)
Definition: rtsourcedatacontroller.cpp:329
DISP3DLIB::RtSourceInterpolationMatWorker::setCancelDistance
void setCancelDistance(double dCancelDist)
Definition: rtsourceinterpolationmatworker.cpp:125
DISP3DLIB::RtSourceDataWorker::addData
void addData(const Eigen::MatrixXd &data)
Definition: rtsourcedataworker.cpp:90
DISP3DLIB::RtSourceDataController::numberAveragesChanged
void numberAveragesChanged(int iNumAvr)
DISP3DLIB::RtSourceDataController::setInterpolationInfo
void setInterpolationInfo(const Eigen::MatrixX3f &matVerticesLeft, const Eigen::MatrixX3f &matVerticesRight, const QVector< QVector< int > > &vecNeighborVerticesLeft, const QVector< QVector< int > > &vecNeighborVerticesRight, const Eigen::VectorXi &vecVertNoLeftHemi, const Eigen::VectorXi &vecVertNoRightHemi)
Definition: rtsourcedatacontroller.cpp:232
DISP3DLIB::RtSourceDataWorker::setThresholds
void setThresholds(const QVector3D &vecThresholds)
Definition: rtsourcedataworker.cpp:144
DISP3DLIB::RtSourceDataController::sFreqChanged
void sFreqChanged(double dSFreq)
DISP3DLIB::RtSourceInterpolationMatWorker::setAnnotationInfo
void setAnnotationInfo(const Eigen::VectorXi &vecLabelIds, const QList< FSLIB::Label > &lLabels, const Eigen::VectorXi &vecVertNo)
Definition: rtsourceinterpolationmatworker.cpp:167
DISP3DLIB::RtSourceInterpolationMatWorker::setVisualizationType
void setVisualizationType(int iVisType)
Definition: rtsourceinterpolationmatworker.cpp:114
DISP3DLIB::RtSourceDataController::m_rtInterpolationRightWorkerThread
QThread m_rtInterpolationRightWorkerThread
Definition: rtsourcedatacontroller.h:291
DISP3DLIB::RtSourceDataController::m_timer
QTimer m_timer
Definition: rtsourcedatacontroller.h:287
DISP3DLIB::RtSourceDataController::newRtSmoothedDataAvailable
void newRtSmoothedDataAvailable(const Eigen::MatrixX4f &matColorMatrixLeftHemi, const Eigen::MatrixX4f &matColorMatrixRightHemi)
DISP3DLIB::RtSourceDataWorker::newRtSmoothedData
void newRtSmoothedData(const Eigen::MatrixX4f &matColorMatrixLeftHemi, const Eigen::MatrixX4f &matColorMatrixRightHemi)
DISP3DLIB::RtSourceDataController::visualizationTypeChanged
void visualizationTypeChanged(int iVisType)
DISP3DLIB::RtSourceDataController::thresholdsChanged
void thresholdsChanged(const QVector3D &vecThresholds)
DISP3DLIB::RtSourceDataController::setSFreq
void setSFreq(double dSFreq)
Definition: rtsourcedatacontroller.cpp:315
DISP3DLIB::RtSourceDataController::interpolationInfoLeftChanged
void interpolationInfoLeftChanged(const Eigen::MatrixX3f &matVerticesLeft, const QVector< QVector< int > > &vecNeighborVerticesLeft, const QVector< int > &vecMappedSubsetLeft)
DISP3DLIB::RtSourceDataWorker::setInterpolationMatrixLeft
void setInterpolationMatrixLeft(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrixLeft)
Definition: rtsourcedataworker.cpp:168
DISP3DLIB::RtSourceDataController::onNewSmoothedRtRawData
void onNewSmoothedRtRawData(const Eigen::MatrixX4f &matColorMatrixLeftHemi, const Eigen::MatrixX4f &matColorMatrixRightHemi)
Definition: rtsourcedatacontroller.cpp:345
DISP3DLIB::RtSourceDataController::setStreamSmoothedData
void setStreamSmoothedData(bool bStreamSmoothedData)
Definition: rtsourcedatacontroller.cpp:322
DISP3DLIB::RtSourceDataController::interpolationFunctionChanged
void interpolationFunctionChanged(const QString &sInterpolationFunction)
rtsourceinterpolationmatworker.h
RtSourceInterpolationMatWorker class declaration.
DISP3DLIB::RtSourceDataWorker::setSFreq
void setSFreq(const double dSFreq)
Definition: rtsourcedataworker.cpp:161
DISP3DLIB::RtSourceInterpolationMatWorker::setInterpolationInfo
void setInterpolationInfo(const Eigen::MatrixX3f &matVertices, const QVector< QVector< int > > &vecNeighborVertices, const QVector< int > &vecMappedSubset)
Definition: rtsourceinterpolationmatworker.cpp:142
DISP3DLIB::RtSourceDataController::setAnnotationInfo
void setAnnotationInfo(const Eigen::VectorXi &vecLabelIdsLeftHemi, const Eigen::VectorXi &vecLabelIdsRightHemi, const QList< FSLIB::Label > &lLabelsLeftHemi, const QList< FSLIB::Label > &lLabelsRightHemi, const Eigen::VectorXi &vecVertNoLeft, const Eigen::VectorXi &vecVertNoRight)
Definition: rtsourcedatacontroller.cpp:269
DISP3DLIB::RtSourceDataController::cancelDistanceChanged
void cancelDistanceChanged(double dCancelDist)
DISP3DLIB::RtSourceDataController::onNewInterpolationMatrixLeftCalculated
void onNewInterpolationMatrixLeftCalculated(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrixLeftHemi)
Definition: rtsourcedatacontroller.cpp:354
DISP3DLIB::RtSourceDataController::m_pRtSourceDataWorker
QPointer< RtSourceDataWorker > m_pRtSourceDataWorker
Definition: rtsourcedatacontroller.h:293
DISP3DLIB::RtSourceDataController::setNumberAverages
void setNumberAverages(int iNumAvr)
Definition: rtsourcedatacontroller.cpp:308
DISP3DLIB::RtSourceInterpolationMatWorker
This worker calculates the interpolation matrix.
Definition: rtsourceinterpolationmatworker.h:85
DISP3DLIB::RtSourceDataController::setLoopState
void setLoopState(bool bLoopState)
Definition: rtsourcedatacontroller.cpp:205
DISP3DLIB::RtSourceDataController::~RtSourceDataController
~RtSourceDataController()
Definition: rtsourcedatacontroller.cpp:175
DISP3DLIB::RtSourceDataController::RtSourceDataController
RtSourceDataController()
Definition: rtsourcedatacontroller.cpp:67
DISP3DLIB::RtSourceDataWorker::setNumberAverages
void setNumberAverages(int iNumAvr)
Definition: rtsourcedataworker.cpp:121
DISP3DLIB::RtSourceDataController::m_rtInterpolationLeftWorkerThread
QThread m_rtInterpolationLeftWorkerThread
Definition: rtsourcedatacontroller.h:290
DISP3DLIB::RtSourceDataWorker::setStreamSmoothedData
void setStreamSmoothedData(bool bStreamSmoothedData)
Definition: rtsourcedataworker.cpp:128
DISP3DLIB::RtSourceInterpolationMatWorker::newInterpolationMatrixCalculated
void newInterpolationMatrixCalculated(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrix)
DISP3DLIB::RtSourceDataWorker::streamData
void streamData()
Definition: rtsourcedataworker.cpp:182
DISP3DLIB::RtSourceDataWorker::setInterpolationMatrixRight
void setInterpolationMatrixRight(QSharedPointer< Eigen::SparseMatrix< float > > pMatInterpolationMatrixRight)
Definition: rtsourcedataworker.cpp:175
DISP3DLIB::RtSourceDataController::colormapTypeChanged
void colormapTypeChanged(const QString &sColormapType)