Coverage for python/lsst/faro/measurement/VisitMeasurement.py : 42%

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
3from lsst.afw.table import SourceCatalog
5from lsst.faro.base.CatalogMeasurementBase import CatalogMeasurementBaseTaskConfig, CatalogMeasurementBaseTask
7__all__ = ("VisitMeasurementTaskConfig", "VisitMeasurementTask")
10# The first thing to do is to define a Connections class. This will define all
11# the inputs and outputs that our task requires
12class VisitMeasurementTaskConnections(MetricConnections,
13 dimensions=("instrument", "visit", "band")):
15 source_catalogs = pipeBase.connectionTypes.Input(doc="Source catalogs.",
16 dimensions=("instrument", "visit",
17 "detector", "band"),
18 storageClass="SourceCatalog",
19 name="src",
20 multiple=True)
22 measurement = pipeBase.connectionTypes.Output(doc="Per-visit measurement.",
23 dimensions=("instrument", "visit", "band"),
24 storageClass="MetricValue",
25 name="metricvalue_{package}_{metric}")
28class VisitMeasurementTaskConfig(CatalogMeasurementBaseTaskConfig,
29 pipelineConnections=VisitMeasurementTaskConnections):
30 pass
33class VisitMeasurementTask(CatalogMeasurementBaseTask):
34 ConfigClass = VisitMeasurementTaskConfig
35 _DefaultName = "visitMeasurementTask"
37 def run(self, source_catalogs, vIds):
39 # Concatenate catalogs
40 schema = source_catalogs[0].schema
41 size = sum([len(cat) for cat in source_catalogs])
42 source_catalog = SourceCatalog(schema)
43 source_catalog.reserve(size)
44 for cat in source_catalogs:
45 source_catalog.extend(cat)
47 return self.measure.run(source_catalog, self.config.connections.metric, vIds)
49 def runQuantum(self, butlerQC, inputRefs, outputRefs):
50 inputs = butlerQC.get(inputRefs)
51 inputs['vIds'] = [butlerQC.registry.expandDataId(el.dataId) for el in inputRefs.source_catalogs]
52 outputs = self.run(**inputs)
53 if outputs.measurement is not None:
54 butlerQC.put(outputs, outputRefs)
55 else:
56 self.log.debugf("Skipping measurement of {!r} on {} "
57 "as not applicable.", self, inputRefs)