MNE-CPP  0.1.9
A Framework for Electrophysiology
rtconnectivity.cpp
Go to the documentation of this file.
1 //=============================================================================================================
35 //=============================================================================================================
36 // INCLUDES
37 //=============================================================================================================
38 
39 #include "rtconnectivity.h"
40 
44 
45 //=============================================================================================================
46 // EIGEN INCLUDES
47 //=============================================================================================================
48 
49 //=============================================================================================================
50 // QT INCLUDES
51 //=============================================================================================================
52 
53 #include <QElapsedTimer>
54 #include <QDebug>
55 
56 //=============================================================================================================
57 // USED NAMESPACES
58 //=============================================================================================================
59 
60 using namespace RTPROCESSINGLIB;
61 using namespace CONNECTIVITYLIB;
62 
63 //=============================================================================================================
64 // DEFINE MEMBER METHODS RtConnectivityWorker
65 //=============================================================================================================
66 
67 void RtConnectivityWorker::doWork(const ConnectivitySettings &connectivitySettings)
68 {
69  if(this->thread()->isInterruptionRequested()) {
70  return;
71  }
72 
73  if(connectivitySettings.getConnectivityMethods().isEmpty()) {
74  qDebug()<<"RtConnectivityWorker::doWork() - Network methods are empty";
75  return;
76  }
77 
78  ConnectivitySettings connectivitySettingsTemp = connectivitySettings;
79 
80  QElapsedTimer time;
81  qint64 iTime = 0;
82  time.start();
83 
84  QList<Network> finalNetworks = Connectivity::calculate(connectivitySettingsTemp);
85 
86 // iTime = time.elapsed();
87 
88 // qDebug()<<"----------------------------------------";
89 // qDebug()<<"----------------------------------------";
90 // qDebug()<<"------RtConnectivityWorker::doWork()";
91 // qDebug()<<"------Method:"<<connectivitySettings.getConnectivityMethods().first();
92 // qDebug()<<"------Data dim:"<<connectivitySettings.at(0).matData.rows() << "x" << connectivitySettings.at(0).matData.cols();
93 // qDebug()<<"------Number trials:"<< connectivitySettings.size();
94 // qDebug()<<"------Total time:"<<iTime << "ms";
95 // qDebug()<<"----------------------------------------";
96 // qDebug()<<"----------------------------------------";
97 
98  emit resultReady(finalNetworks, connectivitySettingsTemp);
99 }
100 
101 //=============================================================================================================
102 // DEFINE MEMBER METHODS RtConnectivity
103 //=============================================================================================================
104 
106 : QObject(parent)
107 {
109  worker->moveToThread(&m_workerThread);
110 
111  connect(&m_workerThread, &QThread::finished,
112  worker, &QObject::deleteLater);
113 
114  connect(this, &RtConnectivity::operate,
116 
117  connect(worker, &RtConnectivityWorker::resultReady,
118  this, &RtConnectivity::newConnectivityResultAvailable);
119 
120  m_workerThread.start();
121 }
122 
123 //=============================================================================================================
124 
126 {
127  stop();
128 }
129 
130 //=============================================================================================================
131 
132 void RtConnectivity::append(const ConnectivitySettings& connectivitySettings)
133 {
134  emit operate(connectivitySettings);
135 }
136 
137 //=============================================================================================================
138 
140 {
141  stop();
142 
144  worker->moveToThread(&m_workerThread);
145 
146  connect(&m_workerThread, &QThread::finished,
147  worker, &QObject::deleteLater);
148 
149  connect(this, &RtConnectivity::operate,
151 
152  connect(worker, &RtConnectivityWorker::resultReady,
153  this, &RtConnectivity::newConnectivityResultAvailable);
154 
155  m_workerThread.start();
156 }
157 
158 //=============================================================================================================
159 
161 {
162  m_workerThread.requestInterruption();
163  m_workerThread.quit();
164  m_workerThread.wait();
165 }
RtConnectivity class declaration.
Real-time connectivity worker.
void doWork(const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)
This class is a container for connectivity settings.
void append(const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)
Network class declaration.
ConnectivitySettings class declaration.
Connectivity class declaration.