Repository navigation
Description
Overview
The quick-update hook (Analysis.perform_quick_update) writes a special lighter-weight fit_quick.png for the PyAutoLens dataset types (imaging, interferometer, point, weak), while full visualization writes fit.png. The user has to visually recognise two different fit-plot layouts for the same fit. PyAutoGalaxy's quick path already just writes the normal subplot_fit — PyAutoLens should do the same, and PyAutoFit's live display should only look for fit.png.
Plan
- In the four PyAutoLens model plotters, the
quick_update=Truepath plots the normal fit subplot (writingfit.png) and then returns — mirroring PyAutoGalaxy — instead of callingsubplot_fit_quick. The quick path still skips heavy extras (log10, planes, tracer, dirty-image variants, FITS). - Delete the four
subplot_fit_quickfunctions + the uncalledsubplot_fit_combined_quick, and allfit_quickfilenames, from the PyAutoLens plot modules. - In PyAutoFit, reduce
_DISPLAY_CANDIDATESto("fit.png",)inautofit/non_linear/quick_update.py; update comments and tests. - Update the three
autolens_workspace_testvisualization-jit scripts to assertfit.pnginstead offit_quick.png.
Detailed implementation plan
Work Classification
Both — library (PyAutoLens primary, PyAutoFit) + workspace (autolens_workspace_test follow-up behind the library-first merge gate).
Affected Repositories
- PyAutoLens (primary)
- PyAutoFit
- autolens_workspace_test
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./PyAutoLens | main | clean |
| ./PyAutoFit | main | clean |
| ./autolens_workspace_test | main | clean |
Suggested branch: feature/remove-fit-quick-plots
Worktree root: ~/Code/PyAutoLabs-wt/remove-fit-quick-plots/ (created by /start_library)
Concurrent-claim note (human-approved): PyAutoLens is also claimed by #672 / #678 / autolens_workspace#442, and autolens_workspace_test by #672. Only #678 (point/model) plausibly overlaps this task's autolens/point/model/plotter.py; pre-merge origin/main before opening the PR.
Implementation Steps
PyAutoLens/autolens/imaging/model/plotter.py— remove thesubplot_fit_quickimport and theif quick_update:block (~l.79–86); make thesubplot_fitblock run onshould_plot("subplot_fit") or quick_update, returning after it whenquick_updateis set.PyAutoLens/autolens/interferometer/model/plotter.py— same restructure in both fit methods (quick block ~l.89);fit_interferometer_combinedalready uses the normal combined subplot for its quick path.PyAutoLens/autolens/point/model/plotter.py— quick path plots the normalsubplot_fit_point(reusing the already-computed critical-curve lines) then returns.PyAutoLens/autolens/weak/model/plotter.py— quick path plots the normalsubplot_fit_weakthen returns.- Delete
subplot_fit_quickfromautolens/{imaging,interferometer,point,weak}/plot/fit_*_plots.pyandsubplot_fit_combined_quick(zero callers) fromfit_imaging_plots.py. PyAutoFit/autofit/non_linear/quick_update.py—_DISPLAY_CANDIDATES = ("fit.png",); fix stale comments; sweeptest_autofit/non_linear/test_quick_update.pyforfit_quickreferences.autolens_workspace_test/scripts/{imaging,point_source,interferometer}/visualization/modeling_visualization_jit.py— assertfit.pngis produced instead offit_quick.png(verify each script's plots.yaml keeps the assertion meaningful, i.e. only the quick path writes it).- Visualizers keep the
quick_updateflag unchanged — it still forces the essential subplot and skips expensive extras; only the figure written changes. PyAutoCTI accepts the flag and never special-cases it — no change.
Key Files
autolens/{imaging,interferometer,point,weak}/model/plotter.py— quick-update routingautolens/{imaging,interferometer,point,weak}/plot/fit_*_plots.py—subplot_fit_quickdefinitions to deleteautofit/non_linear/quick_update.py— live-display filename candidatesautolens_workspace_test/scripts/*/visualization/modeling_visualization_jit.py— assertions
Testing
- Full
test_autofit/andtest_autolens/suites (no existing tests reference the lens quick plots; PyAutoFit'stest_quick_update.pydoes and is updated). - The three workspace_test visualization scripts via smoke after the library changes.
Trade-off (accepted): quick updates now render the full fit.png subplot rather than the lighter 6-panel figure, so each quick update is somewhat slower.
Original Prompt
Click to expand starting prompt
Remove special fit_quick.png for all types of Analysis, instead just plotting the normal fit, same for any other quick plot. ultimately it was annoying having to visually recognise two types of fit plot.
Prompt file: PyAutoMind/draft/feature/autolens/remove_fit_quick_plots.md (advances to active/ on issue creation).
Activity
Jammy2211 commentedon Jul 31, 2026
Library PRs Created
Full suites green (test_autofit 1637 passed/2 skipped; test_autolens 498 passed). Shipped under human-authorized Heart-RED override; RED reason (verbatim, unrelated nightly):
release validation FAILED (stage integrate).Workspace impact: (ii) API migration — three
autolens_workspace_testvisualization-jit scripts assertfit_quick.pngand must switch tofit.png; workspace PR follows behind the library-first merge gate.test: cover quick_update=True routing in the four model plotters (#680)
Jammy2211 commentedon Jul 31, 2026
All PRs open — awaiting merge
quick_update=Truerouting), feat: live display resolves fit.png only — fit_quick.png removed PyAutoFit#1438Validation summary:
test_autofit/1637 passed / 2 skipped;test_autolens/498 passed + 4 new quick-update routing tests (each asserts the normal fit subplot is written,fit_quick.pngis not, extras skipped).fit.png, nofit_quick.pngon disk. (Run later OOM-killed in the unrelated end-of-search latent phase under concurrent machine load; earlier one-off failure was a pre-existing Part 1 timing-flake assertion.)subplot_fit_weak.png, which the live viewer (nowfit.png-only) does not surface — pre-existing filename quirk of the weak module.Jammy2211 commentedon Jul 31, 2026
Shipped — all three PRs merged 2026-07-31 (library first): PyAutoLens#682 (
8064fe1db), PyAutoFit#1438 (1d9a268a6), autolens_workspace_test#241 (6e66917). Quick updates now write the normal fit subplot for every Analysis type;fit_quick.pngis gone.Timing note from a control probe (loaded WSL box): the old
fit_quickquick update measured cold 199 s / warm 184 s vs ~296 s first-call for the new normal-subplot path — cold ≈ warm, so quick-update cost is recurring fit-quantity computation + rendering, not one-off JAX compile (thefit_for_visualizationcompile itself is ~27 s and shared by both paths). Quick-update plotting cost is a candidate for a future profiling task.Completion record:
PyAutoMind/complete/2026/07/remove-fit-quick-plots.md.