Registry and RegistryField for configuring subtasks¶
Example of a RegistryField
created from a Registry
object and use of both the Registry.register
method and the registerConfigurable
decorator:
psfDeterminerRegistry = pexConfig.makeRegistry("""A registry of PSF determiner factories.""")
class PcaPsfDeterminerConfig(pexConfig.Config):
spatialOrder = pexConfig.Field(
"Spatial order for PSF kernel creation.", int, 2)
[...]
@pexConfig.registerConfigurable("pca", psfDeterminerRegistry)
class PcaPsfDeterminer(object):
ConfigClass = PcaPsfDeterminerConfig
# Associate this Configurable class with its Config class for use
# by the registry.
def __init__(self, config, schema=None, **kwargs):
[...]
def determinePsf(self, exposure, psfCandidateList, metadata=None, **kwargs):
[...]
psfDeterminerRegistry.register("shapelet", ShapeletPsfDeterminer)
class MeasurePsfConfig(pexConfig.Config):
psfDeterminer = measAlg.psfDeterminerRegistry.makeField("PSF determination algorithm", default="pca")