Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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 

25from lsst.utils.deprecated import deprecate_pybind11 

26import numpy as np 

27 

28from lsst.utils import TemplateMeta 

29 

30from ..slicing import supportSlicing 

31from ..disableArithmetic import disableImageArithmetic 

32from ..image.fitsIoWithOptions import imageReadFitsWithOptions, exposureWriteFitsWithOptions 

33from .exposure import ExposureI, ExposureF, ExposureD, ExposureU, ExposureL 

34 

35 

36class Exposure(metaclass=TemplateMeta): 

37 

38 def _set(self, index, value, origin): 

39 """Set the pixel at the given index to a triple (value, mask, variance). 

40 

41 Parameters 

42 ---------- 

43 index : `geom.Point2I` 

44 Position of the pixel to assign to. 

45 value : `tuple` 

46 A tuple of (value, mask, variance) scalars. 

47 origin : `ImageOrigin` 

48 Coordinate system of ``index`` (`PARENT` or `LOCAL`). 

49 """ 

50 self.maskedImage._set(index, value=value, origin=origin) 

51 

52 def _get(self, index, origin): 

53 """Return a triple (value, mask, variance) at the given index. 

54 

55 Parameters 

56 ---------- 

57 index : `geom.Point2I` 

58 Position of the pixel to assign to. 

59 origin : `ImageOrigin` 

60 Coordinate system of ``index`` (`PARENT` or `LOCAL`). 

61 """ 

62 return self.maskedImage._get(index, origin=origin) 

63 

64 def __reduce__(self): 

65 from lsst.afw.fits import reduceToFits 

66 return reduceToFits(self) 

67 

68 def convertF(self): 

69 return ExposureF(self, deep=True) 

70 

71 def convertD(self): 

72 return ExposureD(self, deep=True) 

73 

74 def getImage(self): 

75 return self.maskedImage.image 

76 

77 def setImage(self, image): 

78 self.maskedImage.image = image 

79 

80 image = property(getImage, setImage) 

81 

82 def getMask(self): 

83 return self.maskedImage.mask 

84 

85 def setMask(self, mask): 

86 self.maskedImage.mask = mask 

87 

88 mask = property(getMask, setMask) 

89 

90 def getVariance(self): 

91 return self.maskedImage.variance 

92 

93 def setVariance(self, variance): 

94 self.maskedImage.variance = variance 

95 

96 variance = property(getVariance, setVariance) 

97 

98 readFitsWithOptions = classmethod(imageReadFitsWithOptions) 

99 

100 writeFitsWithOptions = exposureWriteFitsWithOptions 

101 

102 

103Exposure.register(np.int32, ExposureI) 

104Exposure.register(np.float32, ExposureF) 

105Exposure.register(np.float64, ExposureD) 

106Exposure.register(np.uint16, ExposureU) 

107Exposure.register(np.uint64, ExposureL) 

108Exposure.alias("I", ExposureI) 

109Exposure.alias("F", ExposureF) 

110Exposure.alias("D", ExposureD) 

111Exposure.alias("U", ExposureU) 

112Exposure.alias("L", ExposureL) 

113 

114for cls in set(Exposure.values()): 

115 supportSlicing(cls) 

116 disableImageArithmetic(cls) 

117 

118 cls.getFilter = deprecate_pybind11( 

119 cls.getFilter, 

120 reason="Replaced by getFilterLabel. Will be removed after v22.", 

121 version="v22.0") 

122 

123 cls.setFilter = deprecate_pybind11( 

124 cls.setFilter, 

125 reason="Replaced by setFilterLabel. Will be removed after v22.", 

126 version="v22.0")