예제 #1
0
    def __init__(self, config, *, display=None, **kwargs):
        super().__init__(config=config, **kwargs)
        self.makeSubtask("installPsf")

        self.display = None
        if display:
            self.display = display

        self.centroidName = "base_SdssCentroid"
        self.shapeName = "base_SdssShape"
        self.schema = afwTable.SourceTable.makeMinimalSchema()
        self.schema.getAliasMap().set("slot_Centroid", self.centroidName)
        self.schema.getAliasMap().set("slot_Shape", self.shapeName)
        self.control = measBase.SdssCentroidControl()
        self.centroider = measBase.SdssCentroidAlgorithm(
            self.control, self.centroidName, self.schema)
        self.sdssShape = measBase.SdssShapeControl()
        self.shaper = measBase.SdssShapeAlgorithm(self.sdssShape,
                                                  self.shapeName, self.schema)
        self.apFluxControl = measBase.ApertureFluxControl()
        md = dafBase.PropertySet()
        self.apFluxer = measBase.CircularApertureFluxAlgorithm(
            self.apFluxControl, "aperFlux", self.schema, md)

        self.table = afwTable.SourceTable.make(
            self.schema)  # make sure to call this last!
예제 #2
0
    def testCircularApertureMeasure(self):
        mi = afwImage.MaskedImageF(afwGeom.ExtentI(100, 200))
        mi.set(10)
        #
        # Create our measuring engine
        #

        radii = (1.0, 5.0, 10.0)  # radii to use

        control = measBase.ApertureFluxControl()
        control.radii = radii

        exp = afwImage.makeExposure(mi)
        x0, y0 = 1234, 5678
        exp.setXY0(afwGeom.Point2I(x0, y0))

        plugin, cat = makePluginAndCat(measBase.CircularApertureFluxAlgorithm,
                                       "test",
                                       control,
                                       True,
                                       centroid="centroid")
        source = cat.makeRecord()
        source.set("centroid_x", 30 + x0)
        source.set("centroid_y", 50 + y0)
        plugin.measure(source, exp)

        for r in radii:
            currentFlux = source.get(
                "%s_flux" %
                measBase.CircularApertureFluxAlgorithm.makeFieldPrefix(
                    "test", r))
            self.assertAlmostEqual(10.0 * math.pi * r * r / currentFlux,
                                   1.0,
                                   places=4)