Skip to main content

Preconditoned ICA for Real Data

Project description

GHActions PyPI 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 shows state of the art speed of convergence, and solves the same problems as the widely used FastICA, Infomax and extended-Infomax, faster.

Comparison

The parameter ortho choses whether to work under orthogonal constraint (i.e. enforce the decorrelation of the output) or not. It also comes with an extended version just like extended-infomax, which makes separation of both sub and super-Gaussian signals possible. It is chosen with the parameter extended.

  • ortho=False, extended=False: same solution as Infomax

  • ortho=False, extended=True: same solution as extended-Infomax

  • ortho=True, extended=True: same solution as FastICA

  • ortho=True, extended=False: finds the same solutions as Infomax under orthogonal constraint.

Installation

We recommend the Anaconda Python distribution.

conda

Picard can be installed with conda-forge. You need to add conda-forge to your conda channels, and then do:

$ conda install python-picard

pip

Otherwise, to install picard, you first need to install its dependencies:

$ pip install numpy matplotlib scipy

Then install Picard with pip:

$ pip install python-picard

or to get the latest version of the code:

$ pip install git+https://github.com/mind-inria/picard.git#egg=picard

If you do not have admin privileges on the computer, use the --user flag with pip. To upgrade, use the --upgrade flag provided by pip.

check

To check if everything worked fine, you can do:

$ python -c 'import picard'

and it should not give any error message.

matlab/octave

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 = WKX

NEW: scikit-learn compatible API

Introducing picard.Picard, which mimics sklearn.decomposition.FastICA behavior:

>>> from sklearn.datasets import load_digits
>>> from picard import Picard
>>> X, _ = load_digits(return_X_y=True)
>>> transformer = Picard(n_components=7)
>>> X_transformed = transformer.fit_transform(X)
>>> X_transformed.shape

Dependencies

These are the dependencies to use Picard:

  • numpy (>=1.8)

  • matplotlib (>=1.3)

  • scipy (>=0.19)

Optionally to get faster computations, you can install

  • numexpr (>= 2.0)

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

Changelog

New in 0.8 : for the density exp, the default parameter is now alpha = 0.1 instead of alpha = 1.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_picard-0.8.1.tar.gz (64.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_picard-0.8.1-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file python_picard-0.8.1.tar.gz.

File metadata

  • Download URL: python_picard-0.8.1.tar.gz
  • Upload date:
  • Size: 64.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for python_picard-0.8.1.tar.gz
Algorithm Hash digest
SHA256 54c474a73b38e9c124f946fdd725d9ac74100f3d00f13ec208084417d0d3bb3b
MD5 87d6150483c4fad01be021f7fb5f2ca7
BLAKE2b-256 79eb08ed10065a68e80d686b81b1174b4e1e31e873c595472d03178551fc1acc

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_picard-0.8.1.tar.gz:

Publisher: release.yml on mind-inria/picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_picard-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: python_picard-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for python_picard-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 debe9d7e2723305ee94de181bd3d04e84018a20c6f9ce060dcc1acf02f67193c
MD5 1b48577f7b3352c64fe2ad44ac87dbec
BLAKE2b-256 5fad3661f07ce273b58413c73b3cfa063005b6f458ca910bbf37e1654923fe08

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_picard-0.8.1-py3-none-any.whl:

Publisher: release.yml on mind-inria/picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page