LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | Static Private Attributes | List of all members
lsst.pipe.tasks.multiBand.MergeDetectionsTask Class Reference
Inheritance diagram for lsst.pipe.tasks.multiBand.MergeDetectionsTask:
lsst.pipe.tasks.multiBand.MergeSourcesTask

Public Member Functions

def __init__
 
def mergeCatalogs
 
def cullPeaks
 
def getSchemaCatalogs
 
- Public Member Functions inherited from lsst.pipe.tasks.multiBand.MergeSourcesTask
def getInputSchema
 
def __init__
 
def run
 
def readCatalog
 
def mergeCatalogs
 
def write
 
def writeMetadata
 

Public Attributes

 schema
 
 merged
 

Static Public Attributes

 ConfigClass = MergeDetectionsConfig
 
string inputDataset = "det"
 
string outputDataset = "mergeDet"
 
tuple makeIdFactory = _makeMakeIdFactory("MergedCoaddId")
 
- Static Public Attributes inherited from lsst.pipe.tasks.multiBand.MergeSourcesTask
 ConfigClass = MergeSourcesConfig
 
 RunnerClass = MergeSourcesRunner
 
 inputDataset = None
 
 outputDataset = None
 
 getSchemaCatalogs = None
 

Static Private Attributes

string _DefaultName = "mergeCoaddDetections"
 

Detailed Description

Merge detections from multiple bands

Definition at line 386 of file multiBand.py.

Constructor & Destructor Documentation

def lsst.pipe.tasks.multiBand.MergeDetectionsTask.__init__ (   self,
  butler = None,
  schema = None,
  kwargs 
)
Initialize the task.

Additional keyword arguments (forwarded to MergeSourcesTask.__init__):
 - schema: the schema of the detection catalogs used as input to this one
 - butler: a butler used to read the input schema from disk, if schema is None

The task will set its own self.schema attribute to the schema of the output merged catalog.

Definition at line 394 of file multiBand.py.

395  def __init__(self, butler=None, schema=None, **kwargs):
396  """Initialize the task.
397 
398  Additional keyword arguments (forwarded to MergeSourcesTask.__init__):
399  - schema: the schema of the detection catalogs used as input to this one
400  - butler: a butler used to read the input schema from disk, if schema is None
401 
402  The task will set its own self.schema attribute to the schema of the output merged catalog.
403  """
404  MergeSourcesTask.__init__(self, butler=butler, schema=schema, **kwargs)
405  self.schema = self.getInputSchema(butler=butler, schema=schema)
407  self.schema,
408  [getShortFilterName(name) for name in self.config.priorityList]
409  )

Member Function Documentation

def lsst.pipe.tasks.multiBand.MergeDetectionsTask.cullPeaks (   self,
  catalog 
)
Attempt to remove garbage peaks (mostly on the outskirts of large blends)

Definition at line 437 of file multiBand.py.

438  def cullPeaks(self, catalog):
439  """Attempt to remove garbage peaks (mostly on the outskirts of large blends)"""
440  keys = [item.key for item in self.merged.getPeakSchema().extract("merge.peak.*").itervalues()]
441  totalPeaks = 0
442  culledPeaks = 0
443  for parentSource in catalog:
444  # Make a list copy so we can clear the attached PeakCatalog and append the ones we're keeping
445  # to it (which is easier than deleting as we iterate).
446  keptPeaks = parentSource.getFootprint().getPeaks()
447  oldPeaks = list(keptPeaks)
448  keptPeaks.clear()
449  familySize = len(oldPeaks)
450  totalPeaks += familySize
451  for rank, peak in enumerate(oldPeaks):
452  if ((rank < self.config.cullPeaks.rankSufficient) or
453  (self.config.cullPeaks.nBandsSufficient > 1 and
454  sum([peak.get(k) for k in keys]) >= self.config.cullPeaks.nBandsSufficient) or
455  (rank < self.config.cullPeaks.rankConsidered and
456  rank < self.config.cullPeaks.rankNormalizedConsidered * familySize)):
457  keptPeaks.append(peak)
458  else:
459  culledPeaks += 1
460  self.log.info("Culled %d of %d peaks" % (culledPeaks, totalPeaks))
boost::enable_if< typename ExpressionTraits< Scalar >::IsScalar, Scalar >::type sum(Scalar const &scalar)
Definition: operators.h:1250
def lsst.pipe.tasks.multiBand.MergeDetectionsTask.getSchemaCatalogs (   self)
Return a dict of empty catalogs for each catalog dataset produced by this task.

Definition at line 461 of file multiBand.py.

462  def getSchemaCatalogs(self):
463  """Return a dict of empty catalogs for each catalog dataset produced by this task."""
464  mergeDet = afwTable.SourceCatalog(self.schema)
465  peak = afwDetect.PeakCatalog(self.merged.getPeakSchema())
466  return {self.config.coaddName + "Coadd_mergeDet": mergeDet,
467  self.config.coaddName + "Coadd_peak": peak}
Custom catalog class for record/table subclasses that are guaranteed to have an ID, and should generally be sorted by that ID.
Definition: fwd.h:55
def lsst.pipe.tasks.multiBand.MergeDetectionsTask.mergeCatalogs (   self,
  catalogs,
  patchRef 
)
Merge multiple catalogs

Definition at line 410 of file multiBand.py.

411  def mergeCatalogs(self, catalogs, patchRef):
412  """Merge multiple catalogs
413  """
414 
415  # Convert distance to tract coordiante
416  skyInfo = getSkyInfo(coaddName=self.config.coaddName, patchRef=patchRef)
417  tractWcs = skyInfo.wcs
418  peakDistance = self.config.minNewPeak / tractWcs.pixelScale().asArcseconds()
419  samePeakDistance = self.config.maxSamePeak / tractWcs.pixelScale().asArcseconds()
420 
421  # Put catalogs, filters in priority order
422  orderedCatalogs = [catalogs[band] for band in self.config.priorityList if band in catalogs.keys()]
423  orderedBands = [getShortFilterName(band) for band in self.config.priorityList
424  if band in catalogs.keys()]
425 
426  mergedList = self.merged.getMergedSourceCatalog(orderedCatalogs, orderedBands, peakDistance,
427  self.schema, self.makeIdFactory(patchRef),
428  samePeakDistance)
429 
430  # Sort Peaks from brightest to faintest
431  for record in mergedList:
432  record.getFootprint().sortPeaks()
433  self.log.info("Merged to %d sources" % len(mergedList))
434  # Attempt to remove garbage peaks
435  self.cullPeaks(mergedList)
436  return mergedList
def getSkyInfo
Return SkyMap, tract and patch.
Definition: coaddBase.py:212

Member Data Documentation

string lsst.pipe.tasks.multiBand.MergeDetectionsTask._DefaultName = "mergeCoaddDetections"
staticprivate

Definition at line 389 of file multiBand.py.

lsst.pipe.tasks.multiBand.MergeDetectionsTask.ConfigClass = MergeDetectionsConfig
static

Definition at line 388 of file multiBand.py.

string lsst.pipe.tasks.multiBand.MergeDetectionsTask.inputDataset = "det"
static

Definition at line 390 of file multiBand.py.

tuple lsst.pipe.tasks.multiBand.MergeDetectionsTask.makeIdFactory = _makeMakeIdFactory("MergedCoaddId")
static

Definition at line 392 of file multiBand.py.

lsst.pipe.tasks.multiBand.MergeDetectionsTask.merged

Definition at line 405 of file multiBand.py.

string lsst.pipe.tasks.multiBand.MergeDetectionsTask.outputDataset = "mergeDet"
static

Definition at line 391 of file multiBand.py.

lsst.pipe.tasks.multiBand.MergeDetectionsTask.schema

Definition at line 404 of file multiBand.py.


The documentation for this class was generated from the following file: