Skip to content

feat: readable cluster point_solver.png (per-source span, display grid, r-labels) #795

Closed

Description

@Jammy2211

Overview

At cluster scale, point_solver.png is unreadable. Every panel uses the full solver extent (±40″), and the real starting grid's triangles (0.2″, 369,937 at step 0) are too small to draw. Steps 1, 2 and final collapse to ▲ markers and look identical. This task keeps the galaxy-scale design that was chosen (variant F: one image-plane span across a 2×2 of Step 0/1/2/final, every image of the source in each panel) and makes it work per source at cluster scale. It changes the figure only; the solver used for modelling is untouched.

Plan

Tier: judge — merge mode: human /prm

Detailed implementation plan

Affected Repositories

  • PyAutoLens (primary)
  • autolens_visualization

Branch Survey

Repository Current Branch Dirty?
./PyAutoLens main clean
./autolens_visualization main clean

Suggested branch: feature/cluster-point-solver-readability

Implementation Steps

  1. autolens/point/plot/point_solver_plots.py
    • Per-source extent from the image and rejected-candidate positions (replacing _extent_from's solver extent).
    • Display-grid re-solve when the real step-0 edge is below the draw limit. The rule is the pixel scale above, followed by an image-recovery check against the real solve, with a fallback to the real steps.
    • r-labels replace the rejected annotation box (rejected_corner_from / _annotate_images).
    • Curves via point_sources.curves_for_planes, in the feat: cluster/multi-source point figures — unified dataset, global fit, fit_per_image, with_points, per-redshift curves #794 style.
    • Ticks via the shared helper used by multi_source_plots.
  2. Tests in test_autolens/point/plot/:
    • per-source extent;
    • display-grid trigger and its pixel-scale rule;
    • fallback when the display solve misses an image;
    • r-labels.
  3. autolens_visualization: re-render cluster and point_source_image_chi_squared (plus teaching), rebuild GALLERY.md and the manifest.

Reference prototype (approved 2026-10-22: cluster_point_1.png): scratch eyes/autolens/cluster_point_solver_prototype/round3/ with its producer.

Key Files

  • autolens/point/plot/point_solver_plots.py
  • autolens/point/plot/point_sources.py (curves, shared helpers)
  • autolens_visualization/scripts/cluster/visualization.py

Original Prompt

Click to expand starting prompt

Cluster point_solver.png: readable refinement panels and many-image labels

Consequence: judge
Autonomy: human-required
builds-on: complete/2026/10/cluster-point-figures.md (PyAutoLens#794), complete/2026/10/point-solver-refinement-figure.md (PyAutoLens#788)

@PyAutoLens @autolens_visualization

Context

This is carried over from the cluster point-figures pass. It was listed under "Known issues" there but was not part of the final approved v4 design, so it did not ship in #794.

Known issues

Intent

Survey the cluster point_solver.png with the human via /eyes, agree on the conventions, then run /start_dev.

Activity

  1. Jammy2211 commented on Oct 22, 2026

    @Jammy2211
    CollaboratorAuthor

    Library PR Created: #796 (pending-release), with the re-render in PyAutoLabs/autolens_visualization#15. Heart was YELLOW for unrelated reasons (manifest drift, stale PyAutoArray rehearsal) and the human acknowledged it. test_autolens: 936 passed, 1 xfailed. No workspace impact beyond the viz re-render. Merge order: #796, then re-run viz lint, merge viz#15, then dispatch Eyes dashboard_refresh.yml.

  2. Jammy2211 commented on Oct 22, 2026

    @Jammy2211
    CollaboratorAuthor

    Shipped: PyAutoLens#796 merged (pending release), followed by PyAutoLabs/autolens_visualization#15. point_solver.png now spans each source's own images, draws a figure-only coarse display grid when the solver's triangles are too small to see (and only if it recovers the same images), labels rejected candidates r1, r2, and draws own-plane critical curves in the #794 style. The modelling solver is unchanged. Checking which starting grid modelling needs stays with the cluster-PointSolver robust-settings campaign.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions