21 import lsst.pex.config
as pexConfig
24 from sqlalchemy.exc
import IntegrityError
28 """Config for MakeGen3DcrSubfiltersTask.
30 numSubfilters = pexConfig.Field(
31 doc=
"The number of subfilters to be used for chromatic modeling.",
36 filterNames = pexConfig.ListField(
37 doc=
"The filters to add chromatic subfilters to in the registry.",
45 ConfigClass = MakeGen3DcrSubfiltersConfig
46 _DefaultName =
"makeGen3DcrSubfilters"
48 """This is a task to construct the set of subfilters for chromatic modeling.
52 config : `MakeGen3DcrSubfiltersConfig` or None
53 Instance of a configuration class specifying task options, a default
54 config is created if value is None
58 super().
__init__(config=config, **kwargs)
60 def run(self, butler):
61 """Construct a set of subfilters for chromatic modeling.
65 butler : `lsst.daf.butler.Butler`
66 Butler repository to add the subfilter definitions to.
68 with butler.registry.transaction():
71 except IntegrityError
as err:
72 raise RuntimeError(f
"Subfilters for at least one filter of {self.config.filterNames} "
73 "are already defined.")
from err
76 """Add Subfilters to the given registry.
80 registry : `lsst.daf.butler.Registry`
81 The registry to add to.
84 for filterName
in self.config.filterNames:
85 self.log.info(f
"Initializing filter {filterName} with "
86 f
"{self.config.numSubfilters} subfilters")
87 for sub
in range(self.config.numSubfilters):
89 "abstract_filter": filterName,
92 registry.insertDimensionData(
"subfilter", *record)