Coverage for tests/test_pixelOffset.py: 35%
32 statements
« prev ^ index » next coverage.py v6.5.0, created at 2023-01-04 02:49 -0800
« prev ^ index » next coverage.py v6.5.0, created at 2023-01-04 02:49 -0800
1import unittest
2import numpy as np
4import lsst.afw.image as afwImage
5import lsst.meas.algorithms as measAlg
6from lsst.ip.diffim.zogy import ZogyTask, ZogyConfig
9class PixelOffsetTest(unittest.TestCase):
10 """A test case for the pixel offset.
11 """
13 @staticmethod
14 def _makeImage(w, h, psfsize, psfsig, set_peak=False):
15 """Make fake images for testing. If set_peak is True, the
16 image would have a peak at [300][300].
17 """
18 # Make image
19 image = afwImage.MaskedImageF(w, h)
20 image.set(0)
21 array = image.getImage().getArray()
22 if set_peak:
23 # set the peak value
24 array[300][300] = 1000
25 var = image.getVariance()
26 var.set(1.0)
27 # Make PSF
28 psf = measAlg.DoubleGaussianPsf(psfsize, psfsize, psfsig, psfsig, 0.)
29 # Make exposure
30 exp = afwImage.makeExposure(image)
31 exp.setPsf(psf)
32 return exp
34 @staticmethod
35 def _find_max(data):
36 """ Find the maximum position of the data.
37 """
38 return np.unravel_index(np.argmax(data), data.shape)
40 def _setUpImages(self):
41 """ Setup test images.
42 """
43 self.imrex = PixelOffsetTest._makeImage(1000, 2000, 17, 1, set_peak=False)
44 self.imnex = PixelOffsetTest._makeImage(1000, 2000, 17, 2, set_peak=True)
46 def testPixelOffset(self):
47 """ Test whether the peak position is at [300][300].
48 """
49 self._setUpImages()
50 config = ZogyConfig(scaleByCalibration=False)
51 task = ZogyTask(config=config)
52 D_F = task.run(self.imnex, self.imrex, calculateScore=False)
53 max_loc = PixelOffsetTest._find_max(D_F.diffExp.image.array)
55 self.assertEqual(max_loc, (300, 300))