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 qint64 iTime = 0;
59 time.start();
60
61 QList<Network> finalNetworks = Connectivity::calculate(connectivitySettingsTemp);
62
63// iTime = time.elapsed();
64
65// qDebug()<<"----------------------------------------";
66// qDebug()<<"----------------------------------------";
67// qDebug()<<"------RtConnectivityWorker::doWork()";
68// qDebug()<<"------Method:"<<connectivitySettings.getConnectivityMethods().first();
69// qDebug()<<"------Data dim:"<<connectivitySettings.at(0).matData.rows() << "x" << connectivitySettings.at(0).matData.cols();
70// qDebug()<<"------Number trials:"<< connectivitySettings.size();
71// qDebug()<<"------Total time:"<<iTime << "ms";
72// qDebug()<<"----------------------------------------";
73// qDebug()<<"----------------------------------------";
74
75 emit resultReady(finalNetworks, connectivitySettingsTemp);
76}
77
78//=============================================================================================================
79// DEFINE MEMBER METHODS RtConnectivity
80//=============================================================================================================
81
83: QObject(parent)
84{
86 worker->moveToThread(&m_workerThread);
87
88 connect(&m_workerThread, &QThread::finished,
89 worker, &QObject::deleteLater);
90
91 connect(this, &RtConnectivity::operate,
93
94 connect(worker, &RtConnectivityWorker::resultReady,
96
97 m_workerThread.start();
98}
99
100//=============================================================================================================
101
106
107//=============================================================================================================
108
109void RtConnectivity::append(const ConnectivitySettings& connectivitySettings)
110{
111 emit operate(connectivitySettings);
112}
113
114//=============================================================================================================
115
117{
118 stop();
119
121 worker->moveToThread(&m_workerThread);
122
123 connect(&m_workerThread, &QThread::finished,
124 worker, &QObject::deleteLater);
125
126 connect(this, &RtConnectivity::operate,
128
129 connect(worker, &RtConnectivityWorker::resultReady,
131
132 m_workerThread.start();
133}
134
135//=============================================================================================================
136
138{
139 m_workerThread.requestInterruption();
140 m_workerThread.quit();
141 m_workerThread.wait();
142}
Front-end dispatcher that runs the requested connectivity metrics over a ConnectivitySettings batch.
Input-data and parameter container shared by every functional-connectivity metric in CONNECTIVITYLIB.
Real-time worker that re-estimates a connectivity network from incoming data epochs.
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)