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# 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 

22import unittest 

23import numpy as np 

24 

25import lsst.utils.tests 

26import lsst.geom 

27from lsst.afw.cameraGeom import Amplifier, ReadoutCorner 

28 

29 

30class AmplifierTestCase(unittest.TestCase): 

31 

32 def testBasics(self): 

33 name = "Amp1" 

34 gain = 1.2345 

35 saturation = 65535 

36 readNoise = -0.523 

37 linearityCoeffs = np.array([1.1, 2.2, 3.3, 4.4], dtype=float) 

38 linearityType = "Polynomial" 

39 bbox = lsst.geom.Box2I(lsst.geom.Point2I(3, -2), 

40 lsst.geom.Extent2I(231, 320)) 

41 rawFlipX = True 

42 rawFlipY = False 

43 readoutCorner = ReadoutCorner.UL 

44 rawBBox = lsst.geom.Box2I(lsst.geom.Point2I(-25, 2), 

45 lsst.geom.Extent2I(550, 629)) 

46 rawXYOffset = lsst.geom.Extent2I(-97, 253) 

47 rawDataBBox = lsst.geom.Box2I(lsst.geom.Point2I(-2, 29), 

48 lsst.geom.Extent2I(123, 307)) 

49 rawHorizontalOverscanBBox = lsst.geom.Box2I( 

50 lsst.geom.Point2I(150, 29), lsst.geom.Extent2I(25, 307)) 

51 rawVerticalOverscanBBox = lsst.geom.Box2I( 

52 lsst.geom.Point2I(-2, 201), lsst.geom.Extent2I(123, 6)) 

53 rawPrescanBBox = lsst.geom.Box2I( 

54 lsst.geom.Point2I(-20, 2), lsst.geom.Extent2I(5, 307)) 

55 

56 builder = Amplifier.Builder() 

57 builder.setBBox(bbox) 

58 builder.setName(name) 

59 builder.setGain(gain) 

60 builder.setSaturation(saturation) 

61 builder.setReadNoise(readNoise) 

62 builder.setReadoutCorner(readoutCorner) 

63 builder.setLinearityCoeffs(linearityCoeffs) 

64 builder.setLinearityType(linearityType) 

65 builder.setRawFlipX(rawFlipX) 

66 builder.setRawFlipY(rawFlipY) 

67 builder.setRawBBox(rawBBox) 

68 builder.setRawXYOffset(rawXYOffset) 

69 builder.setRawDataBBox(rawDataBBox) 

70 builder.setRawHorizontalOverscanBBox(rawHorizontalOverscanBBox) 

71 builder.setRawVerticalOverscanBBox(rawVerticalOverscanBBox) 

72 builder.setRawPrescanBBox(rawPrescanBBox) 

73 amplifier = builder.finish() 

74 

75 self.assertEqual(name, amplifier.getName()) 

76 self.assertEqual(gain, amplifier.getGain()) 

77 self.assertEqual(saturation, amplifier.getSaturation()) 

78 self.assertEqual(readNoise, amplifier.getReadNoise()) 

79 self.assertEqual(readoutCorner, amplifier.getReadoutCorner()) 

80 self.assertEqual(list(linearityCoeffs), 

81 list(amplifier.getLinearityCoeffs())) 

82 self.assertEqual(linearityType, amplifier.getLinearityType()) 

83 self.assertEqual(bbox, amplifier.getBBox()) 

84 self.assertEqual(rawBBox, amplifier.getRawBBox()) 

85 self.assertEqual(rawDataBBox, amplifier.getRawDataBBox()) 

86 self.assertEqual(rawHorizontalOverscanBBox, 

87 amplifier.getRawHorizontalOverscanBBox()) 

88 self.assertEqual(rawVerticalOverscanBBox, 

89 amplifier.getRawVerticalOverscanBBox()) 

90 self.assertEqual(rawPrescanBBox, amplifier.getRawPrescanBBox()) 

91 self.assertEqual(rawHorizontalOverscanBBox, 

92 amplifier.getRawSerialOverscanBBox()) 

93 self.assertEqual(rawVerticalOverscanBBox, 

94 amplifier.getRawParallelOverscanBBox()) 

95 self.assertEqual(rawPrescanBBox, amplifier.getRawSerialPrescanBBox()) 

96 self.assertEqual(rawPrescanBBox, 

97 amplifier.getRawHorizontalPrescanBBox()) 

98 self.assertEqual(rawFlipX, amplifier.getRawFlipX()) 

99 self.assertEqual(rawFlipY, amplifier.getRawFlipY()) 

100 self.assertEqual(rawXYOffset, amplifier.getRawXYOffset()) 

101 

102 # Test get/set methods for overscan/prescan alias names. 

103 # Change slightly, don't care about contiguity, make smaller. 

104 newHorizontalOverscanBBox = lsst.geom.Box2I( 

105 lsst.geom.Point2I(150, 29), lsst.geom.Extent2I(25, 306)) 

106 newVerticalOverscanBBox = lsst.geom.Box2I( 

107 lsst.geom.Point2I(-2, 201), lsst.geom.Extent2I(123, 5)) 

108 newPrescanBBox = lsst.geom.Box2I( 

109 lsst.geom.Point2I(-20, 2), lsst.geom.Extent2I(4, 306)) 

110 

111 builder.setRawSerialOverscanBBox(newHorizontalOverscanBBox) 

112 builder.setRawParallelOverscanBBox(newVerticalOverscanBBox) 

113 builder.setRawSerialPrescanBBox(newPrescanBBox) 

114 amplifier = builder.finish() 

115 

116 self.assertEqual(newHorizontalOverscanBBox, 

117 amplifier.getRawHorizontalOverscanBBox()) 

118 self.assertEqual(newVerticalOverscanBBox, 

119 amplifier.getRawVerticalOverscanBBox()) 

120 self.assertEqual(newPrescanBBox, 

121 amplifier.getRawPrescanBBox()) 

122 

123 newPrescanBBox2 = lsst.geom.Box2I( 

124 lsst.geom.Point2I(-20, 2), lsst.geom.Extent2I(5, 306)) 

125 builder.setRawHorizontalPrescanBBox(newPrescanBBox2) 

126 amplifier = builder.finish() 

127 self.assertEqual(newPrescanBBox2, 

128 amplifier.getRawPrescanBBox()) 

129 

130 

131class TestMemory(lsst.utils.tests.MemoryTestCase): 

132 pass 

133 

134 

135def setup_module(module): 

136 lsst.utils.tests.init() 

137 

138 

139if __name__ == "__main__": 139 ↛ 140line 139 didn't jump to line 140, because the condition on line 139 was never true

140 lsst.utils.tests.init() 

141 unittest.main()