docs: interferometer preload prose — built as a type-1 NUFFT in seconds - #238
Merged
Merged
Conversation
…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
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.npyfile is a run-time necessity. PyAutoArray#541 builds that array as a type-1 (adjoint) NUFFT withmethod="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
autoarrayrelease, 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 ownchunk_size.Prose only: no call signature changes. The
use_jax=Truekwargs 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. Thechunk_k/show_progress/show_memorybullets 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 innotebooks/changed.galaxy_reconstruction.pycallsapply_sparse_operatorbut makes no timing claim, so it is untouched. Prose aboutAnalysisInterferometer(use_jax=True)is out of scope — that is the fit, not the preload.Upstream PR
PyAutoLabs/PyAutoArray#541 — MERGED (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_compileclean on all three edited scriptsscripts/via the PyAutoHands generator from the workspace root;git status --shortshows only the three intended notebookssmoke_tests.txt/smoke_notebooks.txt, so the workspace smoke suite does not cover them; the change is prose-only with no executable editsCloses #237
Generated by the PyAutoLabs agent workflow.
🤖 Generated with Claude Code
https://claude.ai/code/session_018hLF3ZAcz5MmaSJBEcLkvF