From f248ff04d30af951a1a6de566826e5a4226ee3d2 Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Wed, 8 Oct 2025 15:27:31 -0400 Subject: [PATCH 1/7] Let inner cells mark their edges --- python/lsst/cell_coadds/_single_cell_coadd.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/python/lsst/cell_coadds/_single_cell_coadd.py b/python/lsst/cell_coadds/_single_cell_coadd.py index c0ef6532..21dd1ebb 100644 --- a/python/lsst/cell_coadds/_single_cell_coadd.py +++ b/python/lsst/cell_coadds/_single_cell_coadd.py @@ -126,6 +126,23 @@ def __init__( self._inputs = {} self._identifiers = identifiers self._aperture_correction_map = aperture_correction_map + self.set_cell_edges() + + def set_cell_edges(self, *, edge_width=1, edge_mask_name="CELL_EDGE",): + """Set a mask bit indicating the inner cell edges. + + Parameters + ---------- + edge_width : `int`, optional + The width of the edge region to flag, in pixels. + edge_mask_name : `str`, optional + The name of the mask plane to add for the edge region. + """ + self._inner.mask.addMaskPlane(edge_mask_name) + self._inner.mask.array[:, :edge_width] |= self._inner.mask.getPlaneBitMask(edge_mask_name) + self._inner.mask.array[:, -edge_width:] |= self._inner.mask.getPlaneBitMask(edge_mask_name) + self._inner.mask.array[:edge_width, :] |= self._inner.mask.getPlaneBitMask(edge_mask_name) + self._inner.mask.array[-edge_width:, :] |= self._inner.mask.getPlaneBitMask(edge_mask_name) def _set_cell_edges( self, From b7da11e189a5cf5c2db58b6ef84f2ac688634269 Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Tue, 14 Oct 2025 23:22:36 -0400 Subject: [PATCH 2/7] Allow for partial overlaps in file formatting --- python/lsst/cell_coadds/_single_cell_coadd.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/lsst/cell_coadds/_single_cell_coadd.py b/python/lsst/cell_coadds/_single_cell_coadd.py index 21dd1ebb..914b22c9 100644 --- a/python/lsst/cell_coadds/_single_cell_coadd.py +++ b/python/lsst/cell_coadds/_single_cell_coadd.py @@ -47,7 +47,6 @@ @dataclass class CoaddInputs: """Container for inputs to the coaddition process.""" - overlaps_center: bool """Whether a single (detector, visit) observation overlaps the center """ """of the cell.""" From e53d17375ebc15ae70fbea62ccebf055fd2d90bd Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Wed, 15 Oct 2025 07:46:25 -0700 Subject: [PATCH 3/7] ruff changes --- python/lsst/cell_coadds/_single_cell_coadd.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/python/lsst/cell_coadds/_single_cell_coadd.py b/python/lsst/cell_coadds/_single_cell_coadd.py index 914b22c9..7f2c6e89 100644 --- a/python/lsst/cell_coadds/_single_cell_coadd.py +++ b/python/lsst/cell_coadds/_single_cell_coadd.py @@ -47,6 +47,7 @@ @dataclass class CoaddInputs: """Container for inputs to the coaddition process.""" + overlaps_center: bool """Whether a single (detector, visit) observation overlaps the center """ """of the cell.""" @@ -127,7 +128,12 @@ def __init__( self._aperture_correction_map = aperture_correction_map self.set_cell_edges() - def set_cell_edges(self, *, edge_width=1, edge_mask_name="CELL_EDGE",): + def set_cell_edges( + self, + *, + edge_width=1, + edge_mask_name="CELL_EDGE", + ): """Set a mask bit indicating the inner cell edges. Parameters From 9393e4249ff9b3b9c02b60043757e7e82fbb967e Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Wed, 15 Oct 2025 16:28:26 -0400 Subject: [PATCH 4/7] allow for apcorr of some cells to be None From e17c6ff66f5b6d296e76628eda1808be04aeb7bf Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Wed, 15 Oct 2025 17:52:58 -0400 Subject: [PATCH 5/7] Read and parse mask defs --- python/lsst/cell_coadds/_fits.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/lsst/cell_coadds/_fits.py b/python/lsst/cell_coadds/_fits.py index eaedddab..be877921 100644 --- a/python/lsst/cell_coadds/_fits.py +++ b/python/lsst/cell_coadds/_fits.py @@ -869,6 +869,9 @@ def writeMultipleCellCoaddAsFits( } hdu.header.extend(inner_bbox_cards) + # Add in mask bit definitions in the header. + cell_hdu.header.extend(afwImage.Mask.getMaskPlaneDict()) + wcs = multiple_cell_coadd.common.wcs wcs_cards = wcs.getFitsMetadata().toDict() primary_hdu = fits.PrimaryHDU() From c799afebb57d725627a952fe5b26d3c477fca9f3 Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Wed, 15 Oct 2025 18:09:08 -0400 Subject: [PATCH 6/7] fixup: get dict from mask --- python/lsst/cell_coadds/_fits.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/lsst/cell_coadds/_fits.py b/python/lsst/cell_coadds/_fits.py index be877921..34aafaa8 100644 --- a/python/lsst/cell_coadds/_fits.py +++ b/python/lsst/cell_coadds/_fits.py @@ -870,7 +870,9 @@ def writeMultipleCellCoaddAsFits( hdu.header.extend(inner_bbox_cards) # Add in mask bit definitions in the header. - cell_hdu.header.extend(afwImage.Mask.getMaskPlaneDict()) + cell_hdu.header.extend( + multiple_cell_coadd.cells.arbitrary.outer.mask.getMaskPlaneDict() + ) wcs = multiple_cell_coadd.common.wcs wcs_cards = wcs.getFitsMetadata().toDict() From 8a00d0c2100a46dc313204b98ef183ae58336aab Mon Sep 17 00:00:00 2001 From: Arun Kannawadi Date: Wed, 15 Oct 2025 18:36:31 -0400 Subject: [PATCH 7/7] fixup: make it its own table --- python/lsst/cell_coadds/_fits.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/python/lsst/cell_coadds/_fits.py b/python/lsst/cell_coadds/_fits.py index 34aafaa8..eaedddab 100644 --- a/python/lsst/cell_coadds/_fits.py +++ b/python/lsst/cell_coadds/_fits.py @@ -869,11 +869,6 @@ def writeMultipleCellCoaddAsFits( } hdu.header.extend(inner_bbox_cards) - # Add in mask bit definitions in the header. - cell_hdu.header.extend( - multiple_cell_coadd.cells.arbitrary.outer.mask.getMaskPlaneDict() - ) - wcs = multiple_cell_coadd.common.wcs wcs_cards = wcs.getFitsMetadata().toDict() primary_hdu = fits.PrimaryHDU()