2026 · 07 · 10 ·ngmix_v2.0 · candide ·rendered 2026-07-10 02:29

ShapePipe — shape-measurement status.

A live, auto-generated status page for the ngmix metacal shape measurement, organised by tier of check: the vetted image-sim panels on the SKiLLS star grid come first (Tier 2, open for inspection), then the fast CI tripwires that gate every commit (Tier 1, collapsed while green). Real-data checks on UNIONS catalogues are coming. Every number is read straight from a results JSON and shown as a plot with its provenance; the page re-renders on each run.

⚠ Preliminary under rapid development — tests, numbers, and layout may change.
verdictsm-biasPASSstar-grid RPASSgalaxy RPASS

§ Tier 2

Vetted image-sim panels.

Metacal behaviour on Fabian Hervas’s SKiLLS 1z2z star grid — realistic images with a fake PSF injected mid-chain, only the ngmix stage re-run. These are what you come to inspect; panels open by default.

§ test data — held fixed across all Tier-2 panels, only ngmix re-run
Fabian Hervas SKiLLS star grid (1z2z, zero-shear)
MultiBand_ImSim / SKiLLS (UNIONS-WL fork, branch galaxy_pos) · fake PSF injected mid-chain (fake_psf_autom / Full_psf_dict.pickle)
SExtractor + vignets + injected PSF + WCS held fixed; only ngmix_runner re-run with current code
Star metacal shear response on the SKiLLS grid.SKiLLSPASS⟨R1⟩ +0.0189 / ⟨R2⟩ +0.0186
§ Tier 2 — star-grid metacal response (A/B) </>test_star_shear_response.py </>star_response.py
§ the test

What it is. The per-object metacal shear response R = dg/dγ measured on stars over 20 < mag < 26, across 9 tiles, with delete-one-tile jackknife errors. A round PSF-like object should give R = 0. Run as an A/B over the metacal reconvolution-PSF kernel sizing (fitgauss vs gauss), each crossed with the centroid source (wcs vs hsm).

What it measures. The mean per-object shear response of stars after metacal PSF deconvolution, and how it responds to the reconvolution-kernel-sizing choice.

Pass criteria. ⟨R1⟩ and ⟨R2⟩ each within ±0.03 of 0 (jackknife error).

forest plot of mean star response by reconvolution-PSF arm
Mean per-object response ⟨R1⟩ / ⟨R2⟩ with delete-one-tile jackknife errors for every arm, on the ±0.03 target band, plus the shapepipe-1.4 reference (⟨R1⟩ +0.0759 ± 0.0213, 34,516 stars). The gauss arms sit inside the band; the fitgauss arms sit outside it. Centroid source (wcs vs hsm) moves the point far less than the kernel-sizing choice.
data run_star_response_grid.pyfigure build_status.py 2026-07-10 02:29
comparison armfitgauss-wcs: ⟨R1⟩ +0.0405 — outside the ±0.03 band, tail-driven (26% catastrophic |R|>1 fits vs 18% for gauss).
additive biasmean star ellipticity (ideal 0): c1 +0.0252 · c2 +0.0143.
PASSgauss-wcs ⟨R1⟩ / ⟨R2⟩+0.0189 / +0.0186vetted arm — inside ±0.03 band · cat 18% · 96,666 stars
Star shear response as a function of magnitude.SKiLLSinspection panel — no verdict
§ Tier 2 — star response vs magnitude
§ the panel

What it is. The per-object metacal response R1 = dg1/dγ1 on the fitgauss·wcs arm, binned in magnitude with no magnitude cut applied.

What it shows. Where the mean response departs from 0 as a function of source brightness — the point-source floor of the star-grid A/B, resolved against magnitude. Inspection panel, no verdict.

star shear-response R1 vs magnitude (bright-end point-source break)
Shear response R1 vs magnitude on the fitgauss·wcs arm (45,835 stars, 8 tiles), no magnitude cut. Across the 20 < mag < 26 science window the binned mean ⟨R1⟩ +0.0759 sits inside the ±0.03 band; toward the bright end it climbs to ≈2 as stars approach the point-source limit.
data run_star_response_magprofile.pyfigure plot_mag_profile.py 2026-07-10 02:29
Does the bright-star response climb reach the shear sample?SKiLLSPASS⟨R1⟩ +0.8409 / ⟨R2⟩ +0.8405
§ Tier 2 — galaxy question (S/N vs response)
§ the test

What it is. The per-object metacal response R = dg/dγ on the same SKiLLS sims for point-source stars (res < 0.06) and resolved galaxies (res > 0.4), binned in S/N. Resolution res = T/(T+Tpsf): 0 at the point-source limit, 1 fully resolved.

What it measures. Whether the resolved galaxies that carry the cosmic-shear signal inherit the star point-source-limit response climb, or sit in the well-behaved regime.

Pass criteria. At the highest S/N, resolved-galaxy ⟨R1⟩ ≈ ⟨R2⟩ (symmetric, |Δ| < 0.03) and ⟨R⟩ < 1 (below the point-source singularity).

mean metacal response vs S/N, stars vs resolved galaxies
Mean metacal response ⟨R⟩ vs S/N on the SKiLLS sims. Point-source stars (res<0.06) climb past ⟨R⟩=1 toward high S/N and split R1 ≫ R2; resolved galaxies (res>0.4) saturate near ⟨R⟩≈0.85 with R1 ≈ R2 paired.
data run_galaxy_question.pyfigure plot_galaxy_question.py 2026-07-10 02:29
PASSresolved-galaxy response symmetric & sub-unity⟨R1⟩ +0.8409 / ⟨R2⟩ +0.8405highest-S/N resolved bin (res>0.4, S/N>300, 2,067 objects) · bright stars split +0.7184 / +0.3635
§ Tier 1

CI tripwires.

Fast in-memory sims through the controlled make_data / do_ngmix_metacal path, no image simulation: the resolution × noise breakdown grid maps where the calibration holds and where it breaks down (open for inspection), and the single-point m-bias tripwire gates every commit (collapsed to a one-line row while green, expanded on any red).

Where measurement breaks down.in-memoryinspection panel — no verdict
§ Tier 1 — resolution × noise breakdown grid </>run_breakdown_grid.py
§ the method

Each grid cell is one self-contained GalSim simulation run in memory: an exponential galaxy convolved with a Moffat (β = 2.5) PSF, sampled at 0.1857″ pixels, with a known shear injected. The stamp is passed through the live pipeline shear estimator (do_ngmix_metacal), the same code the real survey uses, and the recovered shear, the metacal response R, and the additive bias c are read back out. Repeating this over N random seeds per cell and averaging gives the multiplicative bias m, the response R11, and the additive bias c1 for that cell. The grid sweeps two axes independently: galaxy size relative to the PSF (the resolution ratio r) and image noise (three signal-to-noise bands). The result is a map of where the calibration stays within tolerance and where it breaks down.

m, R11 and |c1| vs resolution ratio in three S/N bands
Multiplicative bias m, metacal response R11 and additive bias |c1| as a function of the resolution ratio r = gal hlr / psf fwhm, in three signal-to-noise bands. The shaded sliver on the top panel marks the |m| < 5.00 ×10−³ tolerance.
data run_breakdown_grid.pyfigure plot_breakdown_grid.py 2026-07-10 02:29
Multiplicative bias on injected shear.in-memoryPASSm = −2.01 ×10−³
§ Tier 1 — m-bias </>test_mbias.py
§ the test

What it is. An in-memory sim injecting a known shear g_inj = 0.02 through the controlled make_data / do_ngmix_metacal path and recovering it after the metacal response correction.

What it measures. The multiplicative bias m = g_obs/g_inj − 1.

Pass criteria. |m| < 5.00 ×10−³.

m-bias recovered vs injected
Recovered vs injected shear against the 1:1 ideal: the measured point after the R correction lands on the line; before it, the response deficit shows. The recovered R11 is 0.923.
data run_mbias.pyfigure build_status.py 2026-07-10 02:29
PASSmultiplicative bias m−2.01 ×10−³ngmix 2.4.0 · galsim 2.8.4 · centroid hsm