From b4ee3697097fe91fe332b12d61c8479a6756a3fb Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Fri, 28 Aug 2026 18:30:45 -0400 Subject: [PATCH] maintenance: anonymise the named science target in the WFC3-IR hole regression Library repos must not name science targets. The WFC3-IR mosaic-hole regression is now identified by the dataset shape it encodes (HST program 14653, F160W, five-exposure mosaic, a 123-px hole at r = 5.3") rather than by the target it was found on. - autoreduce/instruments/wfc3_ir.py: reword the dq_bits_rows rationale comment. - test_autoreduce/test_target_and_instruments.py: rename test_pj011646_would_not_have_holed -> test_five_exposure_f160w_mosaic_would_not_have_holed and reword its comment; assertions untouched. - docs/design/wfc3.md: reword the "Blobs (DQ 512)" paragraph so the failing dataset is identified generically. Comment, test-name and doc text only - no behaviour change, no API change. Refs #73 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01GZceRRca9F5ojAtjpRp3me --- autoreduce/instruments/wfc3_ir.py | 10 +++++----- docs/design/wfc3.md | 9 +++++---- test_autoreduce/test_target_and_instruments.py | 9 +++++---- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/autoreduce/instruments/wfc3_ir.py b/autoreduce/instruments/wfc3_ir.py index 11c2a1a..6540444 100644 --- a/autoreduce/instruments/wfc3_ir.py +++ b/autoreduce/instruments/wfc3_ir.py @@ -34,11 +34,11 @@ # blob bit plus hot pixels. Blobs are detector-fixed IR channel # features that calwf3 flags but does not remove; rejecting them on # snapshot data with tiny dithers punches structured zero-coverage - # holes in the mosaic (PJ011646, 5 exposures, a 123-px hole at - # r = 5.3"). The IR rows are the reason this is a table and not a - # pair: the two bits columns DIFFER at N = 2-3, where the separate - # (median-building) drizzle still keeps every bit while the final - # drizzle already drops to 528. + # holes in the mosaic (program 14653, F160W, 5 exposures, a + # 123-px hole at r = 5.3"). The IR rows are the reason this is a + # table and not a pair: the two bits columns DIFFER at N = 2-3, + # where the separate (median-building) drizzle still keeps every + # bit while the final drizzle already drops to 528. dq_bits_rows=((1, 65535, 65535), (2, 65535, 528), (4, 528, 528)), ) ) diff --git a/docs/design/wfc3.md b/docs/design/wfc3.md index 1ced340..2692afe 100644 --- a/docs/design/wfc3.md +++ b/docs/design/wfc3.md @@ -49,10 +49,11 @@ which `calwf3` *flags* but does not remove. They are fixed in detector coordinates, so a dither pattern of a few pixels moves them barely at all: the same detector pixels are flagged in every exposure of the visit. Reject them and the mosaic gets a structured **zero-coverage hole** rather than the -speckle that a large dither would produce. PJ011646 (program 14653, F160W, -5 exposures, 2–6 px dithers) failed packaging on exactly this — a single -123-px hole at r = 5.3″, DQ 512 at the same detector pixels in all five -exposures — while a trusted external reduction of the same data has none. +speckle that a large dither would produce. An HST program 14653 dataset +(F160W, 5 exposures, 2–6 px dithers) failed packaging on exactly this — a +single 123-px hole at r = 5.3″, DQ 512 at the same detector pixels in all +five exposures — while a trusted external reduction of the same data has +none. STScI's own MDRIZTAB passes the blob bit, so under standard practice that hole could not have occurred. diff --git a/test_autoreduce/test_target_and_instruments.py b/test_autoreduce/test_target_and_instruments.py index dc030b9..9761140 100644 --- a/test_autoreduce/test_target_and_instruments.py +++ b/test_autoreduce/test_target_and_instruments.py @@ -154,10 +154,11 @@ def test_wfc3_ir_rows_differ_between_the_two_columns(self): assert self._bits("wfc3_ir", 4) == (528, 528) assert 528 == 512 | 16 - def test_pj011646_would_not_have_holed(self): - # The regression this leg exists for: PJ011646 was F160W with five - # exposures, so it lands on the numimages >= 4 row, where STScI - # passes exactly the blob bit (512) that punched the 123-px hole. + def test_five_exposure_f160w_mosaic_would_not_have_holed(self): + # The regression this leg exists for: an HST program 14653 F160W + # mosaic with five exposures lands on the numimages >= 4 row, where + # STScI passes exactly the blob bit (512) that punched the 123-px + # hole. _, final_bits = self._bits("wfc3_ir", 5) assert final_bits & 512