Skip to content

docs: interferometer preload prose — built as a type-1 NUFFT in seconds - #238

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/interferometer-preload-prose
Sep 8, 2026
Merged

Jammy2211 merged 1 commit into
mainfrom
feature/interferometer-preload-prose

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Summary

The interferometer pixelization examples told users that building the sparse-operator preload (nufft_precision_operator) "can vary between seconds and hours", "may take 10 minutes or hours", and that saving it to a .npy file is a run-time necessity. PyAutoArray#541 builds that array as a type-1 (adjoint) NUFFT with method="nufft" the default: at 1e6 visibilities the measured build went from ~35 minutes to under 10 seconds, and 5e6 visibilities build in ~20 seconds on a CPU.

The prose now says the array is built as a type-1 NUFFT in seconds as of the next autoarray release, that saving it to disk is still supported but no longer necessary for run time (and that matrices saved by earlier versions stay valid, because the array is unchanged), and that memory — not run time — is what to watch at millions of visibilities, chunked at the transformer's own chunk_size.

Prose only: no call signature changes. The use_jax=True kwargs are kept on the calls, because they now stay on the fast path and removing them would change behaviour for anyone on the currently released library. The chunk_k / show_progress / show_memory bullets are reworded as the reference brute-force builders' inputs, which is what they now select.

Scripts Changed

  • scripts/interferometer/features/pixelization/many_visibilities_preparation.py — module docstring rewritten (preload cost, the disk cache as a convenience, the memory/chunking note); the __Profiling Dataset__, __Curvature Preload__ (input bullets), __Curvature Preload Output__ and __Wrap Up__ blocks updated. Also drops a stale line claiming the calculation below is commented out — it is not.
  • scripts/interferometer/features/pixelization/fit.py — opening docstring and the __Sparse Operators__ block.
  • scripts/interferometer/features/pixelization/modeling.py — opening docstring and the __Sparse Operators__ block.

Notebooks regenerated for exactly those three scripts (notebooks/interferometer/features/pixelization/{fit,modeling,many_visibilities_preparation}.ipynb); nothing else in notebooks/ changed.

galaxy_reconstruction.py calls apply_sparse_operator but makes no timing claim, so it is untouched. Prose about AnalysisInterferometer(use_jax=True) is out of scope — that is the fit, not the preload.

Upstream PR

PyAutoLabs/PyAutoArray#541MERGED (merge commit 9bd76799), but not yet released.

Depends on PyAutoArray#541 (merged, unreleased) — merge after the next autoarray release per the pending-release chain. The library-first merge gate is satisfied (the library PR reads MERGED), but the prose describes what users get once autoarray publishes, so this PR should land with or after that release rather than before it.

Test Plan

  • python -m py_compile clean on all three edited scripts
  • Notebooks regenerated from scripts/ via the PyAutoHands generator from the workspace root; git status --short shows only the three intended notebooks
  • None of the edited scripts appear in smoke_tests.txt / smoke_notebooks.txt, so the workspace smoke suite does not cover them; the change is prose-only with no executable edits
  • Heart readiness at ship time: YELLOW, two organism-scope reasons ("workspace validation not passing (5 failed, 2 timeout, cloud#34099198772)" and "release validation incomplete: no rehearsal for current source"); neither names these scripts, and this diff changes no executable line.

Closes #237

Generated by the PyAutoLabs agent workflow.

🤖 Generated with Claude Code

https://claude.ai/code/session_018hLF3ZAcz5MmaSJBEcLkvF

…ds (#237)

The interferometer pixelization examples told users the sparse-operator preload
(`nufft_precision_operator`) takes minutes to hours and that caching it to a
`.npy` file is a run-time necessity. PyAutoArray#541 builds that array as a
type-1 (adjoint) NUFFT: 1e6 visibilities went from ~35 minutes to under 10
seconds, and 5e6 visibilities build in ~20 seconds on a CPU.

The prose now says the array is built as a type-1 NUFFT in seconds as of the
next autoarray release, that saving it to disk is still supported but no longer
necessary for run time, and that memory — not run time — is what to watch at
millions of visibilities, chunked at the transformer's own `chunk_size`.

The `use_jax=True` kwargs are kept: they stay on the fast path, and removing
them would change behaviour for users on the currently released library. The
`chunk_k` / `show_progress` / `show_memory` bullets are reworded as the
reference brute-force builders' inputs, which is what they now select.

Notebooks regenerated for the three edited scripts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018hLF3ZAcz5MmaSJBEcLkvF
@Jammy2211 Jammy2211 added the pending-release PR queued for the next release build label Sep 8, 2026
@Jammy2211
Jammy2211 merged commit 6c9b19b into main Sep 8, 2026
7 checks passed
@Jammy2211
Jammy2211 deleted the feature/interferometer-preload-prose branch September 8, 2026 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pending-release PR queued for the next release build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: interferometer preload prose — built as a type-1 NUFFT in seconds

1 participant