v2.0.0
Loading...
Searching...
No Matches
rt_connectivity.cpp
Go to the documentation of this file.
1//=============================================================================================================
12
13//=============================================================================================================
14// INCLUDES
15//=============================================================================================================
16
17#include "rt_connectivity.h"
18
21
22//=============================================================================================================
23// EIGEN INCLUDES
24//=============================================================================================================
25
26//=============================================================================================================
27// QT INCLUDES
28//=============================================================================================================
29
30#include <QElapsedTimer>
31#include <QDebug>
32
33//=============================================================================================================
34// USED NAMESPACES
35//=============================================================================================================
36
37using namespace RTPROCESSINGLIB;
38using namespace CONNECTIVITYLIB;
39
40//=============================================================================================================
41// DEFINE MEMBER METHODS RtConnectivityWorker
42//=============================================================================================================
43
44void RtConnectivityWorker::doWork(const ConnectivitySettings& connectivitySettings)
45{
46 if (this->thread()->isInterruptionRequested()) {
47 return;
48 }
49
50 if (connectivitySettings.getConnectivityMethods().isEmpty()) {
51 qDebug() << "RtConnectivityWorker::doWork() - Network methods are empty";
52 return;
53 }
54
55 ConnectivitySettings connectivitySettingsTemp = connectivitySettings;
56
57 QElapsedTimer time;
58 time.start();
59
60 QList<Network> finalNetworks = Connectivity::calculate(connectivitySettingsTemp);
61
62 // iTime = time.elapsed();
63
64 // qDebug()<<"----------------------------------------";
65 // qDebug()<<"----------------------------------------";
66 // qDebug()<<"------RtConnectivityWorker::doWork()";
67 // qDebug()<<"------Method:"<<connectivitySettings.getConnectivityMethods().first();
68 // qDebug()<<"------Data dim:"<<connectivitySettings.at(0).matData.rows() << "x" << connectivitySettings.at(0).matData.cols();
69 // qDebug()<<"------Number trials:"<< connectivitySettings.size();
70 // qDebug()<<"------Total time:"<<iTime << "ms";
71 // qDebug()<<"----------------------------------------";
72 // qDebug()<<"----------------------------------------";
73
74 emit resultReady(finalNetworks, connectivitySettingsTemp);
75}
76
77//=============================================================================================================
78// DEFINE MEMBER METHODS RtConnectivity
79//=============================================================================================================
80
82: QObject(parent)
83{
85 worker->moveToThread(&m_workerThread);
86
87 connect(&m_workerThread, &QThread::finished,
88 worker, &QObject::deleteLater);
89
90 connect(this, &RtConnectivity::operate,
92
93 connect(worker, &RtConnectivityWorker::resultReady,
95
96 m_workerThread.start();
97}
98
99//=============================================================================================================
100
105
106//=============================================================================================================
107
108void RtConnectivity::append(const ConnectivitySettings& connectivitySettings)
109{
110 emit operate(connectivitySettings);
111}
112
113//=============================================================================================================
114
116{
117 stop();
118
120 worker->moveToThread(&m_workerThread);
121
122 connect(&m_workerThread, &QThread::finished,
123 worker, &QObject::deleteLater);
124
125 connect(this, &RtConnectivity::operate,
127
128 connect(worker, &RtConnectivityWorker::resultReady,
130
131 m_workerThread.start();
132}
133
134//=============================================================================================================
135
137{
138 m_workerThread.requestInterruption();
139 m_workerThread.quit();
140 m_workerThread.wait();
141}
Real-time worker that re-estimates a connectivity network from incoming data epochs.
Front-end dispatcher that runs the requested connectivity metrics over a CONNECTIVITYLIB::Connectivit...
Input-data and parameter container shared by every functional-connectivity metric in CONNECTIVITYLIB.
Functional connectivity metrics (coherence, PLV, cross-correlation, etc.).
static QList< Network > calculate(ConnectivitySettings &connectivitySettings)
Aggregates trial data, spectral cache and node geometry shared by all CONNECTIVITYLIB metrics.
const QStringList & getConnectivityMethods() const
Background worker thread that computes functional connectivity metrics in real time.
void resultReady(const QList< CONNECTIVITYLIB::Network > &connectivityResults, const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)
void doWork(const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)
void newConnectivityResultAvailable(const QList< CONNECTIVITYLIB::Network > &connectivityResults, const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)
void operate(const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)
void append(const CONNECTIVITYLIB::ConnectivitySettings &connectivitySettings)