From d1550bf075ef8b07d9808947422d4a1d5efacbfa Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Thu, 24 Sep 2026 01:40:59 -0700 Subject: [PATCH] Prepare the 0.4.0 release Rename the changelog's Unreleased section to 0.4.0 (2026-09-24) with a parity summary, and set the version to 0.4.0.dev0 with sync_version.py so the release chain tags 0.4.0. --- .zenodo.json | 2 +- CITATION.cff | 2 +- docs/changelog.md | 5 ++++- pyproject.toml | 2 +- uv.lock | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index fd208d3..a3506a4 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,7 +1,7 @@ { "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.4.dev7", + "version": "0.4.0.dev0", "publication_date": "2026-09-24", "upload_type": "software", "access_right": "open", diff --git a/CITATION.cff b/CITATION.cff index 3b22880..eaa4736 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -29,7 +29,7 @@ authors: affiliation: name: "Swartz Center for Computational Neuroscience" ror: "https://ror.org/01bt2qm76" -version: 0.3.4.dev7 +version: 0.4.0.dev0 date-released: "2026-09-24" license: BSD-3-Clause repository-code: "https://github.com/sccn/pAMICA" diff --git a/docs/changelog.md b/docs/changelog.md index a5e4a26..5719ade 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -6,10 +6,13 @@ at release time that heading becomes the version and its date. Each release's section is also its note on the [GitHub releases page](https://github.com/sccn/pAMICA/releases). -## Unreleased +## 0.4.0 - 2026-09-24 MLX becomes a first-class backend, reachable through every wrapper feature (epic #324, completing the raw backend of epic #278), and every backend's fitting follows the Fortran reference more closely. +Against the pinned v0.3.3 reference binary, single-model fits of a 70-channel EEG recording (5 seeds, 2000 iterations) +now agree with it to 6e-6 in log-likelihood, with a mean matched component correlation of 0.9996 +([Validation & Parity](guides/validation.md)). !!! warning "Default fits differ from 0.3.3" A default fit on any backend (PyTorch, NumPy or MLX) follows a different trajectory than in 0.3.3, diff --git a/pyproject.toml b/pyproject.toml index 642c81b..a91e301 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pamica" -version = "0.3.4.dev7" +version = "0.4.0.dev0" description = "pAMICA: Python implementation of the Adaptive Mixture ICA algorithm" readme = "README.md" authors = [ diff --git a/uv.lock b/uv.lock index 6e91b54..2480df8 100644 --- a/uv.lock +++ b/uv.lock @@ -1191,7 +1191,7 @@ wheels = [ [[package]] name = "pamica" -version = "0.3.4.dev7" +version = "0.4.0.dev0" source = { editable = "." } dependencies = [ { name = "json5" },