def testGetCollection(self): # NOTE - you need to subtract off background from the image # you run detection on. Here it is the template. bgConfig = self.subconfig.afwBackgroundConfig diffimTools.backgroundSubtract(bgConfig, [ self.templateImage, ]) detConfig = self.subconfig.detectionConfig maskPlane = detConfig.badMaskPlanes[0] maskVal = afwImage.Mask.getPlaneBitMask(maskPlane) kcDetect = ipDiffim.KernelCandidateDetectionF( pexConfig.makePolicy(detConfig)) kcDetect.apply(self.templateImage, self.scienceImage) fpList1 = kcDetect.getFootprints() self.assertNotEqual(len(fpList1), 0) for fp in fpList1: bbox = fp.getBBox() tmi = afwImage.MaskedImageF(self.templateImage, bbox, origin=afwImage.LOCAL) smi = afwImage.MaskedImageF(self.scienceImage, bbox, origin=afwImage.LOCAL) tmask = tmi.getMask() smask = smi.getMask() for j in range(tmask.getHeight()): for i in range(tmask.getWidth()): # No masked pixels in either image self.assertEqual(tmask.get(i, j), 0) self.assertEqual(smask.get(i, j), 0) # add a masked pixel to the template image and make sure you don't get it afwImage.MaskedImageF(self.templateImage, fpList1[0].getBBox(), origin=afwImage.LOCAL).getMask().set( tmask.getWidth() // 2, tmask.getHeight() // 2, maskVal) kcDetect.apply(self.templateImage, self.scienceImage) fpList2 = kcDetect.getFootprints() self.assertEqual(len(fpList2), (len(fpList1) - 1)) # add a masked pixel to the science image and make sure you don't get it afwImage.MaskedImageF(self.scienceImage, fpList1[1].getBBox(), origin=afwImage.LOCAL).getMask().set( smask.getWidth() // 2, smask.getHeight() // 2, maskVal) afwImage.MaskedImageF(self.scienceImage, fpList1[2].getBBox(), origin=afwImage.LOCAL).getMask().set( smask.getWidth() // 2, smask.getHeight() // 2, maskVal) kcDetect.apply(self.templateImage, self.scienceImage) fpList3 = kcDetect.getFootprints() self.assertEqual(len(fpList3), (len(fpList1) - 3))
def setUp(self, CFHT=True): lambdaValue = 1.0 self.config1 = ipDiffim.ImagePsfMatchTask.ConfigClass() self.config1.kernel.name = "DF" self.subconfig1 = self.config1.kernel.active self.config2 = ipDiffim.ImagePsfMatchTask.ConfigClass() self.config2.kernel.name = "DF" self.subconfig2 = self.config2.kernel.active self.config3 = ipDiffim.ImagePsfMatchTask.ConfigClass() self.config3.kernel.name = "DF" self.subconfig3 = self.config3.kernel.active self.config4 = ipDiffim.ImagePsfMatchTask.ConfigClass() self.config4.kernel.name = "DF" self.subconfig4 = self.config4.kernel.active self.subconfig1.useRegularization = False self.subconfig2.useRegularization = True self.subconfig2.lambdaType = "absolute" self.subconfig2.lambdaValue = lambdaValue self.subconfig2.regularizationType = "centralDifference" self.subconfig2.centralRegularizationStencil = 5 self.subconfig3.useRegularization = True self.subconfig3.lambdaType = "absolute" self.subconfig3.lambdaValue = lambdaValue self.subconfig3.regularizationType = "centralDifference" self.subconfig3.centralRegularizationStencil = 9 self.subconfig4.useRegularization = True self.subconfig4.lambdaType = "absolute" self.subconfig4.lambdaValue = lambdaValue self.subconfig4.regularizationType = "forwardDifference" self.subconfig4.forwardRegularizationOrders = [1, 2] self.kList1 = ipDiffim.makeKernelBasisList(self.subconfig1) self.bskv1 = ipDiffim.BuildSingleKernelVisitorF( self.kList1, pexConfig.makePropertySet(self.subconfig1)) self.kList2 = ipDiffim.makeKernelBasisList(self.subconfig2) self.hMat2 = ipDiffim.makeRegularizationMatrix( pexConfig.makePropertySet(self.subconfig2)) self.bskv2 = ipDiffim.BuildSingleKernelVisitorF( self.kList2, pexConfig.makePropertySet(self.subconfig2), self.hMat2) self.kList3 = ipDiffim.makeKernelBasisList(self.subconfig3) self.hMat3 = ipDiffim.makeRegularizationMatrix( pexConfig.makePropertySet(self.subconfig3)) self.bskv3 = ipDiffim.BuildSingleKernelVisitorF( self.kList3, pexConfig.makePropertySet(self.subconfig3), self.hMat3) self.kList4 = ipDiffim.makeKernelBasisList(self.subconfig4) self.hMat4 = ipDiffim.makeRegularizationMatrix( pexConfig.makePropertySet(self.subconfig4)) self.bskv4 = ipDiffim.BuildSingleKernelVisitorF( self.kList4, pexConfig.makePropertySet(self.subconfig4), self.hMat4) # known input images defDataDir = lsst.utils.getPackageDir('afwdata') if CFHT: defSciencePath = os.path.join(defDataDir, 'CFHT', 'D4', CFHTTORUN + '.fits') defTemplatePath = os.path.join(defDataDir, 'CFHT', 'D4', CFHTTORUN + '_tmpl.fits') # no need to remap self.scienceExposure = afwImage.ExposureF(defSciencePath) self.templateExposure = afwImage.ExposureF(defTemplatePath) else: defSciencePath = os.path.join(defDataDir, "DC3a-Sim", "sci", "v26-e0", "v26-e0-c011-a00.sci") defTemplatePath = os.path.join(defDataDir, "DC3a-Sim", "sci", "v5-e0", "v5-e0-c011-a00.sci") self.scienceExposure = afwImage.ExposureF(defSciencePath) self.templateExposure = afwImage.ExposureF(defTemplatePath) warper = afwMath.Warper.fromConfig(self.subconfig1.warpingConfig) self.templateExposure = warper.warpExposure( self.scienceExposure.getWcs(), self.templateExposure, destBBox=self.scienceExposure.getBBox()) diffimTools.backgroundSubtract(self.subconfig1.afwBackgroundConfig, [ self.scienceExposure.getMaskedImage(), self.templateExposure.getMaskedImage() ]) # tmi = self.templateExposure.getMaskedImage() smi = self.scienceExposure.getMaskedImage() detConfig = self.subconfig1.detectionConfig detps = pexConfig.makePropertySet(detConfig) detps["detThreshold"] = 50. detps["detOnTemplate"] = False kcDetect = ipDiffim.KernelCandidateDetectionF(detps) kcDetect.apply(tmi, smi) self.footprints = kcDetect.getFootprints()
def setUp(self): self.configAL = ipDiffim.ImagePsfMatchTask.ConfigClass() self.configAL.kernel.name = "AL" self.subconfigAL = self.configAL.kernel.active self.configDF = ipDiffim.ImagePsfMatchTask.ConfigClass() self.configDF.kernel.name = "DF" self.subconfigDF = self.configDF.kernel.active self.configDFr = ipDiffim.ImagePsfMatchTask.ConfigClass() self.configDFr.kernel.name = "DF" self.subconfigDFr = self.configDFr.kernel.active self.subconfigDF.useRegularization = False self.subconfigDFr.useRegularization = True self.subconfigDFr.lambdaValue = 1000.0 self.subconfigAL.fitForBackground = fitForBackground self.subconfigDF.fitForBackground = fitForBackground self.subconfigDFr.fitForBackground = fitForBackground self.subconfigAL.constantVarianceWeighting = constantVarianceWeighting self.subconfigDF.constantVarianceWeighting = constantVarianceWeighting self.subconfigDFr.constantVarianceWeighting = constantVarianceWeighting self.kListAL = ipDiffim.makeKernelBasisList(self.subconfigAL) self.kListDF = ipDiffim.makeKernelBasisList(self.subconfigDF) self.kListDFr = ipDiffim.makeKernelBasisList(self.subconfigDFr) self.hMatDFr = ipDiffim.makeRegularizationMatrix( pexConfig.makePropertySet(self.subconfigDFr)) self.bskvAL = ipDiffim.BuildSingleKernelVisitorF( self.kListAL, pexConfig.makePropertySet(self.subconfigAL)) self.bskvDF = ipDiffim.BuildSingleKernelVisitorF( self.kListDF, pexConfig.makePropertySet(self.subconfigDF)) self.bskvDFr = ipDiffim.BuildSingleKernelVisitorF( self.kListDFr, pexConfig.makePropertySet(self.subconfigDF), self.hMatDFr) defSciencePath = globals()['defSciencePath'] defTemplatePath = globals()['defTemplatePath'] if defSciencePath and defTemplatePath: self.scienceExposure = afwImage.ExposureF(defSciencePath) self.templateExposure = afwImage.ExposureF(defTemplatePath) else: defDataDir = lsst.utils.getPackageDir('afwdata') defSciencePath = os.path.join(defDataDir, "DC3a-Sim", "sci", "v26-e0", "v26-e0-c011-a00.sci.fits") defTemplatePath = os.path.join(defDataDir, "DC3a-Sim", "sci", "v5-e0", "v5-e0-c011-a00.sci.fits") self.scienceExposure = afwImage.ExposureF(defSciencePath) self.templateExposure = afwImage.ExposureF(defTemplatePath) warper = afwMath.Warper.fromConfig(self.subconfigAL.warpingConfig) self.templateExposure = warper.warpExposure( self.scienceExposure.getWcs(), self.templateExposure, destBBox=self.scienceExposure.getBBox()) # tmi = self.templateExposure.getMaskedImage() smi = self.scienceExposure.getMaskedImage() # Object detection detConfig = self.subconfigAL.detectionConfig detps = pexConfig.makePropertySet(detConfig) detps["detThreshold"] = 50. detps["detThresholdType"] = "stdev" detps["detOnTemplate"] = False kcDetect = ipDiffim.KernelCandidateDetectionF(detps) kcDetect.apply(tmi, smi) self.footprints = kcDetect.getFootprints()
configDFr = ipDiffim.ImagePsfMatchTask.ConfigClass() configDFr.kernel.name = "DF" subconfigDFr = configDFr.kernel.active subconfigDF.useRegularization = False subconfigDFr.useRegularization = True for param in [["spatialKernelOrder", 0], ["spatialBgOrder", 0], ["usePcaForSpatialKernel", True], ["fitForBackground", True]]: exec("subconfigAL.%s = %s" % (param[0], param[1])) exec("subconfigDF.%s = %s" % (param[0], param[1])) exec("subconfigDFr.%s = %s" % (param[0], param[1])) detConfig = subconfigAL.detectionConfig kcDetect = ipDiffim.KernelCandidateDetectionF( pexConfig.makePropertySet(detConfig)) kcDetect.apply(templateMaskedImage, scienceMaskedImage) footprints = kcDetect.getFootprints() # delta function psfmatch1 = ipDiffim.ImagePsfMatchTask(config=configDF) results1 = psfmatch1.subtractMaskedImages(templateMaskedImage, scienceMaskedImage, candidateList=footprints) diffim1 = results1.subtractedMaskedImage spatialKernel1 = results1.psfMatchingKernel spatialBg1 = results1.backgroundModel kernelCellSet1 = results1.kernelCellSet # alard lupton psfmatch2 = ipDiffim.ImagePsfMatchTask(config=configAL)
configDFr = ipDiffim.ImagePsfMatchTask.ConfigClass() configDFr.kernel.name = "DF" subconfigDFr = configDFr.kernel.active subconfigDF.useRegularization = False subconfigDFr.useRegularization = True for param in [["spatialKernelOrder", 0], ["spatialBgOrder", 0], ["usePcaForSpatialKernel", True], ["fitForBackground", True]]: exec("subconfigAL.%s = %s" % (param[0], param[1])) exec("subconfigDF.%s = %s" % (param[0], param[1])) exec("subconfigDFr.%s = %s" % (param[0], param[1])) detConfig = subconfigAL.detectionConfig kcDetect = ipDiffim.KernelCandidateDetectionF(pexConfig.makePolicy(detConfig)) kcDetect.apply(templateMaskedImage, scienceMaskedImage) footprints = kcDetect.getFootprints() # delta function psfmatch1 = ipDiffim.ImagePsfMatchTask(config=configDF) results1 = psfmatch1.run(templateMaskedImage, scienceMaskedImage, "subtractMaskedImages", candidateList=footprints) diffim1 = results1.subtractedImage spatialKernel1 = results1.psfMatchingKernel spatialBg1 = results1.backgroundModel kernelCellSet1 = results1.kernelCellSet # alard lupton