LSSTApplications  17.0+124,17.0+14,17.0+73,18.0.0+37,18.0.0+80,18.0.0-4-g68ffd23+4,18.1.0-1-g0001055+12,18.1.0-1-g03d53ef+5,18.1.0-1-g1349e88+55,18.1.0-1-g2505f39+44,18.1.0-1-g5315e5e+4,18.1.0-1-g5e4b7ea+14,18.1.0-1-g7e8fceb+4,18.1.0-1-g85f8cd4+48,18.1.0-1-g8ff0b9f+4,18.1.0-1-ga2c679d+1,18.1.0-1-gd55f500+35,18.1.0-10-gb58edde+2,18.1.0-11-g0997b02+4,18.1.0-13-gfe4edf0b+12,18.1.0-14-g259bd21+21,18.1.0-19-gdb69f3f+2,18.1.0-2-g5f9922c+24,18.1.0-2-gd3b74e5+11,18.1.0-2-gfbf3545+32,18.1.0-26-g728bddb4+5,18.1.0-27-g6ff7ca9+2,18.1.0-3-g52aa583+25,18.1.0-3-g8ea57af+9,18.1.0-3-gb69f684+42,18.1.0-3-gfcaddf3+6,18.1.0-32-gd8786685a,18.1.0-4-gf3f9b77+6,18.1.0-5-g1dd662b+2,18.1.0-5-g6dbcb01+41,18.1.0-6-gae77429+3,18.1.0-7-g9d75d83+9,18.1.0-7-gae09a6d+30,18.1.0-9-gc381ef5+4,w.2019.45
LSSTDataManagementBasePackage
exposureContinued.py
Go to the documentation of this file.
1 #
2 # LSST Data Management System
3 # Copyright 2008-2017 LSST/AURA.
4 #
5 # This product includes software developed by the
6 # LSST Project (http://www.lsst.org/).
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the LSST License Statement and
19 # the GNU General Public License along with this program. If not,
20 # see <http://www.lsstcorp.org/LegalNotices/>.
21 #
22 
23 __all__ = ["Exposure"]
24 
25 import numpy as np
26 
27 from lsst.utils import TemplateMeta
28 
29 from ..slicing import supportSlicing
30 from ..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)
daf::base::PropertySet * set
Definition: fits.cc:902