Coverage for tests/test_assessSpatialKernelVisitor.py : 21%

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
1import unittest
2import numpy as num
5import lsst.utils.tests
6import lsst.afw.image as afwImage
7import lsst.afw.math as afwMath
8import lsst.geom as geom
9import lsst.ip.diffim as ipDiffim
10import lsst.log.utils as logUtils
11import lsst.pex.config as pexConfig
13# Increase the number for more verbose messages; decrease for fewer messages
14logUtils.traceSetAt("ip.diffim", 4)
17class DiffimTestCases(unittest.TestCase):
19 def setUp(self):
20 self.config = ipDiffim.ImagePsfMatchTask.ConfigClass()
21 self.config.kernel.name = "AL"
22 self.subconfig = self.config.kernel.active
24 self.ps = pexConfig.makePropertySet(self.subconfig)
25 self.kList = ipDiffim.makeKernelBasisList(self.subconfig)
27 self.ksize = self.ps['kernelSize']
29 def makeSpatialKernel(self, order):
30 basicGaussian1 = afwMath.GaussianFunction2D(2., 2., 0.)
31 basicKernel1 = afwMath.AnalyticKernel(self.ksize, self.ksize, basicGaussian1)
33 basicGaussian2 = afwMath.GaussianFunction2D(5., 3., 0.5 * num.pi)
34 basicKernel2 = afwMath.AnalyticKernel(self.ksize, self.ksize, basicGaussian2)
36 basisList = []
37 basisList.append(basicKernel1)
38 basisList.append(basicKernel2)
39 basisList = ipDiffim.renormalizeKernelList(basisList)
41 spatialKernelFunction = afwMath.PolynomialFunction2D(order)
42 spatialKernel = afwMath.LinearCombinationKernel(basisList, spatialKernelFunction)
43 kCoeffs = [[0.0 for x in range(1, spatialKernelFunction.getNParameters()+1)],
44 [0.01 * x for x in range(1, spatialKernelFunction.getNParameters()+1)]]
45 kCoeffs[0][0] = 1.0 # it does not vary spatially; constant across image
46 spatialKernel.setSpatialParameters(kCoeffs)
47 return spatialKernel
49 def tearDown(self):
50 del self.ps
51 del self.kList
53 def testGood(self):
54 ti = afwImage.MaskedImageF(geom.Extent2I(100, 100))
55 ti.getVariance().set(0.1)
56 ti[50, 50, afwImage.LOCAL] = (1., 0x0, 1.)
57 sKernel = self.makeSpatialKernel(2)
58 si = afwImage.MaskedImageF(ti.getDimensions())
59 afwMath.convolve(si, ti, sKernel, True)
61 bbox = geom.Box2I(geom.Point2I(25, 25),
62 geom.Point2I(75, 75))
63 si = afwImage.MaskedImageF(si, bbox, origin=afwImage.LOCAL)
64 ti = afwImage.MaskedImageF(ti, bbox, origin=afwImage.LOCAL)
65 kc = ipDiffim.KernelCandidateF(50., 50., ti, si, self.ps)
67 sBg = afwMath.PolynomialFunction2D(1)
68 bgCoeffs = [0., 0., 0.]
69 sBg.setParameters(bgCoeffs)
71 # must be initialized
72 bskv = ipDiffim.BuildSingleKernelVisitorF(self.kList, self.ps)
73 bskv.processCandidate(kc)
74 self.assertEqual(kc.isInitialized(), True)
76 askv = ipDiffim.AssessSpatialKernelVisitorF(sKernel, sBg, self.ps)
77 askv.processCandidate(kc)
79 self.assertEqual(askv.getNProcessed(), 1)
80 self.assertEqual(askv.getNRejected(), 0)
81 self.assertEqual(kc.getStatus(), afwMath.SpatialCellCandidate.GOOD)
83 def testBad(self):
84 ti = afwImage.MaskedImageF(geom.Extent2I(100, 100))
85 ti.getVariance().set(0.1)
86 ti[50, 50, afwImage.LOCAL] = (1., 0x0, 1.)
87 sKernel = self.makeSpatialKernel(2)
88 si = afwImage.MaskedImageF(ti.getDimensions())
89 afwMath.convolve(si, ti, sKernel, True)
91 bbox = geom.Box2I(geom.Point2I(25, 25),
92 geom.Point2I(75, 75))
93 si = afwImage.MaskedImageF(si, bbox, origin=afwImage.LOCAL)
94 ti = afwImage.MaskedImageF(ti, bbox, origin=afwImage.LOCAL)
95 kc = ipDiffim.KernelCandidateF(50., 50., ti, si, self.ps)
97 badGaussian = afwMath.GaussianFunction2D(1., 1., 0.)
98 badKernel = afwMath.AnalyticKernel(self.ksize, self.ksize, badGaussian)
99 basisList = []
100 basisList.append(badKernel)
101 badSpatialKernelFunction = afwMath.PolynomialFunction2D(0)
102 badSpatialKernel = afwMath.LinearCombinationKernel(basisList, badSpatialKernelFunction)
103 badSpatialKernel.setSpatialParameters([[1, ]])
105 sBg = afwMath.PolynomialFunction2D(1)
106 bgCoeffs = [10., 10., 10.]
107 sBg.setParameters(bgCoeffs)
109 # must be initialized
110 bskv = ipDiffim.BuildSingleKernelVisitorF(self.kList, self.ps)
111 bskv.processCandidate(kc)
112 self.assertEqual(kc.isInitialized(), True)
114 askv = ipDiffim.AssessSpatialKernelVisitorF(badSpatialKernel, sBg, self.ps)
115 askv.processCandidate(kc)
117 self.assertEqual(askv.getNProcessed(), 1)
118 self.assertEqual(askv.getNRejected(), 1)
119 self.assertEqual(kc.getStatus(), afwMath.SpatialCellCandidate.BAD)
122#####
124class TestMemory(lsst.utils.tests.MemoryTestCase):
125 pass
128def setup_module(module):
129 lsst.utils.tests.init()
132if __name__ == "__main__": 132 ↛ 133line 132 didn't jump to line 133, because the condition on line 132 was never true
133 lsst.utils.tests.init()
134 unittest.main()