Measurement¶
-
class
lsst.verify.
Measurement
(metric, quantity=None, blobs=None, extras=None, notes=None)¶ Bases:
lsst.verify.jsonmixin.JsonSerializationMixin
A measurement of a single
Metric
.A measurement is associated with a single
Metric
and consists of aastropy.units.Quantity
value. In addition, a measurement can be augmented withBlob
s (either shared, or directly associated with the measurement’sMeasurement.extras
) and metadata (Measurement.notes
).Parameters: - metric :
str
,lsst.verify.Name
, orlsst.verify.Metric
The name of this metric or the corresponding
Metric
instance. If aMetric
is provided then the units of thequantity
argument are automatically validated.- quantity :
astropy.units.Quantity
, optional The measured value as an Astropy
Quantity
. If aMetric
instance is provided, the units ofquantity
are compared to theMetric
’s units for compatibility. Thequantity
can also be set, updated, or read with theMeasurement.quantity
attribute.- blobs :
list
ofBlob
s, optional List of
lsst.verify.Blob
instances that are associated with a measurement. Blobs are datasets that can be associated with many measurements and provide context to a measurement.- extras :
dict
oflsst.verify.Datum
instances, optional Datum
instances can be attached to a measurement. Extras can be accessed from theMeasurement.extras
attribute.- notes :
dict
, optional Measurement annotations. These key-value pairs are automatically available from
Job.meta
, though keys are prefixed with the metric’s name. This metadata can be queried by specifications, so that specifications can be written to test only certain types of measurements.
Raises: - TypeError
Raised if arguments are not valid types.
Attributes Summary
blobs
dict
oflsst.verify.Blob
s associated with this measurement.datum
Representation of this measurement as a Datum
.description
Description of the metric ( str
, orNone
ifMeasurement.metric
is not set).extras
Blob
associated solely to this measurement.identifier
Unique UUID4-based identifier for this measurement ( str
, immutable).json
A dict
that can be serialized as semantic SQUASH JSON.metric
Metric associated with the measurement ( lsst.verify.Metric
orNone
, mutable).metric_name
Name of the corresponding metric ( lsst.verify.Name
, mutable).notes
Measurement annotations as key-value pairs ( dict
).quantity
astropy.units.Quantity
component of the measurement (mutable).Methods Summary
deserialize
([metric, identifier, value, …])Create a Measurement instance from a parsed YAML/JSON document. jsonify_dict
(d)Recursively build JSON-renderable objects on all values in a dict. link_blob
(blob)Link a Blob
to this measurement.write_json
(filepath)Write JSON to a file. Attributes Documentation
-
blobs
= None¶ dict
oflsst.verify.Blob
s associated with this measurement.See also
-
description
¶ Description of the metric (
str
, orNone
ifMeasurement.metric
is not set).
-
extras
= None¶ Blob
associated solely to this measurement.Notes
extras
work just likeBlob
s, but they’re automatically created with eachMeasurement
. AddDatum
s toextras
if thoseDatum
s only make sense in the context of thatMeasurement
. IfDatum
s are relevant to multiple measurements, add them to an externalBlob
instance and attach them to each measurements’sMeasurement.blobs
attribute through theMeasurement.link_blob
method.
-
json
¶ A
dict
that can be serialized as semantic SQUASH JSON.Fields:
metric
(str
) Name of the metric the measurement measures.identifier
(str
) Unique identifier for this measurement.value
(float
) Value of the measurement.unit
(str
) Units of thevalue
, as anastropy.units
-compatible string.blob_refs
(list
ofstr
) List ofBlob.identifier
s for Blobs associated with this measurement.
Note
Blob
s are not serialized with a measurement, only their identifiers. Thelsst.verify.Job
class handles serialization of blobs alongside measurements.Likewise,
Measurement.notes
are not serialized with the measurement. They are included withlsst.verify.Job
’s serialization, alongside job-level metadata.
-
metric
¶ Metric associated with the measurement (
lsst.verify.Metric
orNone
, mutable).
-
metric_name
¶ Name of the corresponding metric (
lsst.verify.Name
, mutable).
-
notes
¶ Measurement annotations as key-value pairs (
dict
).These key-value pairs are automatically available from
Job.meta
, though keys are prefixed with theMetric
’s name. This metadata can be queried bySpecification
s, so thatSpecification
s can be written to test only certain types ofMeasurement
s.
-
quantity
¶ astropy.units.Quantity
component of the measurement (mutable).
Methods Documentation
-
classmethod
deserialize
(metric=None, identifier=None, value=None, unit=None, blob_refs=None, blobs=None, **kwargs)¶ Create a Measurement instance from a parsed YAML/JSON document.
Parameters: - metric :
str
Name of the metric the measurement measures.
- identifier :
str
Unique identifier for this measurement.
- value :
float
Value of the measurement.
- unit :
str
Units of the
value
, as anastropy.units
-compatible string.- blob_refs :
list
ofstr
List of
Blob.identifier
s for Blob associated with this measurement.- blobs :
BlobSet
BlobSet
containing allBlob
s referenced by the measurement’sblob_refs
field. Note that theBlobSet
must be created separately, prior to deserializing measurement objects.
Returns: - measurement :
Measurement
Measurement instance.
- metric :
-
static
jsonify_dict
(d)¶ Recursively build JSON-renderable objects on all values in a dict.
Parameters: - d :
dict
Dictionary to convert into a JSON-serializable object. Values are recursively JSON-ified.
Returns: - json_dict :
dict
Dictionary that can be serialized to JSON.
Examples
Subclasses can use this method to prepare output in their
json
-method implementation. For example:def json(self): return JsonSerializationMixin.jsonify_dict({ 'value': self.value, })
- d :
-
link_blob
(blob)¶ Link a
Blob
to this measurement.Blobs can be linked to a measurement so that they can be retrieved by analysis and visualization tools post-serialization. Blob data is not copied, and one blob can be linked to multiple measurements.
Parameters: - blob :
lsst.verify.Blob
A
Blob
instance.
Notes
After linking, the
Blob
instance can be accessed by name (Blob.name
) through theMeasurement.blobs
dict
.- blob :
- metric :