Skip to content

feat: rectangular mesh split — Bilinear default everywhere, RTU documented as advanced - #495

Merged
Jammy2211 merged 3 commits into
mainfrom
feature/rectangular-bilinear-rtu-mesh-split
Aug 21, 2026
Merged

feat: rectangular mesh split — Bilinear default everywhere, RTU documented as advanced#495
Jammy2211 merged 3 commits into
mainfrom
feature/rectangular-bilinear-rtu-mesh-split

Conversation

@Jammy2211

@Jammy2211 Jammy2211 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

Workspace follow-up to the PyAutoArray rectangular mesh split (PyAutoLabs/PyAutoArray#462, merged; task PyAutoLabs/PyAutoArray#461). Every example — imaging family and interferometer — switches to the new fast-CPU default RectangularBilinearAdaptDensity / RectangularBilinearAdaptImage; no normal-workspace example uses RTU (user decision, 2026-08-21). The RectangularRTUAdaptDensity / RectangularRTUAdaptImage meshes are documentation-only here: the advanced option, required for gradient-based (JAX) interferometer fitting (the Bilinear likelihood has zero gradients on the interferometer sparse path) and recommended on GPUs, with the Enzi et al. 2026 (arXiv:2606.30620) citation — this folds in the queued Mind Enzi-citation docs draft.

Scripts Changed

  • ~80 scripts across imaging/, interferometer/, multi_galaxy/, group/, multi_dataset/, guides/: class-name sweep to RectangularBilinear* (no script passed bandwidth/n_knots, so the swaps are drop-in).
  • imaging/features/pixelization/modeling.py, likelihood_function.py, adaptive.py, README.md: new "Rectangular Mesh Variants" docs — Bilinear = rank-CDF fast CPU default; RTU = kernel-CDF advanced option (GPU / gradient samplers), Enzi citation, and the gradient caveat (over_sample_size_pixelization >= 4 or RTU).
  • interferometer/features/pixelization/modeling.py, README.md: Bilinear default like imaging; docs state gradient-based interferometer fitting must use RTU (no over-sampling escape hatch on the sparse path).
  • guides/modeling/searches.py: the gradient-search guide names the RTU meshes explicitly.
  • config/priors/mesh/: rectangular_adapt_*.yamlrectangular_rtu_adapt_*.yaml plus new rectangular_bilinear_adapt_*.yaml (same priors — the Bilinear meshes have no extra parameters).
  • llms-full.txt / workspace_index.json: navigator catalogue regenerated (CI staleness check).

Notebooks regenerate at release.

Upstream PR

Test Plan

  • All modified scripts compile (py_compile).
  • End-to-end fit smoke-tested against merged PyAutoArray main: RectangularBilinearAdaptDensity / RectangularBilinearAdaptImage / RectangularRTUAdaptImage all produce finite likelihoods on the jax_test imaging dataset (numpy and JAX paths).
  • CI: smoke 3.12/3.13, navigator checks green.
  • Notebook regeneration at next release (autohands).

…ed/interferometer

Workspace follow-up to PyAutoArray#462 (issue PyAutoArray#461):

- Imaging-family examples (imaging, multi_galaxy, group, multi_dataset,
  guides): RectangularAdaptDensity/AdaptImage -> the new fast-CPU default
  RectangularBilinearAdaptDensity/AdaptImage.
- Interferometer examples: -> RectangularRTUAdaptDensity/AdaptImage (pure
  rename of the previous kernel-CDF behaviour; RTU is the required
  gradient mesh on the interferometer sparse path).
- Mesh-variants docs added where the pixelization examples introduce the
  meshes (imaging + interferometer modeling.py, likelihood_function.py,
  adaptive.py, READMEs) incl. the Enzi et al. 2026 (arXiv:2606.30620) RTU
  citation — folds in the queued Mind Enzi-citation docs draft — and the
  gradient guidance (os_pix >= 4 or RTU; interferometer gradients need RTU).
- searches.py gradient guide: names the RTU meshes explicitly.
- Prior configs: rectangular_adapt_*.yaml renamed to rectangular_rtu_adapt_*.yaml
  and new rectangular_bilinear_adapt_*.yaml added (same priors).

Scripts and configs only — notebooks and workspace_index.json regenerate at
release.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtMqU3JfmyJh8GvB7jT4Et
claude added 2 commits August 21, 2026 17:46
llms-full.txt / workspace_index.json regenerated with
autohands/regenerate_navigator.py autolens after the
Bilinear/RTU class-name sweep (navigator staleness CI check).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtMqU3JfmyJh8GvB7jT4Et
No normal-workspace example uses RTU (user decision): the interferometer
examples switch from RectangularRTUAdaptDensity/AdaptImage to the
RectangularBilinearAdaptDensity/AdaptImage default, matching imaging. RTU
stays documentation-only — the advanced option, required for gradient-based
(JAX) interferometer fitting (zero Bilinear gradients on the sparse path)
and recommended on GPUs, with the Enzi et al. 2026 citation. Navigator
catalogue regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WtMqU3JfmyJh8GvB7jT4Et
@Jammy2211 Jammy2211 changed the title feat: rectangular mesh split — Bilinear default (imaging), RTU advanced/interferometer feat: rectangular mesh split — Bilinear default everywhere, RTU documented as advanced Aug 21, 2026
@Jammy2211
Jammy2211 merged commit d76f2f5 into main Aug 21, 2026
7 checks passed
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.

2 participants