Preconditioned ICA for Real Data
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
examples
matlab_octave
picard
.gitignore
.travis.yml
LICENSE
MANIFEST.in
Makefile
README.rst
codecov.yml
setup.cfg
setup.py

README.rst

Picard : Preconditioned ICA for Real Data

Travis Codecov Downloads

This repository hosts Python/Octave/Matlab code of the Preconditioned ICA for Real Data (Picard) and Picard-O algorithms.

See the documentation.

Algorithm

Picard is an algorithm for maximum likelihood independent component analysis. It solves the same problem as Infomax, faster. It uses a preconditioned L-BFGS strategy, resulting in a very fast convergence.

Picard-O uses an adaptation of that strategy to solve the same problem under the constraint of whiteness of the signals. It solves the same problem as FastICA, but faster.

Picard-O is able to recover both super-Gaussian and sub-Gaussian sources.

Installation

To install the package, the simplest way is to use pip to get the latest release:

$ pip install python-picard

or to get the latest version of the code:

$ pip install git+https://github.com/pierreablin/picard.git#egg=picard

The Matlab/Octave version of Picard and Picard-O is available here.

Quickstart

To get started, you can build a synthetic mixed signals matrix:

>>> import numpy as np
>>> N, T = 3, 1000
>>> S = np.random.laplace(size=(N, T))
>>> A = np.random.randn(N, N)
>>> X = np.dot(A, S)

And then use Picard to separate the signals:

>>> from picard import picard
>>> K, W, Y = picard(X)

Picard outputs the whitening matrix, K, the estimated unmixing matrix, W, and the estimated sources Y. It means that:

Y = W K X

Dependencies

These are the dependencies to use Picard:

  • numpy (>=1.8)
  • matplotlib (>=1.3)
  • numexpr (>= 2.0)
  • scipy (>=0.19)

These are the dependencies to run the EEG example:

  • mne (>=0.14)

Cite

If you use this code in your project, please cite:

Pierre Ablin, Jean-Francois Cardoso, Alexandre Gramfort
Faster independent component analysis by preconditioning with Hessian approximations
IEEE Transactions on Signal Processing, 2018
https://arxiv.org/abs/1706.08171

Pierre Ablin, Jean-François Cardoso, Alexandre Gramfort
Faster ICA under orthogonal constraint
ICASSP, 2018
https://arxiv.org/abs/1711.10873