Types of configuration fields¶
Attributes of the configuration object must be subclasses of Field
.
A number of these are predefined: Field
, RangeField
, ChoiceField
, ListField
, ConfigField
, ConfigChoiceField
, RegistryField
and ConfigurableField
.
Example of RangeField
:
class BackgroundConfig(pexConfig.Config):
"""Parameters for controlling background estimation.
"""
binSize = pexConfig.RangeField(
doc=("How large a region of the sky should be "
"used for each background point."),
dtype=int, default=256, min=10
)
Example of ListField
and Config
inheritance:
class OutlierRejectedCoaddConfig(CoaddTask.ConfigClass):
"""Additional parameters for outlier-rejected coadds.
"""
subregionSize = pexConfig.ListField(
dtype=int,
doc=("width, height of stack subregion size; make "
"small enough that a full stack of images will "
"fit into memory at once."),
length=2,
default=(200, 200),
optional=None,
)
Examples of ChoiceField
and ConfigField
and the use of the Config
object’s Config.setDefaults
and Config.validate
methods:
class InitialPsfConfig(pexConfig.Config):
"""A config that describes the initial PSF used
for detection and measurement (before PSF
determination is done).
"""
model = pexConfig.ChoiceField(
dtype=str,
doc="PSF model type.",
default="SingleGaussian",
allowed={
"SingleGaussian": "Single Gaussian model",
"DoubleGaussian": "Double Gaussian model",
},
)
class CalibrateConfig(pexConfig.Config):
"""A config to configure the calibration of an Exposure.
"""
initialPsf = pexConfig.ConfigField(
dtype=InitialPsfConfig,
doc=InitialPsfConfig.__doc__)
detection = pexConfig.ConfigField(
dtype=measAlg.SourceDetectionTask.ConfigClass,
doc="Initial (high-threshold) detection phase for calibration."
)
def setDefaults(self):
self.detection.includeThresholdMultiplier = 10.0
def validate(self):
pexConfig.Config.validate(self)
if self.doComputeApCorr and not self.doPsf:
raise ValueError("Cannot compute aperture correction "
"without doing PSF determination.")