From d1d757457587fa78bbe7c1461345cce68870da52 Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Sat, 18 Jul 2026 01:07:06 -0700 Subject: [PATCH 1/2] Canonicalize pyAMICA URLs to pAMICA The GitHub repo was renamed sccn/pyAMICA -> sccn/pAMICA, moving the Pages site to https://eeglab.org/pAMICA/ and 404-ing the old eeglab.org/pyAMICA doc links (including the README docs badge shown on PyPI). Sweep live references /pyAMICA -> /pAMICA across docs URLs, GitHub repo URLs, codecov, the badge label, the resolver _REPO default, and git clone/cd snippets. Historical changelog prose (the 0.2.0 entry's then-current sccn/pyAMICA) is preserved; .context/ archive left as-is. All new URLs verified to return 200. Closes #184. --- .zenodo.json | 2 +- CITATION.cff | 4 ++-- CONTRIBUTING.md | 6 +++--- README.md | 14 +++++++------- docs/api/native-backend.md | 2 +- docs/api/viz.md | 2 +- docs/changelog.md | 2 +- docs/development/contributing.md | 10 +++++----- docs/getting-started.md | 4 ++-- mkdocs.yml | 12 ++++++------ pamica/native/resolver.py | 2 +- paper.md | 4 ++-- pyproject.toml | 4 ++-- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index a8a5cb5..27eb468 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -35,7 +35,7 @@ ], "related_identifiers": [ { - "identifier": "https://eeglab.org/pyAMICA/", + "identifier": "https://eeglab.org/pAMICA/", "relation": "isDocumentedBy", "scheme": "url", "resource_type": "publication-softwaredocumentation" diff --git a/CITATION.cff b/CITATION.cff index be08be7..e97ff93 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -32,8 +32,8 @@ authors: version: 0.2.1 date-released: "2026-07-18" license: BSD-3-Clause -repository-code: "https://github.com/sccn/pyAMICA" -url: "https://eeglab.org/pyAMICA/" +repository-code: "https://github.com/sccn/pAMICA" +url: "https://eeglab.org/pAMICA/" keywords: - AMICA - independent component analysis diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d39e3f..1535f86 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ standard rather than to "it converges." ## Getting help and reporting issues - **Questions, bugs, and feature requests:** please open an issue on the - [GitHub issue tracker](https://github.com/sccn/pyAMICA/issues). + [GitHub issue tracker](https://github.com/sccn/pAMICA/issues). - When reporting a bug, include the pamica version, platform, device (CPU/CUDA/MPS/MLX), precision (float32/float64), and a minimal example. @@ -19,8 +19,8 @@ pamica uses [UV](https://docs.astral.sh/uv/) for environment and dependency management. ```bash -git clone https://github.com/sccn/pyAMICA.git -cd pyAMICA +git clone https://github.com/sccn/pAMICA.git +cd pAMICA uv sync # install the project and dependencies uv run pytest # run the test suite ``` diff --git a/README.md b/README.md index 63b8050..70a5f79 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # pAMICA: Adaptive Mixture ICA -[![CI](https://github.com/sccn/pyAMICA/actions/workflows/ci.yml/badge.svg)](https://github.com/sccn/pyAMICA/actions/workflows/ci.yml) -[![codecov](https://codecov.io/gh/sccn/pyAMICA/branch/main/graph/badge.svg)](https://codecov.io/gh/sccn/pyAMICA) +[![CI](https://github.com/sccn/pAMICA/actions/workflows/ci.yml/badge.svg)](https://github.com/sccn/pAMICA/actions/workflows/ci.yml) +[![codecov](https://codecov.io/gh/sccn/pAMICA/branch/main/graph/badge.svg)](https://codecov.io/gh/sccn/pAMICA) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21312148.svg)](https://doi.org/10.5281/zenodo.21312148) -[![Docs](https://img.shields.io/badge/docs-eeglab.org%2FpyAMICA-blue)](https://eeglab.org/pyAMICA/) +[![Docs](https://img.shields.io/badge/docs-eeglab.org%2FpAMICA-blue)](https://eeglab.org/pAMICA/) Python (PyTorch) implementation of Adaptive Mixture Independent Component Analysis (AMICA) that reproduces the reference Fortran implementation within numerical @@ -14,7 +14,7 @@ in EEGLAB. Single-model results match the Fortran reference (Hungarian-matched component correlation ~ 0.998 on well-determined data, Newton disabled); see the -[documentation](https://eeglab.org/pyAMICA/) for validation details and the +[documentation](https://eeglab.org/pAMICA/) for validation details and the backend-selection guide. ## Overview @@ -33,8 +33,8 @@ AMICA (Adaptive Mixture ICA) is an advanced blind source separation algorithm th The canonical environment is [uv](https://docs.astral.sh/uv/): ```bash -git clone https://github.com/sccn/pyAMICA.git -cd pyAMICA +git clone https://github.com/sccn/pAMICA.git +cd pAMICA uv sync # install dependencies into a managed venv uv run pytest # optional: run the tests ``` @@ -95,7 +95,7 @@ The NumPy reference backend keeps a JSON-driven command-line interface: python -m pamica.numpy_impl.cli params.json --outdir results ``` -See the [documentation](https://eeglab.org/pyAMICA/) for the full API, the +See the [documentation](https://eeglab.org/pAMICA/) for the full API, the parameter reference, and the backend-selection and validation guides. ## Citation diff --git a/docs/api/native-backend.md b/docs/api/native-backend.md index cf81ca9..fdd3cc8 100644 --- a/docs/api/native-backend.md +++ b/docs/api/native-backend.md @@ -44,7 +44,7 @@ asset and caches it, so later runs are offline: it has passed its checksum; a failed or tampered download never runs. - **Platforms:** prebuilt binaries are attached to each release for macOS arm64, Linux x64, Linux arm64 and Windows x64. Windows arm64 has no native Fortran - toolchain yet ([#173](https://github.com/sccn/pyAMICA/issues/173)); it maps to + toolchain yet ([#173](https://github.com/sccn/pAMICA/issues/173)); it maps to the x64 binary, which runs under Windows 11 ARM's x64 emulation. Install the binary explicitly (for example to pre-populate the cache in an diff --git a/docs/api/viz.md b/docs/api/viz.md index c220f5f..ec8e71c 100644 --- a/docs/api/viz.md +++ b/docs/api/viz.md @@ -15,7 +15,7 @@ mutating pyplot's global state. probable model at each timepoint. A per-component scalp-topography plot is not included yet: deriving source activations from a loaded `AmicaOutput` depends on an unsettled `W` convention -question, tracked in [#159](https://github.com/sccn/pyAMICA/issues/159). +question, tracked in [#159](https://github.com/sccn/pAMICA/issues/159). ```python from pamica import plot_pmi_heatmap, plot_model_probability diff --git a/docs/changelog.md b/docs/changelog.md index 0ce5dd8..58e9940 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,7 +1,7 @@ # Changelog Release notes are also published on the -[GitHub releases page](https://github.com/sccn/pyAMICA/releases). +[GitHub releases page](https://github.com/sccn/pAMICA/releases). ## 0.2.1 diff --git a/docs/development/contributing.md b/docs/development/contributing.md index ff8f54f..83d20e8 100644 --- a/docs/development/contributing.md +++ b/docs/development/contributing.md @@ -1,15 +1,15 @@ # Contributing Contributions are welcome. This page summarizes the development workflow; see the -full [CONTRIBUTING](https://github.com/sccn/pyAMICA/blob/main/CONTRIBUTING.md) -and [Code of Conduct](https://github.com/sccn/pyAMICA/blob/main/CODE_OF_CONDUCT.md) +full [CONTRIBUTING](https://github.com/sccn/pAMICA/blob/main/CONTRIBUTING.md) +and [Code of Conduct](https://github.com/sccn/pAMICA/blob/main/CODE_OF_CONDUCT.md) in the repository root. ## Development setup ```bash -git clone https://github.com/sccn/pyAMICA.git -cd pyAMICA +git clone https://github.com/sccn/pAMICA.git +cd pAMICA uv sync # install the project and dependencies uv run pytest # run the test suite ``` @@ -27,5 +27,5 @@ uv run pytest # run the test suite ## Reporting issues and getting help Please open an issue on the -[GitHub issue tracker](https://github.com/sccn/pyAMICA/issues) for bug +[GitHub issue tracker](https://github.com/sccn/pAMICA/issues) for bug reports, feature requests, and questions. diff --git a/docs/getting-started.md b/docs/getting-started.md index b77ca0b..340bc42 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -8,8 +8,8 @@ management. ### From source ```bash -git clone https://github.com/sccn/pyAMICA.git -cd pyAMICA +git clone https://github.com/sccn/pAMICA.git +cd pAMICA uv sync # install the project and its dependencies into .venv ``` diff --git a/mkdocs.yml b/mkdocs.yml index b831543..bce8084 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,16 +1,16 @@ # pAMICA documentation (MkDocs Material). # Deployed to GitHub Pages by .github/workflows/docs.yml. The repo lives at -# github.com/sccn/pyAMICA, whose project Pages inherit the sccn org Pages custom -# domain (eeglab.org) at the /pyAMICA subpath, so the site is served at -# https://eeglab.org/pyAMICA/. Links are relative so the build is location-independent. +# github.com/sccn/pAMICA, whose project Pages inherit the sccn org Pages custom +# domain (eeglab.org) at the /pAMICA subpath, so the site is served at +# https://eeglab.org/pAMICA/. Links are relative so the build is location-independent. site_name: pAMICA Documentation -site_url: https://eeglab.org/pyAMICA/ +site_url: https://eeglab.org/pAMICA/ site_description: Python (PyTorch) implementation of Adaptive Mixture ICA (AMICA) with Fortran parity and GPU/MPS/CPU support. site_author: Seyed Yahya Shirazi -repo_url: https://github.com/sccn/pyAMICA/ -repo_name: sccn/pyAMICA +repo_url: https://github.com/sccn/pAMICA/ +repo_name: sccn/pAMICA edit_uri: edit/main/docs/ theme: diff --git a/pamica/native/resolver.py b/pamica/native/resolver.py index b5bb9c2..7f6d0ea 100644 --- a/pamica/native/resolver.py +++ b/pamica/native/resolver.py @@ -17,7 +17,7 @@ import urllib.request from pathlib import Path -_REPO = os.environ.get("PAMICA_NATIVE_REPO", "sccn/pyAMICA") +_REPO = os.environ.get("PAMICA_NATIVE_REPO", "sccn/pAMICA") _ENV_BINARY = "PAMICA_NATIVE_BINARY" _ENV_CACHE = "PAMICA_NATIVE_CACHE" diff --git a/paper.md b/paper.md index d50babf..f46b1fd 100644 --- a/paper.md +++ b/paper.md @@ -47,7 +47,7 @@ a single-model output file is byte-identical in layout to a native AMICA file an and multi-model output round-trips through the same loader. Correctness is defined as parity with the Fortran reference for the single-model case and, because multi-model AMICA is not partition-identifiable, as a similar distribution of solutions for the multi-model case; both are validated on real EEG against the reference binary. A minimal example is a scikit-learn-style call, `AMICA(n_models=1, n_mix=3).fit(X)` on a `(channels, samples)` array (full workflow in the README). -The software is at (archived at doi:10.5281/zenodo.21312148). +The software is at (archived at doi:10.5281/zenodo.21312148). # Statement of need @@ -136,7 +136,7 @@ The correctness harness compares `pamica` against Fortran with two metrics, Hung the multi-model and score-function checks need no external download (bundled sample only). The full per-channel and multi-model performance tables, the per-run Amari-distance detail, and the data-size sweep, along with the step-by-step commands to reproduce every number here, -are in the documentation (). +are in the documentation (). # State of the field diff --git a/pyproject.toml b/pyproject.toml index 5071274..1ec1200 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,8 +51,8 @@ docs = [ viz = ["mne>=1.6"] [project.urls] -Homepage = "https://github.com/sccn/pyAMICA" -Repository = "https://github.com/sccn/pyAMICA" +Homepage = "https://github.com/sccn/pAMICA" +Repository = "https://github.com/sccn/pAMICA" [tool.setuptools] # List subpackages explicitly so the wheel is deterministic across platforms From 29abbc6dc6ce2f86f2eba42a4a05fab9f7dcd491 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 18 Jul 2026 08:08:03 +0000 Subject: [PATCH 2/2] Rebuild paper.pdf [skip ci] --- paper.pdf | Bin 373427 -> 373443 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/paper.pdf b/paper.pdf index ef962ce6a6057c4a3c7ecfdf810abc92a3c0c4e5..531be446718439a461888bf19214e20c51ed93ef 100644 GIT binary patch delta 11658 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 delta 11625 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 >bRaQbXhn4VQWGH^z9fkU zTVbK$c!iHh44KnqXE2`AZ+c1@Z+K**m(hd9+V^#XT87**sa_?RxgXIX|Fox-IO|Gh z7~D@)cj#hVL3)-HvLj-fGVSxqI=ah#a|4{5rquU&c?6&wuPj#A)b1<{FokO&*}ri@ z>H?&Z_PUTa1`mnoFAZBcwv%v9BUzDd7b@tBQX=7UwyiPgm!izTRC*x7lQMOoOGnMF8R zB)PblIeElb+1NS6C0STF#s3>1NW%aBYsnyKgd_*$$N*LSkGfDU8OSG?5RBhl?0s!3 zJ7a(R7XKAjEWREgcaa%~` zOmHy8eJIX;hv_)6rih&wYFdloN>B}u;2G_ z5C%}3)&Z_G<3X+n{ICi}Epf64we*{#vAr#Et_Zc?3Bt$(;ep&pq4T8Q=-=VQ@so21 zuhrAyPe!k|>2%#C{(uI5pOO*3)HA5S+zQ`2!`SxYm^MsWH8i7NGFqwkRFte`>VN4p zFl9Z`RlQPHsms1=7gG`UQdc_`^-Eg=)OlqOev7br%biWCMa-Uk^Scy@5+>Me>}B7K)G5apFZG_sZzd}I!=H8hWmniH0>{%k=+bQ49CIE N14l_Ip(F|SzW^;rUwQxl