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.")