31 doDeblend = pexConfig.Field(dtype=bool, default=
True, doc=
"Deblend sources?")
32 doMeasurement = pexConfig.Field(dtype=bool, default=
True, doc=
"Measure sources?")
33 doWriteSources = pexConfig.Field(dtype=bool, default=
True, doc=
"Write sources?")
34 doWriteHeavyFootprintsInSources = pexConfig.Field(dtype=bool, default=
False,
35 doc=
"Include HeavyFootprint data in source table?")
37 sourceOutputFile = pexConfig.Field(
38 dtype=str, default=
None, doc=
"Write sources to given filename (default: use butler)", optional=
True)
40 deblend = pexConfig.ConfigurableField(
41 target=SourceDeblendTask,
42 doc=
"Split blended sources into their components",
44 measurement = pexConfig.ConfigurableField(
45 target=SourceMeasurementTask,
46 doc=
"Final source measurement on low-threshold detections",
51 ConfigClass = DeblendAndMeasureConfig
52 _DefaultName =
"deblendAndMeasure" 58 pipeBase.CmdLineTask.__init__(self, **kwargs)
61 def run(self, dataRef):
62 self.log.info(
"Processing %s" % (dataRef.dataId))
63 calexp = dataRef.get(
'calexp')
64 srcs = dataRef.get(
'src')
65 print(
'Calexp:', calexp)
72 mapper = afwTable.SchemaMapper(srcs.getSchema())
74 mapper.addMinimalSchema(srcs.getSchema(),
True)
75 schema = mapper.getOutputSchema()
77 if self.config.doDeblend:
78 self.makeSubtask(
"deblend", schema=schema)
79 if self.config.doMeasurement:
80 self.makeSubtask(
"measurement", schema=schema, algMetadata=self.
algMetadata)
85 if src.getParent() == 0:
88 outsources = afwTable.SourceCatalog(schema)
89 outsources.reserve(len(parents))
90 outsources.extend(parents, mapper=mapper)
92 print(len(srcs),
'sources before deblending')
94 if self.config.doDeblend:
95 self.deblend.
run(calexp, srcs)
97 if self.config.doMeasurement:
98 self.measurement.
run(calexp, srcs)
100 if srcs
is not None and self.config.doWriteSources:
101 sourceWriteFlags = (0
if self.config.doWriteHeavyFootprintsInSources
102 else afwTable.SOURCE_IO_NO_HEAVY_FOOTPRINTS)
103 print(
'Writing "src" outputs')
104 if self.config.sourceOutputFile:
105 srcs.writeFits(self.config.sourceOutputFile, flags=sourceWriteFlags)
107 dataRef.put(srcs,
'src', flags=sourceWriteFlags)
110 if __name__ ==
'__main__':
111 DeblendAndMeasureTask.parseAndRun()
def __init__(self, kwargs)
def writeConfig(self, args, kwargs)