TimingMetricTask¶
-
class
lsst.verify.tasks.
TimingMetricTask
(**kwargs)¶ Bases:
lsst.verify.tasks.MetadataMetricTask
A Task that computes a wall-clock time using metadata produced by the
lsst.utils.timer.timeMethod
decorator.Parameters: - args
- kwargs
Constructor parameters are the same as for
lsst.verify.tasks.MetricTask
.
Attributes Summary
canMultiprocess
Methods Summary
emptyMetadata
()Empty (clear) the metadata for this Task and all sub-Tasks. extractMetadata
(metadata, metadataKeys)Read multiple keys from a metadata object. getFullMetadata
()Get metadata for all tasks. getFullName
()Get the task name as a hierarchical name including parent task names. getInputMetadataKeys
(config)Get search strings for the metadata. getName
()Get the name of the task. getResourceConfig
()Return resource configuration for this task. getTaskDict
()Get a dictionary of all tasks as a shallow copy. makeField
(doc)Make a lsst.pex.config.ConfigurableField
for this task.makeMeasurement
(timings)Compute a wall-clock measurement from metadata provided by lsst.utils.timer.timeMethod
.makeSubtask
(name, **keyArgs)Create a subtask as a new instance as the name
attribute of this task.run
(metadata)Compute a measurement from science task metadata. runQuantum
(butlerQC, inputRefs, outputRefs)Do Butler I/O to provide in-memory objects for run. timer
(name, logLevel)Context manager to log performance data for an arbitrary block of code. Attributes Documentation
-
canMultiprocess
= True¶
Methods Documentation
-
emptyMetadata
() → None¶ Empty (clear) the metadata for this Task and all sub-Tasks.
-
static
extractMetadata
(metadata, metadataKeys)¶ Read multiple keys from a metadata object.
Parameters: - metadata :
lsst.pipe.base.TaskMetadata
A metadata object.
- metadataKeys :
dict
[str
,str
] Keys are arbitrary labels, values are metadata keys (or their substrings) in the format of
lsst.pipe.base.Task.getFullMetadata()
.
Returns: Raises: - lsst.verify.tasks.MetricComputationError
Raised if any metadata key string has more than one match in
metadata
.
- metadata :
-
getFullMetadata
() → lsst.pipe.base._task_metadata.TaskMetadata¶ Get metadata for all tasks.
Returns: - metadata :
TaskMetadata
The keys are the full task name. Values are metadata for the top-level task and all subtasks, sub-subtasks, etc.
Notes
The returned metadata includes timing information (if
@timer.timeMethod
is used) and any metadata set by the task. The name of each item consists of the full task name with.
replaced by:
, followed by.
and the name of the item, e.g.:topLevelTaskName:subtaskName:subsubtaskName.itemName
using
:
in the full task name disambiguates the rare situation that a task has a subtask and a metadata item with the same name.- metadata :
-
getFullName
() → str¶ Get the task name as a hierarchical name including parent task names.
Returns: - fullName :
str
The full name consists of the name of the parent task and each subtask separated by periods. For example:
- The full name of top-level task “top” is simply “top”.
- The full name of subtask “sub” of top-level task “top” is “top.sub”.
- The full name of subtask “sub2” of subtask “sub” of top-level task “top” is “top.sub.sub2”.
- fullName :
-
classmethod
getInputMetadataKeys
(config)¶ Get search strings for the metadata.
Parameters: - config :
cls.ConfigClass
Configuration for this task.
Returns: - keys :
dict
A dictionary of keys, optionally prefixed by one or more tasks in the format of
lsst.pipe.base.Task.getFullMetadata()
."StartTime"
The key for when the target method started (
str
)."EndTime"
The key for when the target method ended (
str
)."StartTimestamp"
The key for an ISO 8601-compliant text string where the target method started (
str
)."EndTimestamp"
The key for an ISO 8601-compliant text string where the target method ended (
str
).
- config :
-
getResourceConfig
() → Optional[ResourceConfig]¶ Return resource configuration for this task.
Returns: - Object of type
ResourceConfig
orNone
if resource - configuration is not defined for this task.
- Object of type
-
getTaskDict
() → Dict[str, weakref.ReferenceType[lsst.pipe.base.task.Task]]¶ Get a dictionary of all tasks as a shallow copy.
Returns: - taskDict :
dict
Dictionary containing full task name: task object for the top-level task and all subtasks, sub-subtasks, etc.
- taskDict :
-
classmethod
makeField
(doc: str) → lsst.pex.config.configurableField.ConfigurableField¶ Make a
lsst.pex.config.ConfigurableField
for this task.Parameters: - doc :
str
Help text for the field.
Returns: - configurableField :
lsst.pex.config.ConfigurableField
A
ConfigurableField
for this task.
Examples
Provides a convenient way to specify this task is a subtask of another task.
Here is an example of use:
class OtherTaskConfig(lsst.pex.config.Config): aSubtask = ATaskClass.makeField("brief description of task")
- doc :
-
makeMeasurement
(timings)¶ Compute a wall-clock measurement from metadata provided by
lsst.utils.timer.timeMethod
.Parameters: Returns: - measurement :
lsst.verify.Measurement
The running time of the target method.
Raises: - lsst.verify.tasks.MetricComputationError
Raised if the timing metadata are invalid.
- lsst.pipe.base.NoWorkFound
Raised if no matching timing metadata found.
- measurement :
-
makeSubtask
(name: str, **keyArgs) → None¶ Create a subtask as a new instance as the
name
attribute of this task.Parameters: - name :
str
Brief name of the subtask.
- keyArgs
Extra keyword arguments used to construct the task. The following arguments are automatically provided and cannot be overridden:
- “config”.
- “parentTask”.
Notes
The subtask must be defined by
Task.config.name
, an instance ofConfigurableField
orRegistryField
.- name :
-
run
(metadata)¶ Compute a measurement from science task metadata.
Parameters: - metadata :
lsst.pipe.base.TaskMetadata
A metadata object for the unit of science processing to use for this metric, or a collection of such objects if this task combines many units of processing into a single metric.
Returns: - result :
lsst.pipe.base.Struct
A
Struct
containing the following component:measurement
: the value of the metric (lsst.verify.Measurement
orNone
)
Raises: - lsst.verify.tasks.MetricComputationError
Raised if the strings returned by
getInputMetadataKeys
match more than one key in any metadata object.- lsst.pipe.base.NoWorkFound
Raised if the metric is ill-defined or otherwise inapplicable. Typically this means that the pipeline step or option being measured was not run.
Notes
This implementation calls
getInputMetadataKeys
, then searches for matching keys in each metadata. It then passes the values of these keys (orNone
if no match) tomakeMeasurement
, and returns its result to the caller.- metadata :
-
runQuantum
(butlerQC, inputRefs, outputRefs)¶ Do Butler I/O to provide in-memory objects for run.
This specialization of runQuantum performs error-handling specific to MetricTasks.
-
timer
(name: str, logLevel: int = 10) → Iterator[None]¶ Context manager to log performance data for an arbitrary block of code.
Parameters: See also
timer.logInfo
Examples
Creating a timer context:
with self.timer("someCodeToTime"): pass # code to time