Skip to main content

PicardIca

Namespace: RTPROCESSINGLIB  ·  Library: DSP Library

Python equivalent

mne.preprocessing.ICA (picard) in MNE-Python.

#include <dsp/picard_ica.h>

class UTILSLIB::PicardIca

Independent Component Analysis using the Picard algorithm.

Picard uses a preconditioned L-BFGS strategy to minimise the mutual information of the components. Compared to FastICA it typically converges in fewer iterations and handles badly conditioned data more robustly.

src/examples/ex_dsp_preprocessing/main.cpp
const IcaResult picard = PicardIca::run(mixed, 3);

Static Methods​

run(matData, nComponents, maxIter, tol, lbfgsMemory, randomSeed)​

Run the Picard ICA algorithm.

Parameters:

  • matData : const Eigen::MatrixXd & Input data (n_channels x n_samples).

  • nComponents : int Number of components to extract (-1 = all channels).

  • maxIter : int Maximum number of iterations (default 200).

  • tol : double Convergence tolerance (default 1e-7).

  • lbfgsMemory : int L-BFGS memory length (default 7).

  • randomSeed : int Seed for initial weight randomisation (default 42).

Returns:


Example​

Used in examples​

ex_dsp_preprocessing​

Preprocessing tools of the dsp library on synthetic data with a known ground truth.

src/examples/ex_dsp_preprocessing/main.cpp, line 130
const IcaResult picard = PicardIca::run(mixed, 3);
ok &= expect(worstRecovery(picard.matSources, sources) > 0.99, QString("Picard recovers all sources (worst |r| %1)").arg(worstRecovery(picard.matSources, sources)));

Authors of this file​