Skip to content

test: Keck-AO acceptance checks 3-4 — astrometry + Einstein-radius invariance #13

Description

@Jammy2211

Overview

Completes the two keck_ao.md validation-anchor acceptance checks left open at the phase-4 merge (#11, PR #12): astrometric parity of the B1938+666 reduction against HST, and science invariance — a PyAutoLens fit reproducing the published Einstein radius (~0.45"; Lagattuta et al. 2012 / Vegetti et al. 2012).

Plan

  • Survey MAST for archival HST imaging of B1938+666 (WFC3-IR preferred — reducible by our own phase-2 path for a like-for-like comparison); fall back to published positions.
  • Audit the NIRC2 narrow-camera plate scale: raw header PIXSCALE 9.952 vs adapter native_scale 9.942 mas (literature spread 9.942/9.952/9.971) — a direct multiplicative bias on any measured Einstein radius; correct the adapter if the audit demands it.
  • Fit the reduced dataset (10 mas, 39x180s, tier-A PSF) with PyAutoLens: SIE + external shear, Sersic lens light + Sersic source; compare theta_E with published values.
  • Report here; parity appendix for docs/design/keck_ao.md and any adapter fix go to review before a PR (default present-and-wait — no --auto on this leg).

Prompt: PyAutoMind feature/pyautoreduce/keck_ao_acceptance_checks.md. Context: #9, #11, PR #12.

Activity

  1. Jammy2211 commented on Jul 9, 2026

    @Jammy2211
    ContributorAuthor

    Interim results + parked fit (laptop reset)

    Check 3 — plate-scale audit (finding, fix gated on review): the adapter's narrow-camera native_scale (9.942 mas, from SHARP paper prose) is wrong for both epochs. Truth: 9.952 mas pre-2015 (Yelda 2010 — B1938 raw headers agree: PIXSCALE 0.009952) and 9.971 mas post-2015 (Service 2016). Effect on shipped phase-4 mosaics: output pixels are truly 10.010 mas, so a naive θ_E reads 0.10% low. Proposed fix: epoch-aware native_scale selected alongside the distortion solution.

    Check 3 — geometry leg: no ACS/WFC3 archival imaging of B1938 exists (only 1997–98 WFPC2/NICMOS), so no own-pipeline HST comparison; and the ring is below direct azimuthal-profile detection in the 7,020 s stack (annulus medians at the noise floor) — the model fit carries the geometric test, as in Lagattuta+12.

    Check 4 — fit CHECKPOINTED, resumable: Nautilus (SIE+shear+Sersic lens, SersicCore source, 20 mas Chen-style binning, plate-scale-corrected pixels, tier-A PSF) ran ~1 h on CPU; posterior not yet converged; 94 MB checkpoint.hdf5 on disk.

    Resume after reset (Nautilus resumes from its checkpoint via the identity-hashed output path):

    cd ~/Code/PyAutoLabs/PyAutoReduce
    NUMBA_CACHE_DIR=/tmp/numba_cache MPLCONFIGDIR=/tmp/matplotlib \
    PYAUTO_SKIP_WORKSPACE_VERSION_CHECK=1 \
    ~/venv/PyAuto/bin/python prototypes/b1938_lens_fit.py

    Inputs it needs are all on disk under prototypes/output/b1938_keck/ (dataset regenerated post-merge) and output/b1938_keck_acceptance/ (checkpoint). Success criterion: θ_E consistent with published ~0.45″.

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