RtHpiWorker
Namespace: RTPROCESSINGLIB · Library: DSP Library
#include <dsp/rt_hpis.h>
class RTPROCESSINGLIB::RtHpiWorker
Real-time HPI worker.
Background worker thread that runs continuous HPI coil localization.
src/examples/ex_dsp_rt/main.cpp
InvHpiDataUpdater updater(hpiInfo); // MEG picks, sensor geometry and digitised coil positions
updater.prepareDataAndProjectors(hpiData, projectors);
const InvHpiModelParameters model(QVector<int>({166, 154, 161, 158}), hpiInfo->sfreq, hpiInfo->linefreq, false);
RtHpiWorker hpiWorker(updater.getSensors());
HpiFitResult workerFit;
QObject::connect(&hpiWorker, &RtHpiWorker::resultReady, [&](const HpiFitResult& fit) { workerFit = fit; });
hpiWorker.doWork(updater.getProjectedData(), updater.getProjectors(), model, updater.getHpiDigitizer());
Inheritance
Public Methods
RtHpiWorker(sensorSet)
Creates the real-time HPI worker object.
Parameters:
- sensorSet : const InvSensorSet Associated Fiff Information.
doWork(matData, matProjectors, hpiModelParameters, matCoilsHead)
Perform one single HPI fit.
Parameters:
-
matData : const Eigen::MatrixXd & Data to estimate the HPI positions from.
-
matProjectors : const Eigen::MatrixXd & The projectors to apply. Bad channels are still included.
-
hpiModelParameters : const InvHpiModelParameters & HPI model parameters (coil frequencies, line frequency, ...).
-
matCoilsHead : const Eigen::MatrixXd & Digitized HPI coil positions in head space.
Example
- Full source:
src/examples/ex_dsp_rt/main.cpp - Build target:
ex_dsp_rt(runs under CTest) - Data: mne-cpp-test-data
Used in examples
ex_dsp_rt
DSP real-time workers: averaging, covariance, noise spectrum, connectivity, HPI fitting and inverse operators.
src/examples/ex_dsp_rt/main.cpp, line 294
RtHpiWorker hpiWorker(updater.getSensors());
HpiFitResult workerFit;
QObject::connect(&hpiWorker, &RtHpiWorker::resultReady, [&](const HpiFitResult& fit) { workerFit = fit; });
hpiWorker.doWork(updater.getProjectedData(), updater.getProjectors(), model, updater.getHpiDigitizer());
HpiFitResult direct;
InvHpiFit(updater.getSensors()).fit(updater.getProjectedData(), updater.getProjectors(), model, updater.getHpiDigitizer(), direct);
ok &= expect(workerFit.GoF.size() == 4 && workerFit.GoF.minCoeff() > 0.98 && workerFit.devHeadTrans.trans.isApprox(direct.devHeadTrans.trans, 1e-6f),
QString("RtHpiWorker fits 4 coils (GoF >= %1) like InvHpiFit").arg(workerFit.GoF.size() ? workerFit.GoF.minCoeff() : 0.0, 0, 'f', 4));
Authors of this file
- Christoph Dinh <christoph.dinh@mne-cpp.org>