Coverage for tests/test_imagePickle.py: 39%
57 statements
« prev ^ index » next coverage.py v6.4, created at 2022-05-24 02:38 -0700
« prev ^ index » next coverage.py v6.4, created at 2022-05-24 02:38 -0700
1#
2# LSST Data Management System
3# Copyright 2008-2013 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
24import pickle
26import numpy as np
28import lsst.utils.tests
29import lsst.geom
30import lsst.afw.geom as afwGeom
31import lsst.afw.image as afwImage
34class ImagePickleTestCase(lsst.utils.tests.TestCase):
35 """A test case for Image pickling"""
37 def setUp(self):
38 self.xSize = 4
39 self.ySize = 7
40 self.x0 = 567
41 self.y0 = 98765
43 def createImage(self, factory=afwImage.ImageF):
44 image = factory(self.xSize, self.ySize)
45 image.setXY0(lsst.geom.Point2I(self.x0, self.y0))
46 image.array[:] = self.createPattern()
47 return image
49 def createMaskedImage(self, factory=afwImage.MaskedImageF):
50 image = factory(self.xSize, self.ySize)
51 image.setXY0(lsst.geom.Point2I(self.x0, self.y0))
52 image.image.array[:] = self.createPattern()
53 image.mask.array[:] = self.createPattern()
54 image.variance.array[:] = self.createPattern()
55 return image
57 def createPattern(self):
58 # NB: numpy operates 'backwards'
59 yy, xx = np.ogrid[0:self.ySize, 0:self.xSize]
60 return self.xSize*yy + xx
62 def checkImages(self, original):
63 image = pickle.loads(pickle.dumps(original))
64 self.assertImagesEqual(image, original)
66 def checkMaskedImages(self, original):
67 image = pickle.loads(pickle.dumps(original))
68 self.assertMaskedImagesEqual(image, original)
70 def checkExposures(self, original):
71 image = pickle.loads(pickle.dumps(original))
72 self.assertMaskedImagesEqual(image.getMaskedImage(),
73 original.getMaskedImage())
74 self.assertEqual(image.getWcs(), original.getWcs())
76 def testImage(self):
77 for Image in (afwImage.ImageU,
78 afwImage.ImageI,
79 afwImage.ImageF,
80 afwImage.ImageD,
81 afwImage.Mask,
82 ):
83 image = self.createImage(Image)
84 self.checkImages(image)
86 def testMaskedImage(self):
87 scale = 1.0*lsst.geom.arcseconds
88 wcs = afwGeom.makeSkyWcs(crval=lsst.geom.SpherePoint(0.0*lsst.geom.degrees, 0.0*lsst.geom.degrees),
89 crpix=lsst.geom.Point2D(0.0, 0.0),
90 cdMatrix=afwGeom.makeCdMatrix(scale=scale))
91 for MaskedImage in (afwImage.MaskedImageF,
92 afwImage.MaskedImageD,
93 ):
94 image = self.createMaskedImage(MaskedImage)
95 self.checkMaskedImages(image)
96 exposure = afwImage.makeExposure(image, wcs)
97 self.checkExposures(exposure)
100class TestMemory(lsst.utils.tests.MemoryTestCase):
101 pass
104def setup_module(module):
105 lsst.utils.tests.init()
108if __name__ == "__main__": 108 ↛ 109line 108 didn't jump to line 109, because the condition on line 108 was never true
109 lsst.utils.tests.init()
110 unittest.main()