LSSTApplications  16.0-10-g0ee56ad+5,16.0-11-ga33d1f2+5,16.0-12-g3ef5c14+3,16.0-12-g71e5ef5+18,16.0-12-gbdf3636+3,16.0-13-g118c103+3,16.0-13-g8f68b0a+3,16.0-15-gbf5c1cb+4,16.0-16-gfd17674+3,16.0-17-g7c01f5c+3,16.0-18-g0a50484+1,16.0-20-ga20f992+8,16.0-21-g0e05fd4+6,16.0-21-g15e2d33+4,16.0-22-g62d8060+4,16.0-22-g847a80f+4,16.0-25-gf00d9b8+1,16.0-28-g3990c221+4,16.0-3-gf928089+3,16.0-32-g88a4f23+5,16.0-34-gd7987ad+3,16.0-37-gc7333cb+2,16.0-4-g10fc685+2,16.0-4-g18f3627+26,16.0-4-g5f3a788+26,16.0-5-gaf5c3d7+4,16.0-5-gcc1f4bb+1,16.0-6-g3b92700+4,16.0-6-g4412fcd+3,16.0-6-g7235603+4,16.0-69-g2562ce1b+2,16.0-8-g14ebd58+4,16.0-8-g2df868b+1,16.0-8-g4cec79c+6,16.0-8-gadf6c7a+1,16.0-8-gfc7ad86,16.0-82-g59ec2a54a+1,16.0-9-g5400cdc+2,16.0-9-ge6233d7+5,master-g2880f2d8cf+3,v17.0.rc1
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 ..image.fitsIoWithOptions import imageReadFitsWithOptions, exposureWriteFitsWithOptions
31 from .exposure import ExposureI, ExposureF, ExposureD, ExposureU, ExposureL
32 
33 
34 class Exposure(metaclass=TemplateMeta):
35 
36  def _set(self, index, value, origin):
37  """Set the pixel at the given index to a triple (value, mask, variance).
38 
39  Parameters
40  ----------
41  index : `geom.Point2I`
42  Position of the pixel to assign to.
43  value : `tuple`
44  A tuple of (value, mask, variance) scalars.
45  origin : `ImageOrigin`
46  Coordinate system of ``index`` (`PARENT` or `LOCAL`).
47  """
48  self.maskedImage._set(index, value=value, origin=origin)
49 
50  def _get(self, index, origin):
51  """Return a triple (value, mask, variance) at the given index.
52 
53  Parameters
54  ----------
55  index : `geom.Point2I`
56  Position of the pixel to assign to.
57  origin : `ImageOrigin`
58  Coordinate system of ``index`` (`PARENT` or `LOCAL`).
59  """
60  return self.maskedImage._get(index, origin=origin)
61 
62  def __reduce__(self):
63  from lsst.afw.fits import reduceToFits
64  return reduceToFits(self)
65 
66  def convertF(self):
67  return ExposureF(self, deep=True)
68 
69  def convertD(self):
70  return ExposureD(self, deep=True)
71 
72  def getImage(self):
73  return self.maskedImage.image
74 
75  def setImage(self, image):
76  self.maskedImage.image = image
77 
78  image = property(getImage, setImage)
79 
80  def getMask(self):
81  return self.maskedImage.mask
82 
83  def setMask(self, mask):
84  self.maskedImage.mask = mask
85 
86  mask = property(getMask, setMask)
87 
88  def getVariance(self):
89  return self.maskedImage.variance
90 
91  def setVariance(self, variance):
92  self.maskedImage.variance = variance
93 
94  variance = property(getVariance, setVariance)
95 
96  readFitsWithOptions = classmethod(imageReadFitsWithOptions)
97 
98  writeFitsWithOptions = exposureWriteFitsWithOptions
99 
100 
101 Exposure.register(np.int32, ExposureI)
102 Exposure.register(np.float32, ExposureF)
103 Exposure.register(np.float64, ExposureD)
104 Exposure.register(np.uint16, ExposureU)
105 Exposure.register(np.uint64, ExposureL)
106 Exposure.alias("I", ExposureI)
107 Exposure.alias("F", ExposureF)
108 Exposure.alias("D", ExposureD)
109 Exposure.alias("U", ExposureU)
110 Exposure.alias("L", ExposureL)
111 
112 for cls in set(Exposure.values()):
113  supportSlicing(cls)
daf::base::PropertySet * set
Definition: fits.cc:832