diff --git a/skills/ag_build_interferometer_model.md b/skills/ag_build_interferometer_model.md index 813723c..2e765f4 100644 --- a/skills/ag_build_interferometer_model.md +++ b/skills/ag_build_interferometer_model.md @@ -275,10 +275,6 @@ not cosmetic. 10⁹, so a disagreement bigger than that means something about the NUFFT setup is wrong rather than the transform being approximate. It is also what the pixelised reconstruction's sparse-operator path uses. -- **`ag.TransformerNUFFTPyNUFFT`** — a legacy `pynufft`-backed transformer, kept as a non-JAX - fallback. It is not JAX-traceable, so it forfeits GPU acceleration *and* the gradient-based - searches, which need the likelihood's derivatives. - **There is a guard, and it is there for a reason.** `ag.Interferometer` (and `from_fits`) raises `raise_error_dft_visibilities_limit=True` by default, and it will refuse to build a dataset with more than **10,000 visibilities** while `transformer_class=ag.TransformerDFT`. The DFT at that diff --git a/skills/ag_setup_environment.md b/skills/ag_setup_environment.md index 0bba2f2..c2fe836 100644 --- a/skills/ag_setup_environment.md +++ b/skills/ag_setup_environment.md @@ -104,7 +104,7 @@ question in disguise: command names it explicitly. It accelerates the compiled geometry kernels in PyAutoArray; if it will not build on your platform, the stack runs without it. -`pynufft` only matters if you fit visibilities — skip it otherwise; the library prints +`nufftax` only matters if you fit visibilities — skip it otherwise; the library prints exactly what to install if you reach interferometer code without it. The full extras table, the conda route and the editable-clone route (for reading or modifying library source) are in diff --git a/wiki/core/api/datasets.md b/wiki/core/api/datasets.md index a6654fc..a798977 100644 --- a/wiki/core/api/datasets.md +++ b/wiki/core/api/datasets.md @@ -24,7 +24,7 @@ sources: - scripts/interferometer/start_here.py pinned_commit: d6db2643b9f2cd418efc9473f560dc2a2d459c73 last_updated: 2026-08-01 -content_sha256: 588526e9facb90fe46fc488fbece00c62fc2a5640fa9cf01ff0ebf92243fafd8 +content_sha256: 9af41974373a9870baadb95596c1a6ebba5daf770c26c16f7293459a9afd91cb --- # Datasets @@ -181,8 +181,8 @@ Adapted from `autogalaxy_workspace:scripts/interferometer/start_here.py`. Source **Transformers.** `ag.TransformerNUFFT` is the JAX-native non-uniform FFT and the recommended default at any visibility count. `ag.TransformerDFT` is an exact discrete transform — slower -for large `n_vis`, but useful as a verification reference. `ag.TransformerNUFFTPyNUFFT` is the -legacy backend, available when explicitly requested. +for large `n_vis`, but useful as a verification reference, and the transformer to use where +JAX is unavailable (notably Intel macOS, for which JAX ships no wheels). Attributes: diff --git a/wiki/core/concepts/interferometer_theory.md b/wiki/core/concepts/interferometer_theory.md index 3dd1881..b69db09 100644 --- a/wiki/core/concepts/interferometer_theory.md +++ b/wiki/core/concepts/interferometer_theory.md @@ -20,7 +20,7 @@ sources: - scripts/interferometer/features/linear_light_profiles/modeling.py pinned_commit: d6db2643b9f2cd418efc9473f560dc2a2d459c73 last_updated: 2026-08-01 -content_sha256: 8b874623d54019876858f6ca351df0359ae461d3fc6f43d3b132fd2e2284825c +content_sha256: 1fa1de69f41b378b2a1a99b1d0d77bc0f935e30f0ecf19b67a5bcfa437759593 --- # Interferometer fitting — visibilities, the uv-plane and dirty images @@ -120,10 +120,6 @@ Three transformers are available (`PyAutoArray:autoarray/operators/transformer.p - **`ag.TransformerDFT`** — the exact discrete Fourier transform. Slower than the NUFFT once `n_vis` is large, but valuable as a reference for verifying a NUFFT result, and used by the pixelised reconstruction's sparse-operator path. -- **`ag.TransformerNUFFTPyNUFFT`** — a legacy `pynufft`-backed transformer, kept as a - non-JAX fallback. It is not JAX-traceable, so it forfeits GPU acceleration and the - gradient-based searches. - Because `nufftax` is JAX-native, light-profile interferometer fitting now runs at full GPU speed for datasets with **arbitrarily many visibilities** — up to the tens or hundreds of millions typical of high-resolution ALMA observations. diff --git a/wiki/core/operations/installation.md b/wiki/core/operations/installation.md index 6ba053b..d892c11 100644 --- a/wiki/core/operations/installation.md +++ b/wiki/core/operations/installation.md @@ -36,7 +36,7 @@ sources: - autoassistant/audit_skill_apis.py pinned_commit: ed72fabb33e14a9a701a4d280e8775dd3a20e98c last_updated: 2026-08-01 -content_sha256: a758c9de0a2e8e2a9e880fed2f3562a8918feec447616c6eb2c94c667a6c81ae +content_sha256: 8999fa2a4700ae1fe2db2782fe66bdb222eadf78d35db474b6043da47155167c --- # Installation @@ -100,7 +100,7 @@ below need a modern resolver. | Extra | Pulls in | Install it when | |---|---|---| | `jax` | `autofit[jax]` (→ `autonerves[jax]`: `jax`/`jaxlib` `>=0.7.0,<0.11.0`, `jaxnnls`; plus `optax`) and `jax_zero_contour` | Almost always — JAX is the accelerated evaluation path, on CPU and GPU | -| `optional` | `autogalaxy[jax]`, `numba`, `pynufft`, `zeus-mcmc`, `getdist` | You want the full set in one command | +| `optional` | `autogalaxy[jax]`, `numba`, `zeus-mcmc`, `getdist` | You want the full set in one command | | `test` | `pytest`, `colossus` | You are running PyAutoGalaxy's own test suite | | `docs` | Sphinx + theme packages | You are building the RTD site | @@ -115,9 +115,10 @@ the CPU wheel over it. JIT-compiled geometry kernels in PyAutoArray. If it will not build on your platform, PyAutoGalaxy runs without it — see `PyAutoGalaxy:docs/installation/numba.md`. -**`pynufft` is only for interferometer work.** Skip it unless you fit visibilities; if -you do run interferometer code without it, the library prints a message telling you -exactly what to install. +**`nufftax` is only for interferometer work.** It is not in PyAutoGalaxy's `optional` +extra — install it explicitly with `pip install nufftax`. Skip it unless you fit +visibilities; if you do run interferometer code without it, the library prints a message +telling you exactly what to install. ### Conda diff --git a/wiki/core/stack/autoarray.md b/wiki/core/stack/autoarray.md index 824f1b9..e990404 100644 --- a/wiki/core/stack/autoarray.md +++ b/wiki/core/stack/autoarray.md @@ -13,7 +13,7 @@ sources: - README.md pinned_commit: 59b0f198fc7bdf9c91e5a8f734dad796fcc55656 last_updated: 2026-08-01 -content_sha256: 8f4425d067e527e01d00fa5a512a91dcf96de18071acb8cb5adfe1b43fe4e9a0 +content_sha256: f4a8f8720dde3b84912f3220ae2deeeeeb2cb5c912d5cc5177e88f9663244793 --- # PyAutoArray — arrays, grids, masks, datasets @@ -90,7 +90,7 @@ The plot-label notation and output settings a user is more likely to edit live i `autonerves`, `astropy`, `decorator`, `dill`, `matplotlib`, `scipy`, `scikit-image`, `scikit-learn`, `tqdm`. Optional extras add `numba` for JIT-acceleration of geometry -kernels, and `nufftax` / `pynufft` for visibility transforms. +kernels, and `nufftax` for visibility transforms. ## See also diff --git a/wiki/core/stack/autogalaxy.md b/wiki/core/stack/autogalaxy.md index 1cd54c7..4abbe84 100644 --- a/wiki/core/stack/autogalaxy.md +++ b/wiki/core/stack/autogalaxy.md @@ -17,7 +17,7 @@ sources: - README.md pinned_commit: 65b14d7767da194a21bf0f3a4345f0790af86ed4 last_updated: 2026-08-01 -content_sha256: edcdfaee1873806090b90e1a7537646c94fd2c78e699ffaf3ab447ef3f3bb84d +content_sha256: c9cb7e2d004800e67686a35927da1463da9cab032379360200c0269381566983 --- # PyAutoGalaxy — galaxy structure and galaxy modelling @@ -177,7 +177,7 @@ write `af.Model(ag.lp.Sersic)`, the default prior for each parameter comes from ## Dependencies `autofit`, `autoarray`, `astropy`, `nautilus-sampler`. Optional extras add `numba`, -`pynufft`, `zeus-mcmc`, `getdist`, and — via `autogalaxy[jax]` — `autofit[jax]` +`zeus-mcmc`, `getdist`, and — via `autogalaxy[jax]` — `autofit[jax]` (JAX, jaxlib, jaxnnls, optax) plus `jax_zero_contour`. ## See also