Skip to main content

InvHpiModelParameters

Namespace: INVLIB  ·  Library: Inverse Library

#include <inv/inv_hpi_model_parameters.h>

class INVLIB::InvHpiModelParameters

Description of what this class is intended to do (in detail).

Configuration parameters for the HPI signal model (line frequency, coil frequencies, sample rate, buffer size)

src/examples/ex_inv_hpi/main.cpp
InvHpiDataUpdater updater(info); // good MEG channels, their sensors and the digitised coil positions
updater.prepareDataAndProjectors(segment, MatrixXd::Identity(info->nchan, info->nchan));
// The coil frequencies are known but not their order; the first fit with bOrderFrequencies finds it.
const InvHpiModelParameters model(QVector<int>({154, 158, 161, 166}), info->sfreq, info->linefreq, true);
InvHpiFit hpi(updater.getSensors());
HpiFitResult fit;
hpi.fit(updater.getProjectedData(), updater.getProjectors(), model, updater.getHpiDigitizer(), true, fit);

Public Methods​

InvHpiModelParameters()​

Defaul Constructor.


InvHpiModelParameters(vecHpiFreqs, iSampleFreq, iLineFreq, bBasic)​

Constructs a InvHpiModelParameters object.

Parameters:

  • vecHpiFreqs : const QVector< int > The Hpi frequencies.

  • iSampleFreq : const int The sampling frequency.

  • iLineFreq : const int The line Frequency

  • bBasic : const bool Create a basic model without line frequeny or not.


InvHpiModelParameters(hpiModelParameter)​

Copy constructor.

Parameters:


operator=(other)​


operator==(b)​


operator!=(b)​


vecHpiFreqs()​

Inline functions to get acces to parameters.

Returns:

  • QVector< int > — HPI coil frequencies, in Hz.

iNHpiCoils()​


iSampleFreq()​


iLineFreq()​


bBasic()​


Example​

Used in examples​

ex_inv_hpi​

Inverse library: continuous head position (HPI) fitting.

src/examples/ex_inv_hpi/main.cpp, line 106
InvHpiDataUpdater updater(info); // good MEG channels, their sensors and the digitised coil positions
updater.prepareDataAndProjectors(segment, MatrixXd::Identity(info->nchan, info->nchan));
// The coil frequencies are known but not their order; the first fit with bOrderFrequencies finds it.
const InvHpiModelParameters model(QVector<int>({154, 158, 161, 166}), info->sfreq, info->linefreq, true);
InvHpiFit hpi(updater.getSensors());
HpiFitResult fit;
hpi.fit(updater.getProjectedData(), updater.getProjectors(), model, updater.getHpiDigitizer(), true, fit);
// MaxFilter head position at t = 0: translation (-0.814, -11.046, 53.572) mm. One 200 ms window, so allow 1 mm
// (test_hpiFit_integration holds the mean over the whole recording to 0.3 mm).
MatrixXd maxfilter;
IOUtils::read_eigen_matrix(maxfilter, data + "/Result/ref_hpiFit_pos.txt");
const Vector3d translation = fit.devHeadTrans.trans.block<3, 1>(0, 3).cast<double>();
const Vector3d reference = maxfilter.block<1, 3>(0, 4).transpose();

ex_hpiFit​

Example for cHPI fitting on raw data with SSP. The result is written to a .txt file for comparison with MaxFilter's .pos file.

src/examples/ex_hpiFit/main.cpp, line 199
const auto& matProjectedData = hpiDataUpdater.getProjectedData();
const auto& matPreparedProjectors = hpiDataUpdater.getProjectors();
const auto& matCoilsHead = hpiDataUpdater.getHpiDigitizer();
InvHpiModelParameters hpiModelParameters(vecFreqs,
pFiffInfo->sfreq,
pFiffInfo->linefreq,
bFast);

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 290
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);

Authors of this file​