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

1import unittest 

2import numpy as np 

3 

4import lsst.afw.image as afwImage 

5import lsst.meas.algorithms as measAlg 

6from lsst.ip.diffim.zogy import ZogyTask, ZogyConfig 

7 

8 

9class PixelOffsetTest(unittest.TestCase): 

10 """A test case for the pixel offset. 

11 """ 

12 

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 

33 

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) 

39 

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) 

45 

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) 

54 

55 self.assertEqual(max_loc, (300, 300))