Repository navigation
results: NNLS warm-start memo diagnostic, 32-cell lens-model robustness matrix, post-#453/#497 baseline (PyAutoArray#498) - #184
Merged
Conversation
… post-#453/#497 Delaunay numba baseline New delaunay_numba_nnls_iterations.py: random-walk and i.i.d. 30-instance sequences on the euclid + hst Delaunay-1250 fiducial, memo off vs on, per-solve active-set iteration stats captured from inside FitImaging. Random walk: median iterations 69.5 -> 7.0 (euclid), 32 -> 8 (hst); solve 0.54 -> 0.05 s / 0.25 -> 0.07 s; log-likelihood parity 3e-14. Note results/notes/nnls_warm_start_memo.md records the gate verdict (default on). Step-0 baseline re-profile: the solve is now 40% (euclid) / 17% (hst) of an evaluation after #453/#497, not ~72%. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XySQZP6Npj4adZMkYZ96Bo
…ts, 32 cells) + fallback-guard re-check delaunay_numba_nnls_iterations.py gains --model (powerlaw, subhalo, no_lens_light, sersic_light, rectangular, adapt_reg, no_edge_zeroing, source_complex, mesh_600, mesh_2000) and --n-instances, and counts warm-start fallbacks; nnls_iterations_matrix.py aggregates every cell into results/notes/nnls_warm_start_memo_matrix.md. Parity <= 4e-14 in all 32 cells, zero seeded-solve failures, median solve time never worse than memo-off by >2%; every random-walk cell gains (3.2x-118x), only i.i.d. sequences lose iterations (worst 0.52x), never time. Guard re-check: 3 fallbacks in 240 evaluations, all in hst/fiducial/iid. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XySQZP6Npj4adZMkYZ96Bo
…tifacts `build_readme.py --check` is a lint.yml gate and was red on this branch: the two preceding commits added the step-0 `delaunay_numba_breakdown_*` re-profile and the `imaging_euclid_summary` artifact without regenerating the tables they feed. Pure `build_readme.py` output, no hand edits. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XySQZP6Npj4adZMkYZ96Bo
2 of 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
Measurement leg of PyAutoArray#498 (numba CPU likelihood epic, phase 3a — the cross-evaluation NNLS warm-start memo, library PR: PyAutoLabs/PyAutoArray#501). Adds the per-solve active-set iteration diagnostic, the 11-variant / 32-cell lens-model robustness matrix, the fallback-guard re-check, the step-0 post-#453/#497 baseline re-profile, and the two notes that record the default-on decision.
Headline numbers (Delaunay-1250 + MGE-60 fiducial,
AUTOARRAY_NUMBA_OPERATED_MEMO=0,OMP_NUM_THREADS=1): random-walk median active-set iterations 70→7 (euclid, 9.9×), 32→8 (hst, 4.0×); solve 0.54→0.05 s / 0.25→0.07 s; log-likelihood parity ≤ 4e-14 in all 32 matrix cells; zero seeded-solve failures; median solve time never worse than memo-off by >2%. Step-0 baseline: the solve is now 40% (euclid) / 17% (hst) of an evaluation, not the ~72% the issue was filed on.Scripts Changed
scripts/imaging/likelihood_breakdown/delaunay_numba_nnls_iterations.py— NEW: random-walk + i.i.d. instance sequences, memo off/on,fnnls_choleskystats captured from insideFitImaging;--model <variant>,--n-instances; counts fallbacks; JSON + PNG per cellscripts/imaging/likelihood_breakdown/nnls_iterations_matrix.py— NEW: aggregates every cell JSON intoresults/notes/nnls_warm_start_memo_matrix.mdscripts/misc/likelihood_breakdown/README.md— scripts table rows for both numba cells (delaunay_numba.pywas missing)README.md,scripts/misc/likelihood_breakdown/README.md,scripts/misc/simulators/README.md— regenerated timing tables (build_readme.py, alint.ymlgate): the step-0 re-profile and the euclid simulator summary changed the numbers they readResults
results/breakdown/imaging/delaunay_numba_nnls_iterations_{euclid,hst}[_<model>]_v2026.8.17.1.{json,png}— 16 cellsresults/breakdown/imaging/delaunay_numba_breakdown_{euclid,hst}_v2026.8.17.1.{json,png}— step-0 baseline re-profile (overwritten in place, same version string)results/simulators/imaging_euclid_summary_v2026.8.17.1.*— side effect: the euclid dataset was absent locally andauto_simulate_if_missingregenerated it; timings only, pinned log-likelihood unchangedresults/notes/nnls_warm_start_memo.md,results/notes/nnls_warm_start_memo_matrix.md; pointers inresults/README.mdTest Plan
ruff check+ruff format --checkon both scriptsAUTOLENS_PROFILING_SMOKE=1 python <script>exits 0 for bothruff check ./ruff format --check ./build_readme.py --check/check_submits.py --checkclean repo-wide; the sixlint.ymlsmoke scripts exit 0Pre-existing red, not from this branch:
lint.yml'spytest scripts/misc/test/step failstest_hazards_prior_exit.py::test__records_the_clipper_as_what_blocks_it(theClipperPriorBoxanchor is not found infinding.blocked_by). It reproduces identically on canonicalmain(451b85f) with this branch nowhere in the checkout, and this branch touches no file underscripts/misc/hazards/orscripts/misc/test/. Needs its own task.Merges after PyAutoArray#498's PR (library-first gate). Generated by the PyAutoLabs agent workflow.