LSST Applications g04e9c324dd+8c5ae1fdc5,g134cb467dc+b203dec576,g18429d2f64+358861cd2c,g199a45376c+0ba108daf9,g1fd858c14a+dd066899e3,g262e1987ae+ebfced1d55,g29ae962dfc+72fd90588e,g2cef7863aa+aef1011c0b,g35bb328faa+8c5ae1fdc5,g3fd5ace14f+b668f15bc5,g4595892280+3897dae354,g47891489e3+abcf9c3559,g4d44eb3520+fb4ddce128,g53246c7159+8c5ae1fdc5,g67b6fd64d1+abcf9c3559,g67fd3c3899+1f72b5a9f7,g74acd417e5+cb6b47f07b,g786e29fd12+668abc6043,g87389fa792+8856018cbb,g89139ef638+abcf9c3559,g8d7436a09f+bcf525d20c,g8ea07a8fe4+9f5ccc88ac,g90f42f885a+6054cc57f1,g97be763408+06f794da49,g9dd6db0277+1f72b5a9f7,ga681d05dcb+7e36ad54cd,gabf8522325+735880ea63,gac2eed3f23+abcf9c3559,gb89ab40317+abcf9c3559,gbf99507273+8c5ae1fdc5,gd8ff7fe66e+1f72b5a9f7,gdab6d2f7ff+cb6b47f07b,gdc713202bf+1f72b5a9f7,gdfd2d52018+8225f2b331,ge365c994fd+375fc21c71,ge410e46f29+abcf9c3559,geaed405ab2+562b3308c0,gf9a733ac38+8c5ae1fdc5,w.2025.35
LSST Data Management Base Package
Loading...
Searching...
No Matches
_heavyFootprintContinued.py
Go to the documentation of this file.
1# This file is part of afw.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (https://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19import numpy as np
20
21from lsst.utils import TemplateMeta
22
23from ._detection import HeavyFootprintI, HeavyFootprintF, HeavyFootprintD, HeavyFootprintU
24
25__all__ = [] # import this module only for its side effects
26
27
28class HeavyFootprint(metaclass=TemplateMeta): # noqa: F811
29 def addTo(self, image):
30 """Add this heavy footprint to an image.
31
32 Parameters
33 ----------
34 image : `lsst.afw.image`
35 """
36 indices = self.spans.indices()
37 image.array[indices[0, :] - image.getY0(),
38 indices[1, :] - image.getX0()] += self.getImageArray()
39
40 def subtractFrom(self, image):
41 """Subtract this heavy footprint from an image.
42
43 Parameters
44 ----------
45 image : `lsst.afw.image`
46 """
47 indices = self.spans.indices()
48 image.array[indices[0, :] - image.getY0(),
49 indices[1, :] - image.getX0()] -= self.getImageArray()
50
51 def extractImage(self, fill=np.nan, bbox=None, imageType=None):
52 """Create a 2D image of a HeavyFootprint
53
54 Parameters
55 ----------
56 fill: number
57 Number to fill the pixels in the image that are not
58 contained in `heavy`.
59 bbox : `Box2I`
60 Bounding box of the output image.
61 imageType : `type`
62 This should be either a `MaskedImage` or `Image` and describes
63 the type of the output image.
64 If `imageType` is `None` then `Image` will be used.
65
66 Returns
67 -------
68 image : `lsst.afw.image.MaskedImage` or `lsst.afw.image.Image`
69 An image defined by `bbox` and padded with `fill` that
70 contains the projected flux in `heavy`.
71 """
72 # Prevent circular import
73 from lsst.afw.image import Image
74 if imageType is None:
75 imageType = Image
76 if bbox is None:
77 bbox = self.getBBox()
78 image = imageType(bbox, dtype=self.getImageArray().dtype)
79 image.set(fill)
80 self.insert(image)
81 return image
82
83
84HeavyFootprint.register(np.int32, HeavyFootprintI)
85HeavyFootprint.register(np.float32, HeavyFootprintF)
86HeavyFootprint.register(np.float64, HeavyFootprintD)
87HeavyFootprint.register(np.uint16, HeavyFootprintU)
extractImage(self, fill=np.nan, bbox=None, imageType=None)