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
drpDiaCalculationPipe.py
Go to the documentation of this file.
1 # This file is part of pipe_tasks.
2 
3 # Developed for the LSST Data Management System.
4 # This product includes software developed by the LSST Project
5 # (https://www.lsst.org).
6 # See the COPYRIGHT file at the top-level directory of this distribution
7 # for details of code ownership.
8 
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
13 
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
18 
19 # You should have received a copy of the GNU General Public License
20 # along with this program. If not, see <https://www.gnu.org/licenses/>.
21 #
22 
23 """Pipeline for computing DiaObject summary/light curve values.
24 """
25 
26 __all__ = ["DrpDiaCalculationPipeTask",
27  "DrpDiaCalculationPipeConfig",
28  "DrpDiaCalculationPipeConnections"]
29 
30 import pandas as pd
31 
32 from lsst.meas.base import DiaObjectCalculationTask
33 import lsst.pex.config as pexConfig
34 import lsst.pipe.base as pipeBase
35 
36 
37 class DrpDiaCalculationPipeConnections(pipeBase.PipelineTaskConnections,
38  dimensions=("tract", "patch", "skymap"),
39  defaultTemplates={"coaddName": "deep",
40  "fakesType": ""}):
41  assocDiaSourceTable = pipeBase.connectionTypes.Input(
42  doc="Catalog of DiaSources covering the patch and associated with a "
43  "DiaObject.",
44  name="{fakesType}{coaddName}Diff_assocDiaSrcTable",
45  storageClass="DataFrame",
46  dimensions=("tract", "patch"),
47  )
48  diaObjectTable = pipeBase.connectionTypes.Input(
49  doc="Catalog of DiaObjects created from spatially associating "
50  "DiaSources.",
51  name="{fakesType}{coaddName}Diff_diaObjTable",
52  storageClass="DataFrame",
53  dimensions=("tract", "patch"),
54  )
55  fullDiaObjectTable = pipeBase.connectionTypes.Output(
56  doc="Catalog of DiaObjects created from spatially associating "
57  "DiaSources.",
58  name="{fakesType}{coaddName}Diff_fullDiaObjTable",
59  storageClass="DataFrame",
60  dimensions=("tract", "patch"),
61  )
62 
63 
64 class DrpDiaCalculationPipeConfig(
65  pipeBase.PipelineTaskConfig,
66  pipelineConnections=DrpDiaCalculationPipeConnections):
67  filterNames = pexConfig.ListField(
68  dtype=str,
69  default=['u', 'g', 'r', 'i', 'z', 'y'],
70  doc="List of filters to attempt to calculate DiaObject summary "
71  "values."
72  )
73  diaCalculation = pexConfig.ConfigurableField(
74  target=DiaObjectCalculationTask,
75  doc="Task to compute summary statistics for DiaObjects.",
76  )
77 
78  def setDefaults(self):
79  self.diaCalculation.plugins = ["ap_meanPosition",
80  "ap_HTMIndex",
81  "ap_diaObjectFlag",
82  "ap_meanFlux",
83  "ap_percentileFlux",
84  "ap_sigmaFlux",
85  "ap_chi2Flux",
86  "ap_madFlux",
87  "ap_skewFlux",
88  "ap_minMaxFlux",
89  "ap_maxSlopeFlux",
90  "ap_meanErrFlux",
91  "ap_linearFit",
92  "ap_stetsonJ",
93  "ap_meanTotFlux",
94  "ap_sigmaTotFlux"]
95 
96 
97 class DrpDiaCalculationPipeTask(pipeBase.PipelineTask):
98  """Driver pipeline for loading DiaSource catalogs in a patch/tract
99  region and associating them.
100  """
101  ConfigClass = DrpDiaCalculationPipeConfig
102  _DefaultName = "drpDiaCalculation"
103 
104  def __init__(self, **kwargs):
105  super().__init__(**kwargs)
106  self.makeSubtask("diaCalculation")
107 
108  def run(self, assocDiaSourceTable, diaObjectTable):
109  """Compute summary statistics over the input set of DiaSources and
110  store summary statistics into the associated DiaObjects.
111 
112  Parameters
113  ----------
114  assocDiaSourceTable : `pandas.DataFrame`
115  Set of DiaSources spatially associated into the DiaObjects in
116  ``diaObjectTable``.
117  diaObjectTable : `pandas.DataFrame`
118  DiaObjects created from associating the sources in
119  ``assocDiaSourceTable``. All ids in the catalog must have a
120  corresponding DiaSource in the input catalog.
121 
122  Returns
123  -------
124  results : `lsst.pipe.base.Struct`
125  Struct containing
126 
127  ``fullDiaObjectTable``
128  DiaObjects with computed summary statistics based on their
129  associated DiaSource light curves. (`pandas.DataFrame`).
130  """
131  # Return empty dataFrame if no DiaObjects in this patch.
132  if len(diaObjectTable) <= 0 or len(assocDiaSourceTable) <= 0:
133  return pipeBase.Struct(fullDiaObjectTable=pd.DataFrame())
134  result = self.diaCalculation.run(
135  diaObjectTable,
136  assocDiaSourceTable,
137  diaObjectTable.index.to_numpy(),
138  self.config.filterNames)
139  return pipeBase.Struct(fullDiaObjectTable=result.updatedDiaObjects)
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603