Overview
Phase D.2.a of z_features/fast_visualization.md. Companion to Phase D.1 (PR autolens_workspace_test#113, PR autogalaxy_workspace_test#54). Rolls the __Visualization Sanity__ block pattern out to the remaining visualization_jax*.py scripts — the single-shot JAX-backed visualization path (no Nautilus search) that's the sibling code path to the JIT-cached modeling_visualization_jit*.py already covered.
Phase D.2.b — authoring new scripts for missing dataset coverage (ellipse modeling_visualization_jit + viz_jax in autogalaxy_workspace_test, quantity modeling_visualization_jit in autogalaxy_workspace_test, new weak-lensing scripts in autolens_workspace_test) — is a separate follow-up after this lands.
Plan
- 6 existing
visualization_jax*.py scripts gain a __Visualization Sanity__ block following the same pattern as Phase D.1. Insertion point: after the existing PILOT SUCCEEDED end-of-script print (these scripts have no Part-1/Part-2 split — just a single-shot validation).
- Per-dataset assertion shapes — lensing variants use the SIE sanity tracer (1+ tangential CC, finite positive Einstein radius, warm-call < 100 ms); interferometer adds
fit.model_data (complex Visibilities) finite + non-zero; non-lensing autogalaxy variants use fit.model_data + figure_of_merit finite/non-zero (no Tracer); point_source omits a script-specific FoM assertion (prior-median position can legitimately give chi² = -inf).
- Build the
fit via analysis.fit_from(instance=instance) since these scripts don't keep a cached fit_2 reference (unlike the modeling_visualization_jit scripts).
- Verify the
FitQuantity attribute name (model_data or similar) at implementation time — the prompt notes this as a known check point.
- No library changes, no Nautilus search added, no edits outside the new Sanity blocks.
Detailed implementation plan
Affected Repositories
- autolens_workspace_test (primary)
- autogalaxy_workspace_test
Work Classification
Workspace.
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./autolens_workspace_test |
main |
pre-existing drift (README + dataset/build/*), unrelated |
| ./autogalaxy_workspace_test |
main |
pre-existing drift (dataset/*/jax_test/galaxies.json), unrelated |
Suggested branch: feature/viz-sanity-rollout-jax-scripts
Worktree root: ~/Code/PyAutoLabs-wt/viz-sanity-rollout-jax-scripts/ (created later by /start_workspace)
Implementation Steps
autolens_workspace_test/scripts/imaging/visualization_jax.py — SIE Sanity (1 CC + finite Einstein r + warm < 100 ms).
autolens_workspace_test/scripts/interferometer/visualization_jax.py — SIE Sanity + fit.model_data (complex Visibilities) finite + non-zero via analysis.fit_from(instance=instance).
autolens_workspace_test/scripts/point_source/visualization_jax.py — SIE Sanity only (no FoM assertion).
autogalaxy_workspace_test/scripts/imaging/visualization_jax.py — Non-lensing template: fit.model_data finite + non-zero, fit.figure_of_merit finite.
autogalaxy_workspace_test/scripts/interferometer/visualization_jax.py — Non-lensing + fit.model_data (Visibilities) finite + non-zero.
autogalaxy_workspace_test/scripts/quantity/visualization_jax.py — Non-lensing applied to FitQuantity. Verify attribute name (fit.model_data vs fit.model vs other) at implementation time.
Key Files
- 3 files in autolens_workspace_test, 3 files in autogalaxy_workspace_test (listed above).
Out of scope (Phase D.2.b)
- New
modeling_visualization_jit.py + visualization_jax.py for autogalaxy ellipse (no JIT script yet), autogalaxy quantity (no JIT script yet), autolens weak lensing (entire dir missing).
- Any library code change.
Original Prompt
Click to expand starting prompt
See PyAutoPrompt/issued/visualization_sanity_rollout_jax_scripts.md for the verbatim authored prompt. Key reference points kept inline:
- Template: PR
autolens_workspace_test#111 (original imaging pilot), PR autolens_workspace_test#113 + PR autogalaxy_workspace_test#54 (Phase D.1 rollout). Same SIE sanity tracer + LensCalc.from_tracer(...) + 3-assertion shape.
- Insertion point: end of script (after
PILOT SUCCEEDED print), since visualization_jax*.py has no Part-1/Part-2 split.
- Failure modes guarded: silent-zero source plane (PyAutoGalaxy
abd7b717 2026-04-19, PyAutoFit #1280 2026-05-17); closure cache-busting (PyAutoGalaxy #433/#434 2026-05-21); deflection collapse (point source); model-image collapse (non-lensing autogalaxy); NUFFT collapse (interferometer).
Overview
Phase D.2.a of
z_features/fast_visualization.md. Companion to Phase D.1 (PRautolens_workspace_test#113, PRautogalaxy_workspace_test#54). Rolls the__Visualization Sanity__block pattern out to the remainingvisualization_jax*.pyscripts — the single-shot JAX-backed visualization path (no Nautilus search) that's the sibling code path to the JIT-cachedmodeling_visualization_jit*.pyalready covered.Phase D.2.b — authoring new scripts for missing dataset coverage (ellipse modeling_visualization_jit + viz_jax in autogalaxy_workspace_test, quantity modeling_visualization_jit in autogalaxy_workspace_test, new weak-lensing scripts in autolens_workspace_test) — is a separate follow-up after this lands.
Plan
visualization_jax*.pyscripts gain a__Visualization Sanity__block following the same pattern as Phase D.1. Insertion point: after the existingPILOT SUCCEEDEDend-of-script print (these scripts have no Part-1/Part-2 split — just a single-shot validation).fit.model_data(complex Visibilities) finite + non-zero; non-lensing autogalaxy variants usefit.model_data+figure_of_meritfinite/non-zero (no Tracer); point_source omits a script-specific FoM assertion (prior-median position can legitimately give chi² = -inf).fitviaanalysis.fit_from(instance=instance)since these scripts don't keep a cachedfit_2reference (unlike the modeling_visualization_jit scripts).FitQuantityattribute name (model_dataor similar) at implementation time — the prompt notes this as a known check point.Detailed implementation plan
Affected Repositories
Work Classification
Workspace.
Branch Survey
Suggested branch:
feature/viz-sanity-rollout-jax-scriptsWorktree root:
~/Code/PyAutoLabs-wt/viz-sanity-rollout-jax-scripts/(created later by/start_workspace)Implementation Steps
autolens_workspace_test/scripts/imaging/visualization_jax.py— SIE Sanity (1 CC + finite Einstein r + warm < 100 ms).autolens_workspace_test/scripts/interferometer/visualization_jax.py— SIE Sanity +fit.model_data(complex Visibilities) finite + non-zero viaanalysis.fit_from(instance=instance).autolens_workspace_test/scripts/point_source/visualization_jax.py— SIE Sanity only (no FoM assertion).autogalaxy_workspace_test/scripts/imaging/visualization_jax.py— Non-lensing template:fit.model_datafinite + non-zero,fit.figure_of_meritfinite.autogalaxy_workspace_test/scripts/interferometer/visualization_jax.py— Non-lensing +fit.model_data(Visibilities) finite + non-zero.autogalaxy_workspace_test/scripts/quantity/visualization_jax.py— Non-lensing applied toFitQuantity. Verify attribute name (fit.model_datavsfit.modelvs other) at implementation time.Key Files
Out of scope (Phase D.2.b)
modeling_visualization_jit.py+visualization_jax.pyfor autogalaxy ellipse (no JIT script yet), autogalaxy quantity (no JIT script yet), autolens weak lensing (entire dir missing).Original Prompt
Click to expand starting prompt
See
PyAutoPrompt/issued/visualization_sanity_rollout_jax_scripts.mdfor the verbatim authored prompt. Key reference points kept inline:autolens_workspace_test#111(original imaging pilot), PRautolens_workspace_test#113+ PRautogalaxy_workspace_test#54(Phase D.1 rollout). Same SIE sanity tracer +LensCalc.from_tracer(...)+ 3-assertion shape.PILOT SUCCEEDEDprint), sincevisualization_jax*.pyhas no Part-1/Part-2 split.abd7b7172026-04-19, PyAutoFit #1280 2026-05-17); closure cache-busting (PyAutoGalaxy #433/#434 2026-05-21); deflection collapse (point source); model-image collapse (non-lensing autogalaxy); NUFFT collapse (interferometer).