amica.Amica#

class amica.Amica(config=None, random_state=None)[source]#

Bases: object

Native JAX implementation of AMICA algorithm.

Adaptive Mixture Independent Component Analysis (AMICA) performs ICA with adaptive source density modeling using mixtures of generalized Gaussians.

Parameters:
configAmicaConfig, optional

Configuration object with all algorithm parameters. If None, uses default configuration.

random_stateint, optional

Random seed for reproducibility.

Attributes:
configAmicaConfig

Algorithm configuration.

result_AmicaResult

Fitted model (available after calling fit).

Parameters:

Notes

The AMICA algorithm was developed by Jason Palmer at UCSD. This is a native Python/JAX implementation for GPU acceleration.

References

[1]

Palmer et al. (2008). Newton method for the ICA mixture model. Proc. IEEE ICASSP.

[2]

Palmer et al. (2011). AMICA: An adaptive mixture of independent component analyzers with shared components. UCSD Technical Report.

Examples

>>> from amica import Amica, AmicaConfig
>>> config = AmicaConfig(max_iter=500, num_mix_comps=3)
>>> amica = Amica(config, random_state=42)
>>> result = amica.fit(data)  # data: (n_channels, n_samples)
>>> activations = (
...     result.unmixing_matrix_white_ @ result.whitener_ @ (data - result.mean_[:, None])
... )
__init__(config=None, random_state=None)[source]#
Parameters:

Methods

__init__([config, random_state])

fit(data[, init_mean, init_sphere, ...])

Fit AMICA model to data.

fit_transform(X[, y])

Fit to data, then transform it.

get_params([deep])

Get parameters for this estimator.

inverse_transform(sources)

Reconstruct data from sources.

load(outdir)

Load model from AMICA-compatible directory.

save(outdir)

Save model to directory in AMICA-compatible format.

set_params(**params)

Set the parameters of this estimator.

transform(data)

Apply fitted unmixing to new data.

get_params(deep=True)[source]#

Get parameters for this estimator.

Parameters:
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns:
paramsdict

Parameter names mapped to their values.

Parameters:

deep (bool)

Return type:

dict

set_params(**params)[source]#

Set the parameters of this estimator.

Parameters:
**paramsdict

Estimator parameters.

Returns:
selfAmica

Estimator instance.

Return type:

Amica

fit_transform(X, y=None)[source]#

Fit to data, then transform it.

Parameters:
Xnp.ndarray, shape (n_channels, n_samples)

Input data.

yNone

Ignored.

Returns:
X_newnp.ndarray, shape (n_components, n_samples)

Transformed data.

Parameters:

X (ndarray)

Return type:

ndarray

fit(data, init_mean=None, init_sphere=None, init_weights=None, init_params=None)[source]#

Fit AMICA model to data.

Parameters:
datanp.ndarray, shape (n_channels, n_samples)

Input EEG/MEG data. Should be high-pass filtered.

init_meannp.ndarray, optional

Precomputed mean vector to use instead of computing from data.

init_spherenp.ndarray, optional

Precomputed sphering matrix to use instead of computing from data.

init_weightsnp.ndarray, optional

Precomputed unmixing matrix (W) to use for initialization.

init_paramsdict, optional

Dictionary containing initial values for ‘alpha’, ‘mu’, ‘beta’, ‘rho’.

Returns:
resultAmicaResult

Fitted model containing mixing/unmixing matrices and all model parameters.

Parameters:
Return type:

AmicaResult

transform(data)[source]#

Apply fitted unmixing to new data.

Parameters:
datanp.ndarray, shape (n_channels, n_samples)

New data to transform.

Returns:
sourcesnp.ndarray, shape (n_components, n_samples)

Source activations.

Parameters:

data (ndarray)

Return type:

ndarray

inverse_transform(sources)[source]#

Reconstruct data from sources.

Parameters:
sourcesnp.ndarray, shape (n_components, n_samples)

Source activations.

Returns:
datanp.ndarray, shape (n_channels, n_samples)

Reconstructed data.

Parameters:

sources (ndarray)

Return type:

ndarray

save(outdir)[source]#

Save model to directory in AMICA-compatible format.

Parameters:
outdirstr or Path

Output directory.

Parameters:

outdir (str | Path)

Return type:

None

classmethod load(outdir)[source]#

Load model from AMICA-compatible directory.

Parameters:
outdirstr or Path

Input directory containing AMICA binary files.

Returns:
modelAmica

Loaded AMICA model.

Parameters:

outdir (str | Path)

Return type:

Amica