LSST Applications g180d380827+770a9040cc,g2079a07aa2+86d27d4dc4,g2305ad1205+09cfdadad9,g2bbee38e9b+c6a8a0fb72,g337abbeb29+c6a8a0fb72,g33d1c0ed96+c6a8a0fb72,g3a166c0a6a+c6a8a0fb72,g3ddfee87b4+1ea5e09c42,g48712c4677+7e2ea9cd42,g487adcacf7+301d09421d,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+96fcb956a6,g64a986408d+23540ee355,g858d7b2824+23540ee355,g864b0138d7+aa38e45daa,g95921f966b+d83dc58ecd,g991b906543+23540ee355,g99cad8db69+7f13b58a93,g9c22b2923f+e2510deafe,g9ddcbc5298+9a081db1e4,ga1e77700b3+03d07e1c1f,gb0e22166c9+60f28cb32d,gb23b769143+23540ee355,gba4ed39666+c2a2e4ac27,gbb8dafda3b+49e7449578,gbd998247f1+585e252eca,gc120e1dc64+1bbfa184e1,gc28159a63d+c6a8a0fb72,gc3e9b769f7+385ea95214,gcf0d15dbbd+1ea5e09c42,gdaeeff99f8+f9a426f77a,ge6526c86ff+1bccc98490,ge79ae78c31+c6a8a0fb72,gee10cc3b42+585e252eca,w.2024.18
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | List of all members
lsst.pipe.tasks.postprocess.TransformCatalogBaseTask Class Reference
Inheritance diagram for lsst.pipe.tasks.postprocess.TransformCatalogBaseTask:

Public Member Functions

 outputDataset (self)
 
 inputDataset (self)
 
 ConfigClass (self)
 
 __init__ (self, *args, **kwargs)
 
 runQuantum (self, butlerQC, inputRefs, outputRefs)
 
 run (self, handle, funcs=None, dataId=None, band=None)
 
 getFunctors (self)
 
 getAnalysis (self, handles, funcs=None, band=None)
 
 transform (self, band, handles, funcs, dataId)
 

Public Attributes

 funcs
 

Protected Member Functions

 _DefaultName (self)
 

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
``DeferredDatasetHandle`` or ``InMemoryDatasetHandle`` that holds a
``DataFrame`` 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:
        sourceId:
            functor: Index
        x:
            functor: Column
            args: slot_Centroid_x
        y:
            functor: Column
            args: slot_Centroid_y
        psfFlux:
            functor: LocalNanojansky
            args:
                - slot_PsfFlux_instFlux
                - slot_PsfFlux_instFluxErr
                - base_LocalPhotoCalib
                - base_LocalPhotoCalibErr
        psfFluxErr:
            functor: LocalNanojanskyErr
            args:
                - slot_PsfFlux_instFlux
                - slot_PsfFlux_instFluxErr
                - base_LocalPhotoCalib
                - base_LocalPhotoCalibErr
    flags:
        - 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 606 of file postprocess.py.

Constructor & Destructor Documentation

◆ __init__()

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

Definition at line 688 of file postprocess.py.

688 def __init__(self, *args, **kwargs):
689 super().__init__(*args, **kwargs)
690 if self.config.functorFile:
691 self.log.info('Loading tranform functor definitions from %s',
692 self.config.functorFile)
693 self.funcs = CompositeFunctor.from_file(self.config.functorFile)
694 self.funcs.update(dict(PostprocessAnalysis._defaultFuncs))
695 else:
696 self.funcs = None
697

Member Function Documentation

◆ _DefaultName()

lsst.pipe.tasks.postprocess.TransformCatalogBaseTask._DefaultName ( self)
protected

Definition at line 673 of file postprocess.py.

673 def _DefaultName(self):
674 raise NotImplementedError('Subclass must define "_DefaultName" attribute')
675

◆ ConfigClass()

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

Definition at line 685 of file postprocess.py.

685 def ConfigClass(self):
686 raise NotImplementedError('Subclass must define "ConfigClass" attribute')
687

◆ getAnalysis()

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

Definition at line 741 of file postprocess.py.

741 def getAnalysis(self, handles, funcs=None, band=None):
742 if funcs is None:
743 funcs = self.funcs
744 analysis = PostprocessAnalysis(handles, funcs, filt=band)
745 return analysis
746

◆ getFunctors()

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

Definition at line 738 of file postprocess.py.

738 def getFunctors(self):
739 return self.funcs
740

◆ inputDataset()

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

Definition at line 681 of file postprocess.py.

681 def inputDataset(self):
682 raise NotImplementedError('Subclass must define "inputDataset" attribute')
683

◆ outputDataset()

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

Definition at line 677 of file postprocess.py.

677 def outputDataset(self):
678 raise NotImplementedError('Subclass must define "outputDataset" attribute')
679

◆ run()

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

Takes a ``DeferredDatasetHandle`` or ``InMemoryDatasetHandle`` or
``DataFrame`` object and dataId,
returns a dataframe with results of postprocessing calculations.

Parameters
----------
handles : `~lsst.daf.butler.DeferredDatasetHandle` or
          `~lsst.pipe.base.InMemoryDatasetHandle` or
          `~pandas.DataFrame`, or list of these.
    DataFrames from which calculations are done.
funcs : `~lsst.pipe.tasks.functors.Functor`
    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
-------
df : `pandas.DataFrame`

Definition at line 708 of file postprocess.py.

708 def run(self, handle, funcs=None, dataId=None, band=None):
709 """Do postprocessing calculations
710
711 Takes a ``DeferredDatasetHandle`` or ``InMemoryDatasetHandle`` or
712 ``DataFrame`` object and dataId,
713 returns a dataframe with results of postprocessing calculations.
714
715 Parameters
716 ----------
717 handles : `~lsst.daf.butler.DeferredDatasetHandle` or
718 `~lsst.pipe.base.InMemoryDatasetHandle` or
719 `~pandas.DataFrame`, or list of these.
720 DataFrames from which calculations are done.
721 funcs : `~lsst.pipe.tasks.functors.Functor`
722 Functors to apply to the table's columns
723 dataId : dict, optional
724 Used to add a `patchId` column to the output dataframe.
725 band : `str`, optional
726 Filter band that is being processed.
727
728 Returns
729 -------
730 df : `pandas.DataFrame`
731 """
732 self.log.info("Transforming/standardizing the source table dataId: %s", dataId)
733
734 df = self.transform(band, handle, funcs, dataId).df
735 self.log.info("Made a table of %d columns and %d rows", len(df.columns), len(df))
736 return df
737

◆ runQuantum()

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

Definition at line 698 of file postprocess.py.

698 def runQuantum(self, butlerQC, inputRefs, outputRefs):
699 inputs = butlerQC.get(inputRefs)
700 if self.funcs is None:
701 raise ValueError("config.functorFile is None. "
702 "Must be a valid path to yaml in order to run Task as a PipelineTask.")
703 result = self.run(handle=inputs['inputCatalog'], funcs=self.funcs,
704 dataId=dict(outputRefs.outputCatalog.dataId.mapping))
705 outputs = pipeBase.Struct(outputCatalog=result)
706 butlerQC.put(outputs, outputRefs)
707

◆ transform()

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

Definition at line 747 of file postprocess.py.

747 def transform(self, band, handles, funcs, dataId):
748 analysis = self.getAnalysis(handles, funcs=funcs, band=band)
749 df = analysis.df
750 if dataId and self.config.columnsFromDataId:
751 for key in self.config.columnsFromDataId:
752 if key in dataId:
753 df[key] = dataId[key]
754 else:
755 raise ValueError(f"'{key}' in config.columnsFromDataId not found in dataId: {dataId}")
756
757 if self.config.primaryKey:
758 if df.index.name != self.config.primaryKey and self.config.primaryKey in df:
759 df.reset_index(inplace=True, drop=True)
760 df.set_index(self.config.primaryKey, inplace=True)
761
762 return pipeBase.Struct(
763 df=df,
764 analysis=analysis
765 )
766
767
table::Key< int > transform

Member Data Documentation

◆ funcs

lsst.pipe.tasks.postprocess.TransformCatalogBaseTask.funcs

Definition at line 693 of file postprocess.py.


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