コード例 #1
0
    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)
コード例 #2
0
    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()
コード例 #3
0
    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)
コード例 #4
0
    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)