lsst.afw g44befd6440+dd219f3bc1
_exposureContinued.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#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <https://www.gnu.org/licenses/>.
21
22__all__ = ["Exposure"]
23
24from lsst.utils.deprecated import deprecate_pybind11
25import numpy as np
26
27from lsst.utils import TemplateMeta
28
29from ..image._slicing import supportSlicing
30from ..image._disableArithmetic import disableImageArithmetic
31from ..image._fitsIoWithOptions import imageReadFitsWithOptions, exposureWriteFitsWithOptions
32from ._exposure import ExposureI, ExposureF, ExposureD, ExposureU, ExposureL
33
34
35class Exposure(metaclass=TemplateMeta):
36
37 def _set(self, index, value, origin):
38 """Set the pixel at the given index to a triple (value, mask, variance).
39
40 Parameters
41 ----------
42 index : `geom.Point2I`
43 Position of the pixel to assign to.
44 value : `tuple`
45 A tuple of (value, mask, variance) scalars.
46 origin : `ImageOrigin`
47 Coordinate system of ``index`` (`PARENT` or `LOCAL`).
48 """
49 self.maskedImage._set(index, value=value, origin=origin)
50
51 def _get(self, index, origin):
52 """Return a triple (value, mask, variance) at the given index.
53
54 Parameters
55 ----------
56 index : `geom.Point2I`
57 Position of the pixel to assign to.
58 origin : `ImageOrigin`
59 Coordinate system of ``index`` (`PARENT` or `LOCAL`).
60 """
61 return self.maskedImage._get(index, origin=origin)
62
63 def __reduce__(self):
64 from lsst.afw.fits import reduceToFits
65 return reduceToFits(self)
66
67 def convertF(self):
68 return ExposureF(self, deep=True)
69
70 def convertD(self):
71 return ExposureD(self, deep=True)
72
73 def getImage(self):
74 return self.maskedImage.image
75
76 def setImage(self, image):
77 self.maskedImage.image = image
78
79 image = property(getImage, setImage)
80
81 def getMask(self):
82 return self.maskedImage.mask
83
84 def setMask(self, mask):
85 self.maskedImage.mask = mask
86
87 mask = property(getMask, setMask)
88
89 def getVariance(self):
90 return self.maskedImage.variance
91
92 def setVariance(self, variance):
93 self.maskedImage.variance = variance
94
95 variance = property(getVariance, setVariance)
96
97 readFitsWithOptions = classmethod(imageReadFitsWithOptions)
98
99 writeFitsWithOptions = exposureWriteFitsWithOptions
100
101
102Exposure.register(np.int32, ExposureI)
103Exposure.register(np.float32, ExposureF)
104Exposure.register(np.float64, ExposureD)
105Exposure.register(np.uint16, ExposureU)
106Exposure.register(np.uint64, ExposureL)
107Exposure.alias("I", ExposureI)
108Exposure.alias("F", ExposureF)
109Exposure.alias("D", ExposureD)
110Exposure.alias("U", ExposureU)
111Exposure.alias("L", ExposureL)
112
113for cls in set(Exposure.values()):
114 supportSlicing(cls)
116
117 cls.getFilter = deprecate_pybind11(
118 cls.getFilter,
119 reason="Replaced by getFilterLabel. Will be removed after v22.",
120 version="v22.0")
121
122 cls.setFilter = deprecate_pybind11(
123 cls.setFilter,
124 reason="Replaced by setFilterLabel. Will be removed after v22.",
125 version="v22.0")
daf::base::PropertySet * set
Definition: fits.cc:912