Measurement¶
- class lsst.verify.Measurement(metric, quantity=None, blobs=None, extras=None, notes=None)¶
Bases:
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.
- metric
- Raises:
- TypeError
Raised if arguments are not valid types.
Attributes Summary
dict
oflsst.verify.Blob
s associated with this measurement.Representation of this measurement as a
Datum
.Description of the metric (
str
, orNone
ifMeasurement.metric
is not set).Blob
associated solely to this measurement.Unique UUID4-based identifier for this measurement (
str
, immutable).A
dict
that can be serialized as semantic SQUASH JSON.Metric associated with the measurement (
lsst.verify.Metric
orNone
, mutable).Name of the corresponding metric (
lsst.verify.Name
, mutable).Measurement annotations as key-value pairs (
dict
).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.
- metric
- Returns:
- measurement
Measurement
Measurement instance.
- measurement
- 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.
- d
- Returns:
- json_dict
dict
Dictionary that can be serialized to JSON.
- json_dict
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, })
- 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.
- blob
Notes
After linking, the
Blob
instance can be accessed by name (Blob.name
) through theMeasurement.blobs
dict
.