From 64025973760852b45b7ce618b2991103cee885da Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Sun, 19 Jul 2026 09:33:55 -0700 Subject: [PATCH] Bump version to 0.3.1 --- .zenodo.json | 4 ++-- CITATION.cff | 4 ++-- docs/changelog.md | 23 +++++++++++++++++++++++ pyproject.toml | 2 +- uv.lock | 2 +- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index 1786da7..75dfcba 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,8 +1,8 @@ { "title": "pAMICA: a Python implementation of Adaptive Mixture ICA", "description": "pamica is a Python (PyTorch) implementation of Adaptive Mixture Independent Component Analysis (AMICA) that reproduces the reference Fortran implementation within numerical tolerance, with CPU, NVIDIA GPU (CUDA), and Apple GPU (MLX) support. It targets EEG/EMG blind source separation and provides a scikit-learn-style interface and byte-identical EEGLAB (loadmodout15) output.", - "version": "0.3.0", - "publication_date": "2026-07-18", + "version": "0.3.1", + "publication_date": "2026-07-19", "upload_type": "software", "access_right": "open", "license": "bsd-3-clause", diff --git a/CITATION.cff b/CITATION.cff index 4fd9427..7d9a886 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -29,8 +29,8 @@ authors: affiliation: name: "Swartz Center for Computational Neuroscience" ror: "https://ror.org/01bt2qm76" -version: 0.3.0 -date-released: "2026-07-18" +version: 0.3.1 +date-released: "2026-07-19" license: BSD-3-Clause repository-code: "https://github.com/sccn/pAMICA" url: "https://eeglab.org/pAMICA/" diff --git a/docs/changelog.md b/docs/changelog.md index dacbced..8597658 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -3,6 +3,29 @@ Release notes are also published on the [GitHub releases page](https://github.com/sccn/pAMICA/releases). +## 0.3.1 + +Rho-rate schedule fixes across all backends and a reproducible-seed option in the +native binary build. + +- Fixed the rho learning-rate (`rholrate`) schedule to match Fortran + `amica15.f90`: it is a `maxdecs`-ratcheted ceiling (reset to `rholrate0` each + iteration/fit, tightened only after `maxdecs` persistent log-likelihood + decreases, gated on `iter > newt_start`), not a per-decrease monotone decay. + The previous decay collapsed the rho rate toward ~1e-5 and froze the source + shape. Fixed in the PyTorch and NumPy backends (#194, issue #193) and the MLX + backend (#197, issue #195). +- Native binary build: reproducible `seed` option. A `seed ` line in + `input.param` now seeds the random initialization deterministically (per-rank, + no system clock), so a native run is reproducible run to run; without it the + default stays clock-random. Also makes `random_seed` portable across compilers + via `random_seed(SIZE=...)`. Adopted from sccn/amica PR #54; the released + binaries (rebuilt by CI) carry the option (#196). +- Documented the #145 investigation (Newton-vs-Fortran weak-component divergence + at long budgets): resolved as init-basin sensitivity on under-determined + components, not a dynamics bug (identical init gives matching results); the + optional init-robustness enhancement is tracked in #198. + ## 0.3.0 MNE-Python compatibility layer (epic #139), additive: the scikit-learn-style diff --git a/pyproject.toml b/pyproject.toml index fc97135..4d51f04 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pamica" -version = "0.3.0" +version = "0.3.1" description = "pAMICA: Python implementation of the Adaptive Mixture ICA algorithm" readme = "README.md" authors = [ diff --git a/uv.lock b/uv.lock index 4c92bff..f669dd9 100644 --- a/uv.lock +++ b/uv.lock @@ -1191,7 +1191,7 @@ wheels = [ [[package]] name = "pamica" -version = "0.3.0" +version = "0.3.1" source = { editable = "." } dependencies = [ { name = "json5" },