Skip to content

Releases: snesmaeili/jamica

jamica 0.3.0

Choose a tag to compare

@snesmaeili snesmaeili released this 28 Aug 20:41
1d1b227

JAMICA 0.3.0 freezes jamica.amica as a strict single-model solver boundary for preprocessed ICA frameworks, including the contract intended for MNE-Python. It also adds the native AmicaICA multi-model interface, model posteriors and centres, HDF5 persistence, and per-model FIF export. See the changelog for the complete release notes.

jamica 0.2.0

Choose a tag to compare

@snesmaeili snesmaeili released this 13 Aug 11:56

The distribution and import package are renamed from amica to jamica.

pip install jamica
from jamica import amica, Amica, AmicaConfig, fit_ica

The old name installed a top-level amica module, which is also what amica-python — an independent implementation of the same algorithm by another author — installs. The two could not coexist in one environment: the conda-forge packages had to be declared mutually exclusive, and on PyPI installing both overwrote files. Under jamica they share no paths and install side by side.

Migration is one line. Every exported name keeps its spelling — amica, Amica, AmicaConfig, AmicaResult, fit_ica — and ica.method is still "amica":

from amica import Amica, AmicaConfig   # 0.1.0 and earlier
from jamica import Amica, AmicaConfig  # 0.2.0 onward

Releases up to 0.1.0 remain available on PyPI under the name amica.

This release also carries several changes that had not yet shipped: the expectation step is now blocked by chunk_size (default "auto"), cutting peak memory ~79% across six EEG recordings; amica(X, whiten=True) no longer returns incorrect sources; and a NaN in the float32 generalized-Gaussian E-step is fixed. See the changelog below for details.

amica 0.1.0

Choose a tag to compare

@snesmaeili snesmaeili released this 06 Aug 04:23

Rank-aware fit_ica and chunked multi-model posteriors. This release ships the two defects disclosed against 0.0.1.

Enhancements

  • Multi-model fits no longer materialise the full (n_models, n_components, n_samples) source array when computing model posteriors or when likelihood-based sample rejection is enabled. Both paths now honour chunk_size, bounding peak memory on long recordings. Results are unchanged.

API Changes

  • fit_ica now validates n_components instead of silently reinterpreting it. Requesting more components than there are selected channels raises ValueError (matching sklearn.decomposition.PCA and mne.preprocessing.ICA, which previously differed from this function), and requesting more than the estimated numerical rank of the data also raises. With n_components unset the estimated rank is used and a RuntimeWarning reports the value chosen. Previously the default kept every channel: on average-referenced EEG the trailing PCA direction has near-zero variance, which made the unmixing matrix numerically singular, collapsed mixing_matrix_, and caused ICA.apply() to return near-zero data with no warning.

Re-validation

Checked against the published benchmark before release. On three ds004505 participants at the published configuration, complete MIR agrees with the reported values to within 0.04% — largest deviation 1.5e-03 kbits/s, against a smallest reported between-method difference of 0.136 kbits/s. Retained rank, component count, iteration count and per-subject sample counts are identical, and fits are 40–44% faster on the same hardware class. The MNE interoperability suite passes 30/30.

Full Changelog: v0.0.1...v0.1.0

amica 0.0.1

Choose a tag to compare

@snesmaeili snesmaeili released this 01 Jul 00:15

First PyPI release of amica — native Python AMICA (Adaptive Mixture ICA) for MNE-Python. pip install amica.