Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import lsst.pipe.base as pipeBase 

2from lsst.verify.tasks import MetricConnections 

3 

4from lsst.faro.base.CatalogMeasurementBase import CatalogMeasurementBaseTaskConfig, CatalogMeasurementBaseTask 

5 

6__all__ = ("TractMeasurementTaskConnections", "TractMeasurementTaskConfig", 

7 "TractMeasurementTask", 

8 "TractMultiBandMeasurementTaskConnections", "TractMultiBandMeasurementTaskConfig", 

9 "TractMultiBandMeasurementTask") 

10 

11 

12class TractMeasurementTaskConnections(MetricConnections, 

13 dimensions=("tract", "skymap", 

14 "band"), 

15 defaultTemplates={"coaddName": "deepCoadd", 

16 "photoCalibName": "deepCoadd_calexp.photoCalib", 

17 "wcsName": "deepCoadd_calexp.wcs"}): 

18 

19 catalogs = pipeBase.connectionTypes.Input(doc="Object catalog.", 

20 dimensions=("tract", "patch", 

21 "skymap", "band"), 

22 storageClass="SourceCatalog", 

23 name="deepCoadd_forced_src", 

24 multiple=True) 

25 

26 photoCalibs = pipeBase.connectionTypes.Input(doc="Photometric calibration object.", 

27 dimensions=("tract", "patch", 

28 "skymap", "band"), 

29 storageClass="PhotoCalib", 

30 name="{photoCalibName}", 

31 multiple=True) 

32 

33 astromCalibs = pipeBase.connectionTypes.Input(doc="WCS for the catalog.", 

34 dimensions=("tract", "patch", 

35 "skymap", "band"), 

36 storageClass="Wcs", 

37 name="{wcsName}", 

38 multiple=True) 

39 

40 measurement = pipeBase.connectionTypes.Output(doc="Per-tract measurement.", 

41 dimensions=("tract", "skymap", 

42 "band"), 

43 storageClass="MetricValue", 

44 name="metricvalue_{package}_{metric}") 

45 

46 

47class TractMeasurementTaskConfig(CatalogMeasurementBaseTaskConfig, 

48 pipelineConnections=TractMeasurementTaskConnections): 

49 pass 

50 

51 

52class TractMeasurementTask(CatalogMeasurementBaseTask): 

53 

54 ConfigClass = TractMeasurementTaskConfig 

55 _DefaultName = "tractMeasurementTask" 

56 

57 def run(self, catalogs, photoCalibs, astromCalibs, dataIds): 

58 return self.measure.run(self.config.connections.metric, catalogs, photoCalibs, astromCalibs, dataIds) 

59 

60 def runQuantum(self, butlerQC, inputRefs, outputRefs): 

61 inputs = butlerQC.get(inputRefs) 

62 inputs['dataIds'] = [butlerQC.registry.expandDataId(cat.dataId) for cat in inputRefs.catalogs] 

63 outputs = self.run(**inputs) 

64 if outputs.measurement is not None: 

65 butlerQC.put(outputs, outputRefs) 

66 else: 

67 self.log.debug("Skipping measurement of {!r} on {} " 

68 "as not applicable.", self, inputRefs) 

69 

70 

71class TractMultiBandMeasurementTaskConnections(TractMeasurementTaskConnections, 

72 dimensions=("tract", "skymap"), 

73 defaultTemplates={"coaddName": "deepCoadd", "photoCalibName": 

74 "deepCoadd_calexp.photoCalib"}): 

75 

76 cat = pipeBase.connectionTypes.Input(doc="Object catalog.", 

77 dimensions=("tract", "skymap", "patch", 

78 "band"), 

79 storageClass="SourceCatalog", 

80 name="deepCoadd_forced_src", 

81 multiple=True) 

82 

83 photoCalibs = pipeBase.connectionTypes.Input(doc="Photometric calibration object.", 

84 dimensions=("tract", "skymap", 

85 "patch", "band"), 

86 storageClass="PhotoCalib", 

87 name="{photoCalibName}", 

88 multiple=True) 

89 

90 measurement = pipeBase.connectionTypes.Output(doc="Per-tract measurement.", 

91 dimensions=("tract", "skymap"), 

92 storageClass="MetricValue", 

93 name="metricvalue_{package}_{metric}") 

94 

95 

96class TractMultiBandMeasurementTaskConfig(CatalogMeasurementBaseTaskConfig, 

97 pipelineConnections=TractMultiBandMeasurementTaskConnections): 

98 pass 

99 

100 

101class TractMultiBandMeasurementTask(TractMeasurementTask): 

102 

103 ConfigClass = TractMultiBandMeasurementTaskConfig 

104 _DefaultName = "tractMultiBandMeasurementTask"