LSST Applications  21.0.0+04719a4bac,21.0.0-1-ga51b5d4+f5e6047307,21.0.0-11-g2b59f77+a9c1acf22d,21.0.0-11-ga42c5b2+86977b0b17,21.0.0-12-gf4ce030+76814010d2,21.0.0-13-g1721dae+760e7a6536,21.0.0-13-g3a573fe+768d78a30a,21.0.0-15-g5a7caf0+f21cbc5713,21.0.0-16-g0fb55c1+b60e2d390c,21.0.0-19-g4cded4ca+71a93a33c0,21.0.0-2-g103fe59+bb20972958,21.0.0-2-g45278ab+04719a4bac,21.0.0-2-g5242d73+3ad5d60fb1,21.0.0-2-g7f82c8f+8babb168e8,21.0.0-2-g8f08a60+06509c8b61,21.0.0-2-g8faa9b5+616205b9df,21.0.0-2-ga326454+8babb168e8,21.0.0-2-gde069b7+5e4aea9c2f,21.0.0-2-gecfae73+1d3a86e577,21.0.0-2-gfc62afb+3ad5d60fb1,21.0.0-25-g1d57be3cd+e73869a214,21.0.0-3-g357aad2+ed88757d29,21.0.0-3-g4a4ce7f+3ad5d60fb1,21.0.0-3-g4be5c26+3ad5d60fb1,21.0.0-3-g65f322c+e0b24896a3,21.0.0-3-g7d9da8d+616205b9df,21.0.0-3-ge02ed75+a9c1acf22d,21.0.0-4-g591bb35+a9c1acf22d,21.0.0-4-g65b4814+b60e2d390c,21.0.0-4-gccdca77+0de219a2bc,21.0.0-4-ge8a399c+6c55c39e83,21.0.0-5-gd00fb1e+05fce91b99,21.0.0-6-gc675373+3ad5d60fb1,21.0.0-64-g1122c245+4fb2b8f86e,21.0.0-7-g04766d7+cd19d05db2,21.0.0-7-gdf92d54+04719a4bac,21.0.0-8-g5674e7b+d1bd76f71f,master-gac4afde19b+a9c1acf22d,w.2021.13
LSST Data Management Base Package
_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 
24 from lsst.utils.deprecated import deprecate_pybind11
25 import numpy as np
26 
27 from lsst.utils import TemplateMeta
28 
29 from ..image._slicing import supportSlicing
30 from ..image._disableArithmetic import disableImageArithmetic
31 from ..image._fitsIoWithOptions import imageReadFitsWithOptions, exposureWriteFitsWithOptions
32 from ._exposure import ExposureI, ExposureF, ExposureD, ExposureU, ExposureL
33 
34 
35 class 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 
102 Exposure.register(np.int32, ExposureI)
103 Exposure.register(np.float32, ExposureF)
104 Exposure.register(np.float64, ExposureD)
105 Exposure.register(np.uint16, ExposureU)
106 Exposure.register(np.uint64, ExposureL)
107 Exposure.alias("I", ExposureI)
108 Exposure.alias("F", ExposureF)
109 Exposure.alias("D", ExposureD)
110 Exposure.alias("U", ExposureU)
111 Exposure.alias("L", ExposureL)
112 
113 for 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
def deprecate_pybind11(obj, reason, version=None, category=FutureWarning)
Definition: deprecated.py:32