LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
lsst.pipe.tasks.postprocess.TransformCatalogBaseTask Class Reference
Inheritance diagram for lsst.pipe.tasks.postprocess.TransformCatalogBaseTask:

Public Member Functions

def outputDataset (self)
 
def inputDataset (self)
 
def ConfigClass (self)
 
def __init__ (self, *args, **kwargs)
 
def runQuantum (self, butlerQC, inputRefs, outputRefs)
 
def runDataRef (self, dataRef)
 
def run (self, parq, funcs=None, dataId=None, band=None)
 
def getFunctors (self)
 
def getAnalysis (self, parq, funcs=None, band=None)
 
def transform (self, band, parq, funcs, dataId)
 
def write (self, df, parqRef)
 
def writeMetadata (self, dataRef)
 

Public Attributes

 funcs
 

Detailed Description

Base class for transforming/standardizing a catalog

by applying functors that convert units and apply calibrations.
The purpose of this task is to perform a set of computations on
an input `ParquetTable` dataset (such as `deepCoadd_obj`) and write the
results to a new dataset (which needs to be declared in an `outputDataset`
attribute).

The calculations to be performed are defined in a YAML file that specifies
a set of functors to be computed, provided as
a `--functorFile` config parameter.  An example of such a YAML file
is the following:

    funcs:
        psfMag:
            functor: Mag
            args:
                - base_PsfFlux
            filt: HSC-G
            dataset: meas
        cmodel_magDiff:
            functor: MagDiff
            args:
                - modelfit_CModel
                - base_PsfFlux
            filt: HSC-G
        gauss_magDiff:
            functor: MagDiff
            args:
                - base_GaussianFlux
                - base_PsfFlux
            filt: HSC-G
        count:
            functor: Column
            args:
                - base_InputCount_value
            filt: HSC-G
        deconvolved_moments:
            functor: DeconvolvedMoments
            filt: HSC-G
            dataset: forced_src
    refFlags:
        - calib_psfUsed
        - merge_measurement_i
        - merge_measurement_r
        - merge_measurement_z
        - merge_measurement_y
        - merge_measurement_g
        - base_PixelFlags_flag_inexact_psfCenter
        - detect_isPrimary

The names for each entry under "func" will become the names of columns in the
output dataset.  All the functors referenced are defined in `lsst.pipe.tasks.functors`.
Positional arguments to be passed to each functor are in the `args` list,
and any additional entries for each column other than "functor" or "args" (e.g., `'filt'`,
`'dataset'`) are treated as keyword arguments to be passed to the functor initialization.

The "flags" entry is the default shortcut for `Column` functors.
All columns listed under "flags" will be copied to the output table
untransformed. They can be of any datatype.
In the special case of transforming a multi-level oject table with
band and dataset indices (deepCoadd_obj), these will be taked from the
`meas` dataset and exploded out per band.

There are two special shortcuts that only apply when transforming
multi-level Object (deepCoadd_obj) tables:
 -  The "refFlags" entry is shortcut for `Column` functor
    taken from the `'ref'` dataset if transforming an ObjectTable.
 -  The "forcedFlags" entry is shortcut for `Column` functors.
    taken from the ``forced_src`` dataset if transforming an ObjectTable.
    These are expanded out per band.


This task uses the `lsst.pipe.tasks.postprocess.PostprocessAnalysis` object
to organize and excecute the calculations.

Definition at line 557 of file postprocess.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.__init__ (   self,
args,
**  kwargs 
)

Definition at line 651 of file postprocess.py.

651  def __init__(self, *args, **kwargs):
652  super().__init__(*args, **kwargs)
653  if self.config.functorFile:
654  self.log.info('Loading tranform functor definitions from %s',
655  self.config.functorFile)
656  self.funcs = CompositeFunctor.from_file(self.config.functorFile)
657  self.funcs.update(dict(PostprocessAnalysis._defaultFuncs))
658  else:
659  self.funcs = None
660 

Member Function Documentation

◆ ConfigClass()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.ConfigClass (   self)

Definition at line 648 of file postprocess.py.

648  def ConfigClass(self):
649  raise NotImplementedError('Subclass must define "ConfigClass" attribute')
650 

◆ getAnalysis()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.getAnalysis (   self,
  parq,
  funcs = None,
  band = None 
)

Definition at line 711 of file postprocess.py.

711  def getAnalysis(self, parq, funcs=None, band=None):
712  if funcs is None:
713  funcs = self.funcs
714  analysis = PostprocessAnalysis(parq, funcs, filt=band)
715  return analysis
716 

◆ getFunctors()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.getFunctors (   self)

Definition at line 708 of file postprocess.py.

708  def getFunctors(self):
709  return self.funcs
710 

◆ inputDataset()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.inputDataset (   self)

Definition at line 644 of file postprocess.py.

644  def inputDataset(self):
645  raise NotImplementedError('Subclass must define "inputDataset" attribute')
646 

◆ outputDataset()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.outputDataset (   self)

Definition at line 640 of file postprocess.py.

640  def outputDataset(self):
641  raise NotImplementedError('Subclass must define "outputDataset" attribute')
642 

◆ run()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.run (   self,
  parq,
  funcs = None,
  dataId = None,
  band = None 
)
Do postprocessing calculations

Takes a `ParquetTable` object and dataId,
returns a dataframe with results of postprocessing calculations.

Parameters
----------
parq : `lsst.pipe.tasks.parquetTable.ParquetTable`
    ParquetTable from which calculations are done.
funcs : `lsst.pipe.tasks.functors.Functors`
    Functors to apply to the table's columns
dataId : dict, optional
    Used to add a `patchId` column to the output dataframe.
band : `str`, optional
    Filter band that is being processed.

Returns
------
    `pandas.DataFrame`

Definition at line 680 of file postprocess.py.

680  def run(self, parq, funcs=None, dataId=None, band=None):
681  """Do postprocessing calculations
682 
683  Takes a `ParquetTable` object and dataId,
684  returns a dataframe with results of postprocessing calculations.
685 
686  Parameters
687  ----------
688  parq : `lsst.pipe.tasks.parquetTable.ParquetTable`
689  ParquetTable from which calculations are done.
690  funcs : `lsst.pipe.tasks.functors.Functors`
691  Functors to apply to the table's columns
692  dataId : dict, optional
693  Used to add a `patchId` column to the output dataframe.
694  band : `str`, optional
695  Filter band that is being processed.
696 
697  Returns
698  ------
699  `pandas.DataFrame`
700 
701  """
702  self.log.info("Transforming/standardizing the source table dataId: %s", dataId)
703 
704  df = self.transform(band, parq, funcs, dataId).df
705  self.log.info("Made a table of %d columns and %d rows", len(df.columns), len(df))
706  return df
707 
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603

◆ runDataRef()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.runDataRef (   self,
  dataRef 
)

Definition at line 671 of file postprocess.py.

671  def runDataRef(self, dataRef):
672  parq = dataRef.get()
673  if self.funcs is None:
674  raise ValueError("config.functorFile is None. "
675  "Must be a valid path to yaml in order to run as a CommandlineTask.")
676  df = self.run(parq, funcs=self.funcs, dataId=dataRef.dataId)
677  self.write(df, dataRef)
678  return df
679 

◆ runQuantum()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.runQuantum (   self,
  butlerQC,
  inputRefs,
  outputRefs 
)

Definition at line 661 of file postprocess.py.

661  def runQuantum(self, butlerQC, inputRefs, outputRefs):
662  inputs = butlerQC.get(inputRefs)
663  if self.funcs is None:
664  raise ValueError("config.functorFile is None. "
665  "Must be a valid path to yaml in order to run Task as a PipelineTask.")
666  result = self.run(parq=inputs['inputCatalog'], funcs=self.funcs,
667  dataId=outputRefs.outputCatalog.dataId.full)
668  outputs = pipeBase.Struct(outputCatalog=result)
669  butlerQC.put(outputs, outputRefs)
670 

◆ transform()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.transform (   self,
  band,
  parq,
  funcs,
  dataId 
)

Definition at line 717 of file postprocess.py.

717  def transform(self, band, parq, funcs, dataId):
718  analysis = self.getAnalysis(parq, funcs=funcs, band=band)
719  df = analysis.df
720  if dataId is not None:
721  for key, value in dataId.items():
722  df[str(key)] = value
723 
724  if self.config.primaryKey:
725  if df.index.name != self.config.primaryKey and self.config.primaryKey in df:
726  df.reset_index(inplace=True, drop=True)
727  df.set_index(self.config.primaryKey, inplace=True)
728 
729  return pipeBase.Struct(
730  df=df,
731  analysis=analysis
732  )
733 
table::Key< int > transform

◆ write()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.write (   self,
  df,
  parqRef 
)

Definition at line 734 of file postprocess.py.

734  def write(self, df, parqRef):
735  parqRef.put(ParquetTable(dataFrame=df), self.outputDataset)
736 
void write(OutputArchiveHandle &handle) const override

◆ writeMetadata()

def lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.writeMetadata (   self,
  dataRef 
)
No metadata to write.

Definition at line 737 of file postprocess.py.

737  def writeMetadata(self, dataRef):
738  """No metadata to write.
739  """
740  pass
741 
742 
def writeMetadata(self, dataRefList)
No metadata to write, and not sure how to write it for a list of dataRefs.

Member Data Documentation

◆ funcs

lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.funcs

Definition at line 656 of file postprocess.py.


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