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!
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)