Releases: sccn/pyAMICA
Release list
pyAMICA 0.1.2
Patch release adding NumPy-backend outlier-rejection parity, repo-wide type-checking enforcement, and the full validation-evidence documentation. Correctness remains defined as parity with the reference Fortran binary, validated only on real sample EEG.
Highlights
- NumPy outlier rejection (
do_reject): the Fortran outlier-rejection path is ported toAMICA_NumPyvia the samegood_idxmechanism as the PyTorch backend, so the NumPy reference now drops per-sample outliers on therejstart/rejint/maxrejschedule (#123). - Rejection robustness: a non-finite log-likelihood is now distinguished from an over-aggressive
rejsig, so an over-tight rejection threshold fails with a clear message instead of a silent non-finite result (#127). - Type checking enforced repo-wide: all
tydiagnostics fixed (496 to 0) andtyadded to CI alongside a pre-commit config (ruff + ty) (#124, #125). - Comprehensive validation docs: the validation guide is now a full evidence page covering source-density bit-exactness, cross-platform device/precision invariance (cross-backend equivalence matrix + IC topomaps), the EEGLAB drop-in round-trip, and the other validated behaviors (#108).
Changelog
The changelog now also backfills the previously missing 0.1.1 entry. See the full changelog.
Install
```bash
git clone https://github.com/sccn/pyAMICA.git
cd pyAMICA
uv sync
```
Full diff: v0.1.1...v0.1.2
pyAMICA 0.1.1
Patch release covering validation-methodology and correctness fixes since v0.1.0.
Highlights
- Amari distance: a second, permutation/scale-invariant unmixing-matrix
comparison metric (Amari, Cichocki & Yang 1996) alongside the existing
Hungarian-matched correlation, used throughout the Fortran-parity
validation (single-model ~0.006; multi-model ensemble equivalence
confirmed, run-level permutation p>0.999). - Performance tables: Table 2 and the docs performance guide gained
native-Fortran rows (Intel 24-core workstation, Apple Silicon 8-core) and
the full CPU core-scaling comparison, alongside the existing GPU/torch
numbers. - Type-safety fixes:
validate_implementations.py'srun_fortran_amica
is now correctly typedOptional[Dict](it returnsNoneon several
failure paths), removing a latent possibly-unbound-variable risk in its
exception handling;load_eeglab_data'sdtypeannotation now matches
its default value. - Multi-model equivalence test fix: the ensemble equivalence test now
uses a valid run-level permutation test (respecting the dependence among
the 40 runs' pairwise correlations) instead of a pseudoreplicated
Mann-Whitney/TOST. - Corrected a stale float32-speedup claim and added a funding acknowledgement.
Validation
Correctness is defined as parity with the reference Fortran binary, measured
with two complementary metrics (Hungarian-matched correlation and Amari
distance), and validated only on real sample EEG -- never synthetic data.
See the documentation for the full validation and per-run detail.
Install
```bash
git clone https://github.com/sccn/pyAMICA.git
cd pyAMICA
uv sync
```
pyAMICA 0.1.0
First public release of pyAMICA, a Python (PyTorch) implementation of Adaptive Mixture Independent Component Analysis (AMICA) that reproduces the reference Fortran implementation within numerical tolerance.
Highlights
- Fortran parity on real EEG: single-model log-likelihood ~ -3.40 (reference -3.4018), Hungarian-matched component correlation ~ 0.997; source-density score functions bit-exact to ~1e-15.
- Backends: CPU, NVIDIA GPU (CUDA), and Apple GPU (MLX). float64 for parity, float32 for speed (MLX is the fastest option on Apple Silicon).
- Full algorithm: all five source-density families, mixture of ICA models, positive-definite Newton updates, component sharing, and outlier rejection.
- EEGLAB drop-in output:
write_amica_outputwrites theloadmodout15binary format andvariance_ordergives the EEGLAB back-projected-variance component order (IC1 = highest), so a run loads directly in EEGLAB. - scikit-learn-style
AMICAinterface, model save/load, and a documentation site. - Benchmarks: spatially-distributed channel-subset selection and a data-size (k-factor) cross-backend equivalence sweep.
Validation
Correctness is defined as parity with the reference Fortran binary and is validated on real sample EEG, never synthetic data. See the documentation for the full validation and backend-selection guides.
Install
git clone https://github.com/sccn/pyAMICA.git
cd pyAMICA
uv sync