22"""Pipeline for computing DiaObject summary/light curve values.
25__all__ = [
"DrpDiaCalculationPipeTask",
26 "DrpDiaCalculationPipeConfig",
27 "DrpDiaCalculationPipeConnections"]
33import lsst.pipe.base
as pipeBase
37 dimensions=(
"tract",
"patch",
"skymap"),
38 defaultTemplates={
"coaddName":
"deep",
40 assocDiaSourceTable = pipeBase.connectionTypes.Input(
41 doc=
"Catalog of DiaSources covering the patch and associated with a "
43 name=
"{fakesType}{coaddName}Diff_assocDiaSrcTable",
44 storageClass=
"DataFrame",
45 dimensions=(
"tract",
"patch"),
47 diaObjectTable = pipeBase.connectionTypes.Input(
48 doc=
"Catalog of DiaObjects created from spatially associating "
50 name=
"{fakesType}{coaddName}Diff_diaObjTable",
51 storageClass=
"DataFrame",
52 dimensions=(
"tract",
"patch"),
54 fullDiaObjectTable = pipeBase.connectionTypes.Output(
55 doc=
"Catalog of DiaObjects created from spatially associating "
57 name=
"{fakesType}{coaddName}Diff_fullDiaObjTable",
58 storageClass=
"DataFrame",
59 dimensions=(
"tract",
"patch"),
63class DrpDiaCalculationPipeConfig(
64 pipeBase.PipelineTaskConfig,
65 pipelineConnections=DrpDiaCalculationPipeConnections):
66 filterNames = pexConfig.ListField(
68 default=[
'u',
'g',
'r',
'i',
'z',
'y'],
69 doc=
"List of filters to attempt to calculate DiaObject summary "
72 diaCalculation = pexConfig.ConfigurableField(
73 target=DiaObjectCalculationTask,
74 doc=
"Task to compute summary statistics for DiaObjects.",
77 def setDefaults(self):
78 self.diaCalculation.plugins = [
"ap_meanPosition",
88class DrpDiaCalculationPipeTask(pipeBase.PipelineTask):
89 """Driver pipeline for loading DiaSource catalogs in a patch/tract
90 region and associating them.
92 ConfigClass = DrpDiaCalculationPipeConfig
93 _DefaultName =
"drpDiaCalculation"
95 def __init__(self, **kwargs):
96 super().__init__(**kwargs)
97 self.makeSubtask(
"diaCalculation")
99 def run(self, assocDiaSourceTable, diaObjectTable):
100 """Compute summary statistics over the input set of DiaSources and
101 store summary statistics into the associated DiaObjects.
105 assocDiaSourceTable : `pandas.DataFrame`
106 Set of DiaSources spatially associated into the DiaObjects in
108 diaObjectTable : `pandas.DataFrame`
109 DiaObjects created from associating the sources in
110 ``assocDiaSourceTable``. All ids in the catalog must have a
111 corresponding DiaSource in the input catalog.
115 results : `lsst.pipe.base.Struct`
118 ``fullDiaObjectTable``
119 DiaObjects with computed summary statistics based on their
120 associated DiaSource light curves. (`pandas.DataFrame`).
123 if len(diaObjectTable) <= 0
or len(assocDiaSourceTable) <= 0:
124 return pipeBase.Struct(fullDiaObjectTable=pd.DataFrame())
125 result = self.diaCalculation.run(
128 diaObjectTable.index.to_numpy(),
129 self.config.filterNames)
130 return pipeBase.Struct(fullDiaObjectTable=result.updatedDiaObjects)