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.
69 the exposure containing the sources
71 catalog of sources that may be stars
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
104 The exposure containing the sources.
106 Catalog of sources that may be stars.
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 `~lsst.pipe.base.Struct` containing:
117 Catalog of stars that were selected
as stars
and successfuly made into PSF candidates
118 (a subset of sourceCat whose records are shallow copies).
123 Warning: The returned catalog must have records that are shallow copies
124 (fortunately this
is the default behavior when you add a record
from one catalog to another);
125 otherwise the run method cannot set the isStarField flag
in the original source catalog.
127 raise NotImplementedError(
"BaseStarSelectorTask is abstract, subclasses must override this method")
130starSelectorRegistry = pexConfig.makeRegistry(
131 doc=
"A registry of star selectors (subclasses of BaseStarSelectorTask)",
run(self, exposure, sourceCat, matches=None, isStarField=None)
__init__(self, schema, **kwds)
selectStars(self, exposure, sourceCat, matches=None)