Skip to content

Commit

Permalink
Alternate option to enable DCR multiband source measurements.
Browse files Browse the repository at this point in the history
  • Loading branch information
isullivan committed May 25, 2018
1 parent ed54463 commit 2ca7b09
Showing 1 changed file with 36 additions and 7 deletions.
43 changes: 36 additions & 7 deletions python/lsst/pipe/tasks/multiBand.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
from lsst.meas.algorithms import DynamicDetectionTask, SkyObjectsTask
from lsst.meas.base import SingleFrameMeasurementTask, ApplyApCorrTask, CatalogCalculationTask
from lsst.meas.deblender import SourceDeblendTask
import lsst.pipe.base as pipeBase
from lsst.pipe.tasks.coaddBase import getSkyInfo
from lsst.pipe.tasks.scaleVariance import ScaleVarianceTask
from lsst.meas.astrom import DirectMatchTask, denormalizeMatches
Expand Down Expand Up @@ -237,7 +238,9 @@ class DetectCoaddSourcesTask(CmdLineTask):
@classmethod
def _makeArgumentParser(cls):
parser = ArgumentParser(name=cls._DefaultName)
parser.add_id_argument("--id", "deepCoadd", help="data ID, e.g. --id tract=12345 patch=1,2 filter=r",
parser.add_id_argument(name = "--id",
datasetType=pipeBase.DatasetArgument(default="deepCoadd"),
help="data ID, e.g. --id tract=12345 patch=1,2 filter=r",
ContainerClass=ExistingCoaddDataIdContainer)
return parser

Expand Down Expand Up @@ -362,6 +365,13 @@ def getTargetList(parsedCmd, **kwargs):
filter
"""
refList = {} # Will index this as refList[tract][patch][filter] = ref
try:
# If multiple DCR subfilters are present, then there may be multiple
# references to the same filter.
parsedCmd.id.refList[0].dataId["subfilter"]
useDcr = True
except KeyError:
useDcr = False
for ref in parsedCmd.id.refList:
tract = ref.dataId["tract"]
patch = ref.dataId["patch"]
Expand All @@ -370,10 +380,27 @@ def getTargetList(parsedCmd, **kwargs):
refList[tract] = {}
if patch not in refList[tract]:
refList[tract][patch] = {}
if filter in refList[tract][patch]:
raise RuntimeError("Multiple versions of %s" % (ref.dataId,))
refList[tract][patch][filter] = ref
return [(list(p.values()), kwargs) for t in refList.values() for p in t.values()]
if useDcr:
subfilter = ref.dataId["subfilter"]
if filter not in refList[tract][patch]:
refList[tract][patch][filter] = {}
if subfilter in refList[tract][patch][filter]:
raise RuntimeError("Multiple versions of %s" % (ref.dataId,))
refList[tract][patch][filter][subfilter] = ref
else:
if filter in refList[tract][patch]:
raise RuntimeError("Multiple versions of %s" % (ref.dataId,))
refList[tract][patch][filter] = ref
if useDcr:
targetList = [(list(f.values()), kwargs)
for t in list(refList.values())
for p in list(t.values())
for f in list(p.values())]
else:
targetList = [(list(p.values()), kwargs)
for t in refList.values()
for p in t.values()]
return targetList


class MergeSourcesConfig(Config):
Expand Down Expand Up @@ -430,7 +457,8 @@ def _makeArgumentParser(cls):
of data references for the same patch
"""
parser = ArgumentParser(name=cls._DefaultName)
parser.add_id_argument("--id", "deepCoadd_" + cls.inputDataset,
parser.add_id_argument(name="--id",
datasetType=pipeBase.DatasetArgument(default="deepCoadd_" + cls.inputDataset),
ContainerClass=ExistingCoaddDataIdContainer,
help="data ID, e.g. --id tract=12345 patch=1,2 filter=g^r^i")
return parser
Expand Down Expand Up @@ -1009,7 +1037,8 @@ class MeasureMergedCoaddSourcesTask(CmdLineTask):
@classmethod
def _makeArgumentParser(cls):
parser = ArgumentParser(name=cls._DefaultName)
parser.add_id_argument("--id", "deepCoadd_calexp",
parser.add_id_argument(name="--id",
datasetType=pipeBase.DatasetArgument(default="deepCoadd_calexp"),
help="data ID, e.g. --id tract=12345 patch=1,2 filter=r",
ContainerClass=ExistingCoaddDataIdContainer)
parser.add_argument("--psfCache", type=int, default=100, help="Size of CoaddPsf cache")
Expand Down

0 comments on commit 2ca7b09

Please sign in to comment.