def setupDeterminer(self, exposure): """Setup the starSelector and psfDeterminer""" starSelectorClass = measAlg.sourceSelectorRegistry["objectSize"] starSelectorConfig = starSelectorClass.ConfigClass() starSelectorConfig.sourceFluxField = "base_GaussianFlux_flux" starSelectorConfig.badFlags = [ "base_PixelFlags_flag_edge", "base_PixelFlags_flag_interpolatedCenter", "base_PixelFlags_flag_saturatedCenter", "base_PixelFlags_flag_crCenter", ] starSelectorConfig.widthStdAllowed = 0.5 # Set to match when the tolerance of the test was set self.starSelector = starSelectorClass(config=starSelectorConfig) self.makePsfCandidates = measAlg.MakePsfCandidatesTask() psfDeterminerClass = measAlg.psfDeterminerRegistry["psfex"] psfDeterminerConfig = psfDeterminerClass.ConfigClass() width, height = exposure.getMaskedImage().getDimensions() psfDeterminerConfig.sizeCellX = width psfDeterminerConfig.sizeCellY = height // 3 psfDeterminerConfig.spatialOrder = 1 self.psfDeterminer = psfDeterminerClass(psfDeterminerConfig)
def setUp(self): self.psfCandidateField = "psfCandidate" self.catalog = makeEmptyCatalog(self.psfCandidateField) # id=0 is bad because it's on the edge, so fails with a WARN: LengthError. self.badIds = [ 1, ] self.goodIds = [2, 3] # x and y coordinate: keep these in sync with the above good/bad list. self.xCoords = [0, 100, 200] self.yCoords = [0, 100, 20] self.exposure = afwImage.ExposureF(256, 256) self.exposure.getMaskedImage().getVariance().set(0.01) for x, y in zip(self.xCoords, self.yCoords): createFakeSource(x, y, self.catalog, self.exposure, 0.1) self.makePsfCandidates = measAlg.MakePsfCandidatesTask()
def setupDeterminer(self, exposure=None, nEigenComponents=2, starSelectorAlg="objectSize"): """Setup the starSelector and psfDeterminer.""" if exposure is None: exposure = self.exposure starSelectorClass = measAlg.sourceSelectorRegistry[starSelectorAlg] starSelectorConfig = starSelectorClass.ConfigClass() if starSelectorAlg == "objectSize": starSelectorConfig.sourceFluxField = "base_GaussianFlux_flux" starSelectorConfig.badFlags = [ "base_PixelFlags_flag_edge", "base_PixelFlags_flag_interpolatedCenter", "base_PixelFlags_flag_saturatedCenter", "base_PixelFlags_flag_crCenter", ] starSelectorConfig.widthStdAllowed = 0.5 self.starSelector = starSelectorClass(config=starSelectorConfig) self.makePsfCandidates = measAlg.MakePsfCandidatesTask() psfDeterminerTask = measAlg.psfDeterminerRegistry["pca"] psfDeterminerConfig = psfDeterminerTask.ConfigClass() width, height = exposure.getMaskedImage().getDimensions() psfDeterminerConfig.sizeCellX = width psfDeterminerConfig.sizeCellY = height // 3 psfDeterminerConfig.nEigenComponents = nEigenComponents psfDeterminerConfig.spatialOrder = 1 psfDeterminerConfig.kernelSizeMin = 31 psfDeterminerConfig.nStarPerCell = 0 psfDeterminerConfig.nStarPerCellSpatialFit = 0 # unlimited self.psfDeterminer = psfDeterminerTask(psfDeterminerConfig)
def setUp(self): np.random.seed(500) # make test repeatable self.x0, self.y0 = 0, 0 self.nx, self.ny = 512, 512 # 2048, 4096 self.sky = 100.0 self.nObj = 100 # make a detector with distortion self.detector = DetectorWrapper( bbox=afwGeom.Box2I(afwGeom.Point2I(0, 0), afwGeom.Extent2I(self.nx, self.ny)), orientation=cameraGeom.Orientation(afwGeom.Point2D(255.0, 255.0)), radialDistortion=0.925, ).detector # make a detector with no distortion self.flatDetector = DetectorWrapper( bbox=afwGeom.Box2I(afwGeom.Point2I(0, 0), afwGeom.Extent2I(self.nx, self.ny)), orientation=cameraGeom.Orientation(afwGeom.Point2D(255.0, 255.0)), radialDistortion=0.0, ).detector # detection policies detConfig = measAlg.SourceDetectionConfig() # Cannot use default background approximation order (6) for such a small image. detConfig.background.approxOrderX = 4 # measurement policies measConfig = measBase.SingleFrameMeasurementConfig() measConfig.algorithms.names = [ "base_SdssCentroid", "base_SdssShape", "base_GaussianFlux", "base_PsfFlux", ] measConfig.slots.centroid = "base_SdssCentroid" measConfig.slots.shape = "base_SdssShape" measConfig.slots.psfFlux = "base_PsfFlux" measConfig.plugins["base_SdssCentroid"].doFootprintCheck = False measConfig.slots.apFlux = None measConfig.slots.modelFlux = None measConfig.slots.instFlux = None measConfig.slots.calibFlux = None self.schema = afwTable.SourceTable.makeMinimalSchema() detConfig.validate() measConfig.validate() self.detTask = measAlg.SourceDetectionTask(config=detConfig, schema=self.schema) self.measTask = measBase.SingleFrameMeasurementTask(config=measConfig, schema=self.schema) # psf star selector starSelectorClass = measAlg.sourceSelectorRegistry["objectSize"] starSelectorConfig = starSelectorClass.ConfigClass() starSelectorConfig.fluxMin = 5000.0 starSelectorConfig.badFlags = [] self.starSelector = starSelectorClass(config=starSelectorConfig) self.makePsfCandidates = measAlg.MakePsfCandidatesTask() # psf determiner psfDeterminerFactory = measAlg.psfDeterminerRegistry["pca"] psfDeterminerConfig = psfDeterminerFactory.ConfigClass() width, height = self.nx, self.ny nEigenComponents = 3 psfDeterminerConfig.sizeCellX = width // 3 psfDeterminerConfig.sizeCellY = height // 3 psfDeterminerConfig.nEigenComponents = nEigenComponents psfDeterminerConfig.spatialOrder = 1 psfDeterminerConfig.kernelSizeMin = 31 psfDeterminerConfig.nStarPerCell = 0 psfDeterminerConfig.nStarPerCellSpatialFit = 0 # unlimited self.psfDeterminer = psfDeterminerFactory(psfDeterminerConfig)