v2.0.0
Loading...
Searching...
No Matches
INVLIB::InvDICS Class Reference

DICS beamformer (frequency-domain). More...

#include <inv_dics.h>

Static Public Member Functions

static InvBeamformer makeDICS (const FIFFLIB::FiffInfo &info, const MNELIB::MNEForwardSolution &forward, const std::vector< Eigen::MatrixXd > &csdMatrices, const Eigen::VectorXd &frequencies, double reg=0.05, bool realFilter=true, const FIFFLIB::FiffCov &noiseCov=FIFFLIB::FiffCov(), BeamformerPickOri pickOri=BeamformerPickOri::None, BeamformerWeightNorm weightNorm=BeamformerWeightNorm::UnitNoiseGain, bool reduceRank=false, BeamformerInversion invMethod=BeamformerInversion::Matrix)
static InvSourceEstimate applyDICSCsd (const std::vector< Eigen::MatrixXd > &csdMatrices, const Eigen::VectorXd &frequencies, const InvBeamformer &filters)
static InvSourceEstimate applyDICS (const Eigen::MatrixXd &data, float tmin, float tstep, const InvBeamformer &filters, int freqIdx=0)

Detailed Description

DICS beamformer (frequency-domain).

Dynamic Imaging of Coherent Sources (DICS) beamformer for frequency-domain source localization using cross-spectral density (CSD) matrices.

Typical workflow:

// 1. Compute CSD matrices for frequency bands of interest (externally)
// csdMatrices[i] = CSD at frequency[i], shape (n_channels, n_channels)
// 2. Build the DICS spatial filter
InvBeamformer filters = InvDICS::makeDICS(info, forward, csdMatrices, frequencies,
reg, realFilter, pickOri, weightNorm);
// 3. Apply to CSD to get source power per frequency
InvSourceEstimate power = InvDICS::applyDICSCsd(csdMatrices, frequencies, filters);
Computed beamformer spatial filter container.
static InvBeamformer makeDICS(const FIFFLIB::FiffInfo &info, const MNELIB::MNEForwardSolution &forward, const std::vector< Eigen::MatrixXd > &csdMatrices, const Eigen::VectorXd &frequencies, double reg=0.05, bool realFilter=true, const FIFFLIB::FiffCov &noiseCov=FIFFLIB::FiffCov(), BeamformerPickOri pickOri=BeamformerPickOri::None, BeamformerWeightNorm weightNorm=BeamformerWeightNorm::UnitNoiseGain, bool reduceRank=false, BeamformerInversion invMethod=BeamformerInversion::Matrix)
Definition inv_dics.cpp:67
static InvSourceEstimate applyDICSCsd(const std::vector< Eigen::MatrixXd > &csdMatrices, const Eigen::VectorXd &frequencies, const InvBeamformer &filters)
Definition inv_dics.cpp:211

Definition at line 98 of file inv_dics.h.

Member Function Documentation

◆ applyDICS()

InvSourceEstimate InvDICS::applyDICS ( const Eigen::MatrixXd & data,
float tmin,
float tstep,
const InvBeamformer & filters,
int freqIdx = 0 )
static

Apply DICS beamformer to time-domain data at a single frequency.

This is an approximate application — for accurate frequency-domain source estimation, use applyDICSCsd() with CSD matrices.

Parameters
[in]dataData matrix (n_channels, n_times).
[in]tminStart time (s).
[in]tstepTime step (s).
[in]filtersPre-computed DICS beamformer (must have exactly 1 frequency).
[in]freqIdxIndex of the frequency filter to use (default 0).
Returns
Source time-course estimate.

Definition at line 264 of file inv_dics.cpp.

◆ applyDICSCsd()

InvSourceEstimate InvDICS::applyDICSCsd ( const std::vector< Eigen::MatrixXd > & csdMatrices,
const Eigen::VectorXd & frequencies,
const InvBeamformer & filters )
static

Apply DICS beamformer to CSD matrices to estimate source power per frequency.

power_i(f) = trace(W_f_i @ CSD_f @ W_f_i^T)

Parameters
[in]csdMatricesCSD matrices (one per frequency).
[in]frequenciesCenter frequencies (Hz).
[in]filtersPre-computed DICS beamformer from makeDICS().
Returns
Source estimate where data has shape (n_sources, n_freqs) with power values.

Definition at line 211 of file inv_dics.cpp.

◆ makeDICS()

InvBeamformer InvDICS::makeDICS ( const FIFFLIB::FiffInfo & info,
const MNELIB::MNEForwardSolution & forward,
const std::vector< Eigen::MatrixXd > & csdMatrices,
const Eigen::VectorXd & frequencies,
double reg = 0.05,
bool realFilter = true,
const FIFFLIB::FiffCov & noiseCov = FIFFLIB::FiffCov(),
BeamformerPickOri pickOri = BeamformerPickOri::None,
BeamformerWeightNorm weightNorm = BeamformerWeightNorm::UnitNoiseGain,
bool reduceRank = false,
BeamformerInversion invMethod = BeamformerInversion::Matrix )
static

Compute DICS beamformer spatial filters for one or more frequencies.

Parameters
[in]infoMeasurement info.
[in]forwardForward solution containing the leadfield.
[in]csdMatricesCross-spectral density matrices, one per frequency bin. Each is (n_channels, n_channels), may be complex.
[in]frequenciesCenter frequency (Hz) for each CSD matrix.
[in]regRegularization parameter (default 0.05).
[in]realFilterIf true, take real part of CSD before computing filter (default true).
[in]noiseCovNoise covariance for whitening. If empty, identity whitening.
[in]pickOriOrientation selection mode.
[in]weightNormWeight normalization strategy.
[in]reduceRankReduce leadfield rank by 1.
[in]invMethodDenominator inversion method.
Returns
Beamformer with one filter weight matrix per frequency.

Definition at line 67 of file inv_dics.cpp.


The documentation for this class was generated from the following files: