예제 #1
0
    def doReject(self, clipping, kSums=[1., 1., 1., 1., 2., 3., 4., 50.]):
        self.ps["kernelSumClipping"] = clipping
        ksv = ipDiffim.KernelSumVisitorF(self.ps)
        ksv.setMode(ipDiffim.KernelSumVisitorF.AGGREGATE)
        kcList = []

        for kSum in kSums:
            kc = self.makeCandidate(kSum, 0., 0.)
            kc.build(self.kList)
            kc.setStatus(afwMath.SpatialCellCandidate.GOOD)
            self.assertAlmostEqual(
                kSum, kc.getKsum(ipDiffim.KernelCandidateF.RECENT))
            ksv.processCandidate(kc)
            kcList.append(kc)

        ksv.processKsumDistribution()

        ksv.setMode(ipDiffim.KernelSumVisitorF.REJECT)
        for kc in kcList:
            ksv.processCandidate(kc)
            if clipping and kc == kcList[-1]:
                self.assertEqual(kc.getStatus(),
                                 afwMath.SpatialCellCandidate.BAD)
            else:
                self.assertEqual(kc.getStatus(),
                                 afwMath.SpatialCellCandidate.GOOD)

        if clipping:
            self.assertEqual(ksv.getNRejected(), 1)
        else:
            self.assertEqual(ksv.getNRejected(), 0)
예제 #2
0
    def testAggregate(self, kSums=[1., 1., 1., 1., 2., 3., 4.]):
        ksv = ipDiffim.KernelSumVisitorF(self.ps)
        ksv.setMode(ipDiffim.KernelSumVisitorF.AGGREGATE)

        # should fail, kernel not initialized
        kc = self.makeCandidate(1, 0.0, 0.0)
        try:
            ksv.processCandidate(kc)
        except Exception:
            pass
        else:
            self.fail()

        for kSum in kSums:
            kc = self.makeCandidate(kSum, 0., 0.)
            kc.build(self.kList)
            self.assertAlmostEqual(
                kSum, kc.getKsum(ipDiffim.KernelCandidateF.RECENT))
            ksv.processCandidate(kc)

        for method in (ksv.getNRejected, ksv.getkSumMean, ksv.getkSumStd,
                       ksv.getdkSumMax, ksv.getkSumNpts):
            self.assertEqual(method(), 0.0)

        ksv.processKsumDistribution()

        self.assertEqual(ksv.getNRejected(), 0)
        self.assertAlmostEqual(
            ksv.getkSumMean(),
            afwMath.makeStatistics(kSums, afwMath.MEANCLIP).getValue(
                afwMath.MEANCLIP))
        self.assertAlmostEqual(
            ksv.getkSumStd(),
            afwMath.makeStatistics(kSums, afwMath.STDEVCLIP).getValue(
                afwMath.STDEVCLIP))
        self.assertEqual(ksv.getdkSumMax(),
                         self.ps["maxKsumSigma"] * ksv.getkSumStd())
        self.assertEqual(ksv.getkSumNpts(), len(kSums))