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 

25import numpy as np 

26 

27from lsst.utils import TemplateMeta 

28 

29from ..slicing import supportSlicing 

30from ..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) 

115 disableImageArithmetic(cls)