Coverage for tests/test_scaledPlus.py: 36%
49 statements
« prev ^ index » next coverage.py v6.4.4, created at 2022-08-19 12:16 -0700
« prev ^ index » next coverage.py v6.4.4, created at 2022-08-19 12:16 -0700
1#
2# LSST Data Management System
3# Copyright 2008, 2009, 2010 LSST Corporation.
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#
23import unittest
25import lsst.utils.tests
26import lsst.geom
27import lsst.afw.image as afwImage
28import lsst.afw.math as afwMath
29from lsst.log import Log
31Log.getLogger("lsst.afw.image.Mask").setLevel(Log.INFO)
34class ScaledPlus(lsst.utils.tests.TestCase):
36 def setUp(self):
37 self.random = afwMath.Random()
38 self.imWidth = 200
39 self.imHeight = 200
40 self.maskedImage0 = afwImage.MaskedImageF(
41 lsst.geom.Extent2I(self.imWidth, self.imHeight))
42 afwMath.randomUniformImage(self.maskedImage0.getImage(), self.random)
43 afwMath.randomUniformImage(
44 self.maskedImage0.getVariance(), self.random)
45# afwMath.randomUniformImage(self.maskedImage0.getMask(), self.random)
46 self.maskedImage1 = afwImage.MaskedImageF(
47 lsst.geom.Extent2I(self.imWidth, self.imHeight))
48 afwMath.randomUniformImage(self.maskedImage1.getImage(), self.random)
49 afwMath.randomUniformImage(
50 self.maskedImage1.getVariance(), self.random)
51# afwMath.randomUniformImage(self.maskedImage1.getMask(), self.random)
53 def tearDown(self):
54 self.random = None
55 self.maskedImage0 = None
56 self.maskedImage1 = None
58 def runScaledAddTest(self, coeff0, coeff1):
59 """Run one test of scaledPlus
61 Inputs:
62 - coeff0: coefficient of image 0
63 - coeff1: coefficient of image 1
64 """
65 desMaskedImage = afwImage.MaskedImageF(
66 self.maskedImage0.getDimensions())
67 desMaskedImage[:] = self.maskedImage0
68 desMaskedImage *= coeff0
69 desMaskedImage.scaledPlus(coeff1, self.maskedImage1)
71 actMaskedImage = afwImage.MaskedImageF(
72 lsst.geom.Extent2I(self.imWidth, self.imHeight))
73 afwMath.randomUniformImage(actMaskedImage.getImage(), self.random)
74 afwMath.randomUniformImage(actMaskedImage.getVariance(), self.random)
76 afwMath.scaledPlus(actMaskedImage, coeff0,
77 self.maskedImage0, coeff1, self.maskedImage1)
79 actImage = afwImage.ImageF(
80 lsst.geom.Extent2I(self.imWidth, self.imHeight))
81 afwMath.randomUniformImage(actImage, self.random)
82 afwMath.scaledPlus(actImage, coeff0, self.maskedImage0.getImage(),
83 coeff1, self.maskedImage1.getImage())
85 msg = f"scaledPlus failed for images; coeff0={coeff0}, coeff1={coeff1}"
86 self.assertImagesAlmostEqual(
87 actImage, desMaskedImage.getImage(), msg=msg)
88 msg = f"scaledPlus failed for masked images; coeff0={coeff0}, coeff1={coeff1}"
89 self.assertMaskedImagesAlmostEqual(
90 actMaskedImage, desMaskedImage, msg=msg)
92 def testScaledPlus(self):
93 for coeff0 in (0.0, -0.1e-5, 0.1e-5, 1.0e3):
94 for coeff1 in (0.0, 0.1e-5, -0.1e-5, 1.0e3):
95 self.runScaledAddTest(coeff0, coeff1)
98class TestMemory(lsst.utils.tests.MemoryTestCase):
99 pass
102def setup_module(module):
103 lsst.utils.tests.init()
106if __name__ == "__main__": 106 ↛ 107line 106 didn't jump to line 107, because the condition on line 106 was never true
107 lsst.utils.tests.init()
108 unittest.main()