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__ = ("VisitMeasurementTaskConfig", "VisitMeasurementTask") 

7 

8 

9class VisitMeasurementTaskConnections(MetricConnections, 

10 dimensions=("instrument", "visit", "band"), 

11 defaultTemplates={"photoCalibName": "calexp.photoCalib", 

12 "wcsName": "calexp.wcs"}): 

13 

14 catalogs = pipeBase.connectionTypes.Input(doc="Source catalogs.", 

15 dimensions=("instrument", "visit", 

16 "detector", "band"), 

17 storageClass="SourceCatalog", 

18 name="src", 

19 multiple=True) 

20 

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

22 dimensions=("instrument", "visit", 

23 "detector", "band"), 

24 storageClass="PhotoCalib", 

25 name="{photoCalibName}", 

26 multiple=True) 

27 

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

29 dimensions=("instrument", "visit", 

30 "detector", "band"), 

31 storageClass="Wcs", 

32 name="{wcsName}", 

33 multiple=True) 

34 

35 measurement = pipeBase.connectionTypes.Output(doc="Per-visit measurement.", 

36 dimensions=("instrument", "visit", "band"), 

37 storageClass="MetricValue", 

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

39 

40 

41class VisitMeasurementTaskConfig(CatalogMeasurementBaseTaskConfig, 

42 pipelineConnections=VisitMeasurementTaskConnections): 

43 pass 

44 

45 

46class VisitMeasurementTask(CatalogMeasurementBaseTask): 

47 ConfigClass = VisitMeasurementTaskConfig 

48 _DefaultName = "visitMeasurementTask" 

49 

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

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

52 

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

54 inputs = butlerQC.get(inputRefs) 

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

56 outputs = self.run(**inputs) 

57 if outputs.measurement is not None: 

58 butlerQC.put(outputs, outputRefs) 

59 else: 

60 self.log.debugf("Skipping measurement of {!r} on {} " 

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