FineCalibration
Namespace: RTPROCESSINGLIB · Library: DSP Library
mne.preprocessing.read_fine_calibration in MNE-Python.
#include <dsp/fine_calibration.h>
class UTILSLIB::FineCalibration
Fine calibration data for SSS.
A fine calibration file (.dat) has one line per MEG sensor, as read and written by mne.preprocessing.read_fine_calibration / write_fine_calibration: channel_number position(3) x_axis(3) y_axis(3) z_axis(3) imbalance(1 or 3)
FineCalibration calibration;
FineCalEntry magnetometer;
magnetometer.chNumber = 111; // numbers ending in 1 are magnetometers
magnetometer.position = Vector3d(-0.1066, 0.0464, -0.0604);
magnetometer.imbalance = VectorXd::Constant(1, 0.996645); // calibration factor
calibration.addEntry(magnetometer);
const QString calPath = dir.filePath("sss_cal.dat"); // the format of mne.preprocessing.write_fine_calibration
const bool calWritten = calibration.write(calPath);
const FineCalibration calBack = FineCalibration::read(calPath);
Public Methods
FineCalibration()
write(sPath)
Write fine calibration to a .dat file.
Parameters:
- sPath : const QString & Output file path.
Returns:
- bool — true if successful.
entries()
Get the calibration entries.
Returns:
- const QList< FineCalEntry > & — Const reference to the list of per-channel calibration entries.
size()
Get the number of entries.
Returns:
- int — Number of calibration entries (one per MEG channel).
isEmpty()
Check if empty.
Returns:
- bool — True if no calibration entries are stored.
findEntry(chNumber, entry)
Find entry by channel number.
Parameters:
-
chNumber : int Channel number to find.
-
entry : FineCalEntry & Found entry (if any).
Returns:
- bool — true if found.
addEntry(entry)
Add an entry.
Parameters:
- entry : const FineCalEntry & Calibration entry appended to the end of the list.
gainVector()
Magnetometer calibration factors.
Returns:
- Eigen::VectorXd — One factor per entry: the single calibration term of a magnetometer (channel number ending in 1), 1.0 for gradiometers.
imbalanceMatrix()
Gradiometer imbalance terms.
Returns:
- Eigen::MatrixXd — Matrix (n_entries × 3): the one or three imbalance terms of each gradiometer, zero-padded; zero rows for magnetometers.
Static Methods
read(sPath)
Read a fine calibration file (.dat format).
Each line has 14 or 16 whitespace-separated columns (see the class description); lines starting with '#' are comments and malformed lines are skipped.
Parameters:
- sPath : const QString & Path to .dat file.
Returns:
- FineCalibration —
FineCalibrationwith loaded entries.
Example
- Full source:
src/examples/ex_dsp_maxwell/main.cpp - Build target:
ex_dsp_maxwell(runs under CTest) - Data: mne-cpp-test-data
Used in examples
ex_dsp_maxwell
DSP Maxwell filtering: SSS, bad-channel detection, movement compensation, fine calibration and cHPI removal.
FineCalibration calibration;
FineCalEntry magnetometer;
magnetometer.chNumber = 111; // numbers ending in 1 are magnetometers
magnetometer.position = Vector3d(-0.1066, 0.0464, -0.0604);
magnetometer.imbalance = VectorXd::Constant(1, 0.996645); // calibration factor
calibration.addEntry(magnetometer);
const QString calPath = dir.filePath("sss_cal.dat"); // the format of mne.preprocessing.write_fine_calibration
const bool calWritten = calibration.write(calPath);
const FineCalibration calBack = FineCalibration::read(calPath);
ok &= expect(calWritten && calBack.size() == 1 && calBack.gainVector()(0) == 0.996645 && calBack.entries().first().position.isApprox(magnetometer.position),
"FineCalibration round-trips a magnetometer line");
Authors of this file
- Christoph Dinh <christoph.dinh@mne-cpp.org>