Skip to content

Commit

Permalink
Merge pull request #450 from lsst/tickets/DM-27722
Browse files Browse the repository at this point in the history
tickets/DM-27722
  • Loading branch information
fred3m committed Jan 14, 2021
2 parents 55224fe + 517b7ab commit 006371a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 37 deletions.
30 changes: 11 additions & 19 deletions python/lsst/pipe/tasks/deblendCoaddSourcesPipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,28 +114,17 @@ class DeblendCoaddSourcesMultiConnections(PipelineTaskConnections,
)
outputSchema = cT.InitOutput(
doc="Output of the schema used in deblending task",
name="{outputCoaddName}Coadd_deblendedModel_schema",
name="{outputCoaddName}Coadd_deblendedFlux_schema",
storageClass="SourceCatalog"
)
fluxCatalogs = cT.Output(
doc="Flux catalogs produced by multiband deblending, not written "
"if conserve flux is turned off",
name="{outputCoaddName}Coadd_deblendedFlux",
storageClass="SourceCatalog",
dimensions=("tract", "patch", "band", "skymap")
)
templateCatalogs = cT.Output(
doc="Template catalogs produced by multiband deblending",
name="{outputCoaddName}Coadd_deblendedModel",
name="{outputCoaddName}Coadd_deblendedFlux",
storageClass="SourceCatalog",
dimensions=("tract", "patch", "band", "skymap")
dimensions=("tract", "patch", "band", "skymap"),
multiple=True
)

def __init__(self, *, config=None):
super().__init__(config=config)
if not config.multibandDeblend.conserveFlux:
self.outputs -= set(("fluxCatalogs",))


class DeblendCoaddSourcesMultiConfig(PipelineTaskConfig,
pipelineConnections=DeblendCoaddSourcesMultiConnections):
Expand Down Expand Up @@ -200,13 +189,16 @@ def runQuantum(self, butlerQC, inputRefs, outputRefs):
inputs["idFactory"] = afwTable.IdFactory.makeSource(packedId, 64 - maxBits)
inputs["filters"] = [dRef.dataId["band"] for dRef in inputRefs.coadds]
outputs = self.run(**inputs)
sortedTemplateCatalogs = []
for outRef in outputRefs.templateCatalogs:
band = outRef.dataId['band']
sortedTemplateCatalogs.append(outputs.templateCatalogs[band])
outputs.templateCatalogs = sortedTemplateCatalogs
butlerQC.put(outputs, outputRefs)

def run(self, coadds, filters, mergedDetections, idFactory):
sources = self._makeSourceCatalog(mergedDetections, idFactory)
multiExposure = afwImage.MultibandExposure.fromExposures(filters, coadds)
fluxCatalogs, templateCatalogs = self.multibandDeblend.run(multiExposure, sources)
retStruct = Struct(templateCatalogs)
if self.config.multibandDeblend.conserveFlux:
retStruct.fluxCatalogs = fluxCatalogs
templateCatalogs = self.multibandDeblend.run(multiExposure, sources)
retStruct = Struct(templateCatalogs=templateCatalogs)
return retStruct
24 changes: 6 additions & 18 deletions python/lsst/pipe/tasks/multiBand.py
Original file line number Diff line number Diff line change
Expand Up @@ -492,10 +492,9 @@ def runDataRef(self, patchRefList, psfCache=100):
# The input sources are the same for all bands, since it is a merged catalog
sources = self.readSources(patchRef)
exposure = afwImage.MultibandExposure.fromExposures(filters, exposures)
fluxCatalogs, templateCatalogs = self.multiBandDeblend.run(exposure, sources)
templateCatalogs = self.multiBandDeblend.run(exposure, sources)
for n in range(len(patchRefList)):
fluxCat = fluxCatalogs if fluxCatalogs is None else fluxCatalogs[filters[n]]
self.write(patchRefList[n], fluxCat, templateCatalogs[filters[n]])
self.write(patchRefList[n], templateCatalogs[filters[n]])
else:
# Use the singeband deblender to deblend each band separately
for patchRef in patchRefList:
Expand Down Expand Up @@ -534,34 +533,23 @@ def readSources(self, dataRef):
sources.extend(merged, self.schemaMapper)
return sources

def write(self, dataRef, flux_sources, template_sources=None):
def write(self, dataRef, sources):
"""Write the source catalog(s)
Parameters
----------
dataRef: Data Reference
Reference to the output catalog.
flux_sources: `SourceCatalog`
sources: `SourceCatalog`
Flux conserved sources to write to file.
If using the single band deblender, this is the catalog
generated.
template_sources: `SourceCatalog`
Source catalog using the multiband template models
as footprints.
"""
# The multiband deblender does not have to conserve flux,
# so only write the flux conserved catalog if it exists
if flux_sources is not None:
assert not self.config.simultaneous or self.config.multiBandDeblend.conserveFlux
dataRef.put(flux_sources, self.config.coaddName + "Coadd_deblendedFlux")
self.log.info("Wrote %d sources: %s" % (len(flux_sources), dataRef.dataId))
# Only the multiband deblender has the option to output the
# template model catalog, which can optionally be used
# in MeasureMergedCoaddSources
if template_sources is not None:
assert self.config.multiBandDeblend.saveTemplates
dataRef.put(template_sources, self.config.coaddName + "Coadd_deblendedModel")
self.log.info("Wrote %d sources: %s" % (len(template_sources), dataRef.dataId))
dataRef.put(sources, self.config.coaddName + "Coadd_deblendedFlux")
self.log.info("Wrote %d sources: %s" % (len(sources), dataRef.dataId))

def writeMetadata(self, dataRefList):
"""Write the metadata produced from processing the data.
Expand Down

0 comments on commit 006371a

Please sign in to comment.