Coverage for tests/test_amplifier.py : 14%

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/>.
22import unittest
23import numpy as np
25import lsst.utils.tests
26import lsst.geom
27from lsst.afw.cameraGeom import Amplifier, ReadoutCorner
30class AmplifierTestCase(unittest.TestCase):
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))
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()
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())
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))
111 builder.setRawSerialOverscanBBox(newHorizontalOverscanBBox)
112 builder.setRawParallelOverscanBBox(newVerticalOverscanBBox)
113 builder.setRawSerialPrescanBBox(newPrescanBBox)
114 amplifier = builder.finish()
116 self.assertEqual(newHorizontalOverscanBBox,
117 amplifier.getRawHorizontalOverscanBBox())
118 self.assertEqual(newVerticalOverscanBBox,
119 amplifier.getRawVerticalOverscanBBox())
120 self.assertEqual(newPrescanBBox,
121 amplifier.getRawPrescanBBox())
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())
131class TestMemory(lsst.utils.tests.MemoryTestCase):
132 pass
135def setup_module(module):
136 lsst.utils.tests.init()
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()