コード例 #1
0
ファイル: ImagePsfMatch.py プロジェクト: Daraexus/ip_diffim
    def testPca(self, nTerms = 3):
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(bgValue = self.bgValue)

        tWcs = self.makeWcs(offset = 0)
        sWcs = self.makeWcs(offset = 0)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)

        self.subconfigDF.usePcaForSpatialKernel = True
        self.subconfigDF.numPrincipalComponents = nTerms

        psfMatchDF  = ipDiffim.ImagePsfMatchTask(config=self.configDF)
        candList = psfMatchDF.makeCandidateList(tExp, sExp, self.ksize)
        resultsDF   = psfMatchDF.subtractMaskedImages(tMi, sMi, candList)

        spatialKernel = resultsDF.psfMatchingKernel
        spatialKernelSolution = spatialKernel.getSpatialParameters()
        self.assertEqual(len(spatialKernelSolution), nTerms)

        # First basis has no spatial variation
        for i in range(1, nTerms):
            self.assertEqual(spatialKernelSolution[0][i], 0.)

        # All bases have correct number of terms
        sko = self.subconfigDF.spatialKernelOrder
        nSpatialTerms = int(0.5 * (sko + 1) * (sko + 2))
        for i in range(len(spatialKernelSolution)):
            self.assertEqual(len(spatialKernelSolution[i]), nSpatialTerms)

        spatialBg = resultsDF.backgroundModel
        spatialBgSolution = spatialBg.getParameters()
        bgo = self.subconfigDF.spatialBgOrder
        nBgTerms = int(0.5 * (bgo + 1) * (bgo + 2))
        self.assertEqual(len(spatialBgSolution), nBgTerms)
コード例 #2
0
ファイル: ImagePsfMatch.py プロジェクト: Daraexus/ip_diffim
    def testSubtractMaskedImages(self):
        # Lets do some additional testing here to make sure we recover
        # the known spatial model.  No background, just the faked
        # alard-lupton basis set.  The rest of matchMaskedImages() and
        # subtractMaskedImages() functionality is tested by the
        # Exposure-based methods.
        fakeCoeffs = diffimTools.fakeCoeffs()

        # Quick note; you shouldn't change confake here, since the
        # candidates in the KernelCellSet are initialized in
        # makeFakeKernelSet
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(bgValue = 0.0, addNoise = False)

        svar = sMi.getVariance()
        svar.set(1.0)
        tvar = tMi.getVariance()
        tvar.set(1.0)

        basisList = ipDiffim.makeKernelBasisList(confake.kernel.active)
        psfMatchAL = ipDiffim.ImagePsfMatchTask(config=confake)
        spatialSolution, psfMatchingKernel, backgroundModel = psfMatchAL._solve(kcs, basisList)

        fitCoeffs = psfMatchingKernel.getSpatialParameters()

        for b in range(len(fakeCoeffs)):
            for s in range(len(fakeCoeffs[b])):

                if fakeCoeffs[b][s] == 0.0:
                    self.assertAlmostEqual(fitCoeffs[b][s], 0.0)
                else:
                    # OUTSTANDING ISSUE - WHY IS THIS ONE TERM OFF!?!?
                    if b != 4 and s != 0:
                       self.assertAlmostEqual(fitCoeffs[b][s]/fakeCoeffs[b][s], 1.0, 1)
コード例 #3
0
ファイル: ImagePsfMatch.py プロジェクト: Daraexus/ip_diffim
    def testSubtractExposures(self):
        # Test all 3 options
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(bgValue = self.bgValue)

        tWcs = self.makeWcs(offset = 0)
        sWcs = self.makeWcs(offset = 1)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)

        psfMatchAL  = ipDiffim.ImagePsfMatchTask(config=self.configAL)
        psfMatchDF  = ipDiffim.ImagePsfMatchTask(config=self.configDF)
        psfMatchDFr = ipDiffim.ImagePsfMatchTask(config=self.configDFr)

        self.assertEqual(psfMatchAL.useRegularization, False)
        self.assertEqual(psfMatchDF.useRegularization, False)
        self.assertEqual(psfMatchDFr.useRegularization, True)

        resultsAL  = psfMatchAL.subtractExposures(tExp, sExp, doWarping = True)
        psfMatchDF.subtractExposures(tExp, sExp, doWarping = True)
        psfMatchDFr.subtractExposures(tExp, sExp, doWarping = True)

        self.assertEqual(type(resultsAL.subtractedExposure), afwImage.ExposureF)
        self.assertEqual(type(resultsAL.psfMatchingKernel), afwMath.LinearCombinationKernel)
        self.assertEqual(type(resultsAL.backgroundModel), afwMath.Function2D)
        self.assertEqual(type(resultsAL.kernelCellSet), afwMath.SpatialCellSet)
コード例 #4
0
    def testSubtractExposures(self):
        # Test all 3 options
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(
            bgValue=self.bgValue)

        tWcs = self.makeWcs(offset=0)
        sWcs = self.makeWcs(offset=1)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)
        tExp.setPsf(self.psf)

        psfMatchAL = ipDiffim.ImagePsfMatchTask(config=self.configAL)
        psfMatchDF = ipDiffim.ImagePsfMatchTask(config=self.configDF)
        psfMatchDFr = ipDiffim.ImagePsfMatchTask(config=self.configDFr)

        self.assertEqual(psfMatchAL.useRegularization, False)
        self.assertEqual(psfMatchDF.useRegularization, False)
        self.assertEqual(psfMatchDFr.useRegularization, True)

        resultsAL = psfMatchAL.subtractExposures(tExp, sExp, doWarping=True)
        psfMatchDF.subtractExposures(tExp, sExp, doWarping=True)
        psfMatchDFr.subtractExposures(tExp, sExp, doWarping=True)

        self.assertEqual(type(resultsAL.subtractedExposure),
                         afwImage.ExposureF)
        self.assertEqual(type(resultsAL.psfMatchingKernel),
                         afwMath.LinearCombinationKernel)
        self.assertEqual(type(resultsAL.backgroundModel),
                         afwMath.Chebyshev1Function2D)
        self.assertEqual(type(resultsAL.kernelCellSet), afwMath.SpatialCellSet)
コード例 #5
0
def generateFakeImages():
    tSigma = 1.5
    tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(tGaussianWidth=tSigma, bgValue=200)
    sSigma = 2.5
    tWcs = generateFakeWcs()
    sWcs = generateFakeWcs()
    tExp = afwImage.ExposureF(tMi, tWcs)
    sExp = afwImage.ExposureF(sMi, sWcs)
    tPsf = measAlg.DoubleGaussianPsf(21, 21, tSigma)
    sPsf = measAlg.DoubleGaussianPsf(21, 21, sSigma)
    tExp.setPsf(tPsf)
    sExp.setPsf(sPsf)
    return tExp, sExp
コード例 #6
0
def generateFakeImages():
    tSigma = 1.5
    tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(tGaussianWidth=tSigma, bgValue=200)
    sSigma = 2.5
    tWcs = generateFakeWcs()
    sWcs = generateFakeWcs()
    tExp = afwImage.ExposureF(tMi, tWcs)
    sExp = afwImage.ExposureF(sMi, sWcs)
    tPsf = measAlg.DoubleGaussianPsf(21, 21, tSigma)
    sPsf = measAlg.DoubleGaussianPsf(21, 21, sSigma)
    tExp.setPsf(tPsf)
    sExp.setPsf(sPsf)
    return tExp, sExp
コード例 #7
0
    def testSnap(self):
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(bgValue = self.bgValue)

        tWcs = self.makeWcs(offset = 0)
        sWcs = self.makeWcs(offset = 0)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)
        psfMatchAL   = ipDiffim.SnapPsfMatchTask(config=self.configAL)
        psfMatchDF   = ipDiffim.SnapPsfMatchTask(config=self.configDF)
        psfMatchDFr  = ipDiffim.SnapPsfMatchTask(config=self.configDFr)
        psfMatchAL.subtractMaskedImages(tMi, sMi, psfMatchAL.makeCandidateList(tExp, sExp, self.ksize))
        psfMatchDF.subtractMaskedImages(tMi, sMi, psfMatchDF.makeCandidateList(tExp, sExp, self.ksize))
        psfMatchDFr.subtractMaskedImages(tMi, sMi, psfMatchDFr.makeCandidateList(tExp, sExp, self.ksize))
コード例 #8
0
ファイル: ImagePsfMatch.py プロジェクト: Daraexus/ip_diffim
    def testMatchExposures(self):
        # Only test 1 option
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(bgValue = self.bgValue)

        tWcs = self.makeWcs(offset = 0)
        sWcs = self.makeWcs(offset = 1)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)

        psfMatchAL = ipDiffim.ImagePsfMatchTask(config=self.configAL)
        resultsAL  = psfMatchAL.matchExposures(tExp, sExp,
                                               templateFwhmPix = 2.0, scienceFwhmPix = 3.0, doWarping = True)
        self.assertEqual(type(resultsAL.matchedExposure), afwImage.ExposureF)
        self.assertEqual(type(resultsAL.psfMatchingKernel), afwMath.LinearCombinationKernel)
        self.assertEqual(type(resultsAL.backgroundModel), afwMath.Function2D)
        self.assertEqual(type(resultsAL.kernelCellSet), afwMath.SpatialCellSet)
コード例 #9
0
ファイル: ImagePsfMatch.py プロジェクト: Daraexus/ip_diffim
    def testWarping(self):
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(bgValue = self.bgValue)

        tWcs = self.makeWcs(offset = 0)
        sWcs = self.makeWcs(offset = 1)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)

        # Should fail due to registration problem
        psfMatchAL  = ipDiffim.ImagePsfMatchTask(config=self.configAL)
        try:
            psfMatchAL.subtractExposures(tExp, sExp, doWarping = True)
        except Exception as e:
            print "testWarning failed with %r" % (e,)
            pass
        else:
            self.fail()
コード例 #10
0
    def testWarping(self):
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(
            bgValue=self.bgValue)

        tWcs = self.makeWcs(offset=0)
        sWcs = self.makeWcs(offset=1)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)

        # Should fail due to registration problem
        psfMatchAL = ipDiffim.ImagePsfMatchTask(config=self.configAL)
        try:
            psfMatchAL.subtractExposures(tExp, sExp, doWarping=True)
        except Exception as e:
            print("testWarning failed with %r" % (e, ))
            pass
        else:
            self.fail()
コード例 #11
0
    def testMatchExposures(self):
        # Only test 1 option
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(
            bgValue=self.bgValue)

        tWcs = self.makeWcs(offset=0)
        sWcs = self.makeWcs(offset=1)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)

        psfMatchAL = ipDiffim.ImagePsfMatchTask(config=self.configAL)
        resultsAL = psfMatchAL.matchExposures(tExp,
                                              sExp,
                                              templateFwhmPix=2.0,
                                              scienceFwhmPix=3.0,
                                              doWarping=True)
        self.assertEqual(type(resultsAL.matchedExposure), afwImage.ExposureF)
        self.assertEqual(type(resultsAL.psfMatchingKernel),
                         afwMath.LinearCombinationKernel)
        self.assertEqual(type(resultsAL.backgroundModel), afwMath.Function2D)
        self.assertEqual(type(resultsAL.kernelCellSet), afwMath.SpatialCellSet)
コード例 #12
0
    def testSubtractMaskedImages(self):
        # Lets do some additional testing here to make sure we recover
        # the known spatial model.  No background, just the faked
        # alard-lupton basis set.  The rest of matchMaskedImages() and
        # subtractMaskedImages() functionality is tested by the
        # Exposure-based methods.
        fakeCoeffs = diffimTools.fakeCoeffs()

        # Quick note; you shouldn't change confake here, since the
        # candidates in the KernelCellSet are initialized in
        # makeFakeKernelSet
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(
            bgValue=0.0, addNoise=False)

        svar = sMi.getVariance()
        svar.set(1.0)
        tvar = tMi.getVariance()
        tvar.set(1.0)

        basisList = ipDiffim.makeKernelBasisList(confake.kernel.active)
        psfMatchAL = ipDiffim.ImagePsfMatchTask(config=confake)
        spatialSolution, psfMatchingKernel, backgroundModel = psfMatchAL._solve(
            kcs, basisList)

        fitCoeffs = psfMatchingKernel.getSpatialParameters()

        for b in range(len(fakeCoeffs)):
            for s in range(len(fakeCoeffs[b])):

                if fakeCoeffs[b][s] == 0.0:
                    self.assertAlmostEqual(fitCoeffs[b][s], 0.0)
                else:
                    # OUTSTANDING ISSUE - WHY IS THIS ONE TERM OFF!?!?
                    if b != 4 and s != 0:
                        self.assertAlmostEqual(
                            fitCoeffs[b][s] / fakeCoeffs[b][s], 1.0, 1)
コード例 #13
0
    def testPca(self, nTerms=3):
        tMi, sMi, sK, kcs, confake = diffimTools.makeFakeKernelSet(
            bgValue=self.bgValue)

        tWcs = self.makeWcs(offset=0)
        sWcs = self.makeWcs(offset=0)
        tExp = afwImage.ExposureF(tMi, tWcs)
        sExp = afwImage.ExposureF(sMi, sWcs)
        sExp.setPsf(self.psf)

        self.subconfigDF.usePcaForSpatialKernel = True
        self.subconfigDF.numPrincipalComponents = nTerms

        psfMatchDF = ipDiffim.ImagePsfMatchTask(config=self.configDF)
        candList = psfMatchDF.makeCandidateList(tExp, sExp, self.ksize)
        resultsDF = psfMatchDF.subtractMaskedImages(tMi, sMi, candList)

        spatialKernel = resultsDF.psfMatchingKernel
        spatialKernelSolution = spatialKernel.getSpatialParameters()
        self.assertEqual(len(spatialKernelSolution), nTerms)

        # First basis has no spatial variation
        for i in range(1, nTerms):
            self.assertEqual(spatialKernelSolution[0][i], 0.)

        # All bases have correct number of terms
        sko = self.subconfigDF.spatialKernelOrder
        nSpatialTerms = int(0.5 * (sko + 1) * (sko + 2))
        for i in range(len(spatialKernelSolution)):
            self.assertEqual(len(spatialKernelSolution[i]), nSpatialTerms)

        spatialBg = resultsDF.backgroundModel
        spatialBgSolution = spatialBg.getParameters()
        bgo = self.subconfigDF.spatialBgOrder
        nBgTerms = int(0.5 * (bgo + 1) * (bgo + 2))
        self.assertEqual(len(spatialBgSolution), nBgTerms)