23 __all__ = [
"BaseStarSelectorConfig",
"BaseStarSelectorTask",
"starSelectorRegistry"]
33 badFlags = pexConfig.ListField(
34 doc=
"List of flags which cause a source to be rejected as bad",
37 "base_PixelFlags_flag_edge",
38 "base_PixelFlags_flag_interpolatedCenter",
39 "base_PixelFlags_flag_saturatedCenter",
40 "base_PixelFlags_flag_crCenter",
41 "base_PixelFlags_flag_bad",
42 "base_PixelFlags_flag_interpolated",
48 """Base class for star selectors 50 Register all star selectors with the starSelectorRegistry using: 51 starSelectorRegistry.register(name, class) 55 ConfigClass = BaseStarSelectorConfig
56 _DefaultName =
"starSelector" 60 assert isinstance(schema, Schema)
61 pipeBase.Task.__init__(self, **kwds)
63 def run(self, exposure, sourceCat, matches=None, isStarField=None):
64 """Select stars and set a flag field True for stars in the input catalog. 68 exposure : `lsst.afw.image.Exposure` 69 the exposure containing the sources 70 sourceCat : `lsst.afw.table.SourceCatalog` 71 catalog of sources that may be stars 72 matches : `lsst.afw.table.ReferenceMatchVector` or None 73 astrometric matches; ignored by this star selector. Some star selectors 74 will ignore this argument, others may require it. See the 75 usesMatches class variable. 77 name of flag field to set True for stars, or None to not set a field; 78 the field is left unchanged for non-stars 82 struct : `lsst.pipe.base.Struct` 83 Result struct containing: 85 - starCat catalog of stars that were selected as stars and successfuly made into PSF candidates 86 (a subset of sourceCat whose records are shallow copies) 88 result = self.
selectStars(exposure=exposure, sourceCat=sourceCat, matches=matches)
90 if isStarField
is not None:
91 isStarKey = sourceCat.schema[isStarField].asKey()
92 for star
in result.starCat:
93 star.set(isStarKey,
True)
95 return pipeBase.Struct(starCat=result.starCat)
99 """Return a catalog of stars: a subset of sourceCat whose records are shallow copies 103 exposure : `lsst.afw.image.Exposure` 104 The exposure containing the sources. 105 sourceCat : `lsst.afw.table.SourceCatalog` 106 Catalog of sources that may be stars. 107 matches : `lsst.afw.table.ReferenceMatchVector` or None 108 astrometric matches; ignored by this star selector. Some star selectors 109 will ignore this argument, others may require it. See the usesMatches class variable. 113 struct : `lsst.pipe.base.Struct` 114 Result struct containing: 116 - starCat catalog of stars that were selected as stars and successfuly made into PSF candidates 117 (a subset of sourceCat whose records are shallow copies) 121 Warning: The returned catalog must have records that are shallow copies 122 (fortunately this is the default behavior when you add a record from one catalog to another); 123 otherwise the run method cannot set the isStarField flag in the original source catalog. 125 raise NotImplementedError(
"BaseStarSelectorTask is abstract, subclasses must override this method")
128 starSelectorRegistry = pexConfig.makeRegistry(
129 doc=
"A registry of star selectors (subclasses of BaseStarSelectorTask)",
def selectStars(self, exposure, sourceCat, matches=None)
def __init__(self, schema, kwds)
def run(self, exposure, sourceCat, matches=None, isStarField=None)