Releases: snesmaeili/jamica
Release list
jamica 0.3.0
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
The distribution and import package are renamed from amica to jamica.
pip install jamicafrom jamica import amica, Amica, AmicaConfig, fit_icaThe 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 onwardReleases 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
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 honourchunk_size, bounding peak memory on long recordings. Results are unchanged.
API Changes
fit_icanow validatesn_componentsinstead of silently reinterpreting it. Requesting more components than there are selected channels raisesValueError(matchingsklearn.decomposition.PCAandmne.preprocessing.ICA, which previously differed from this function), and requesting more than the estimated numerical rank of the data also raises. Withn_componentsunset the estimated rank is used and aRuntimeWarningreports 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, collapsedmixing_matrix_, and causedICA.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
First PyPI release of amica — native Python AMICA (Adaptive Mixture ICA) for MNE-Python. pip install amica.