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