|
|
|
@ -3,7 +3,8 @@ Provides class MeasurementSet, a class used to perform checks and adjustments
|
|
|
|
|
on a group of measurements at the same time.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
__all__ = ['MeasurementSet']
|
|
|
|
|
|
|
|
|
|
__all__ = ["MeasurementSet"]
|
|
|
|
|
from .lasp_measurement import Measurement, MeasurementType
|
|
|
|
|
from typing import List
|
|
|
|
|
import time
|
|
|
|
@ -16,7 +17,7 @@ class MeasurementSet(list):
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def __init__(self, mlist: List[Measurement]=[]):
|
|
|
|
|
def __init__(self, mlist: List[Measurement] = []):
|
|
|
|
|
"""
|
|
|
|
|
Initialize a measurement set
|
|
|
|
|
|
|
|
|
@ -25,7 +26,7 @@ class MeasurementSet(list):
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
if any([not isinstance(i, Measurement) for i in mlist]):
|
|
|
|
|
raise TypeError('Object in list should be of Measurement type')
|
|
|
|
|
raise TypeError("Object in list should be of Measurement type")
|
|
|
|
|
|
|
|
|
|
# Sort by time stamp, otherwise the order is random
|
|
|
|
|
mlist.sort(key=lambda x: x.time, reverse=True)
|
|
|
|
@ -47,6 +48,18 @@ class MeasurementSet(list):
|
|
|
|
|
mnewest = m
|
|
|
|
|
return mnewest
|
|
|
|
|
|
|
|
|
|
def getReferenceMeasurements(self, mtype: MeasurementType):
|
|
|
|
|
"""Get all available reference measurements of a certain type in the
|
|
|
|
|
current set.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
mtype (MeasurementType): The type of which to list
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
a new measurement set including all measurements of a certain type
|
|
|
|
|
"""
|
|
|
|
|
return [m for m in self if m.measurementType() == mtype]
|
|
|
|
|
|
|
|
|
|
def getNewestReferenceMeasurements(self):
|
|
|
|
|
"""Returns a dictionary with newest measurement of each type that is not specific returns None in case no measurement is found."""
|
|
|
|
|
newest = {}
|
|
|
|
@ -63,16 +76,15 @@ class MeasurementSet(list):
|
|
|
|
|
|
|
|
|
|
def newestReferenceOlderThan(self, secs):
|
|
|
|
|
"""Returns a dictionary of references with the newest reference, that is still
|
|
|
|
|
older than `secs` seconds. """
|
|
|
|
|
older than `secs` seconds."""
|
|
|
|
|
curtime = time.time()
|
|
|
|
|
newest = self.getNewestReferenceMeasurements()
|
|
|
|
|
newest_older_than = {}
|
|
|
|
|
newest_older_than = {}
|
|
|
|
|
for key, m in newest.items():
|
|
|
|
|
if curtime - m.time >= secs:
|
|
|
|
|
newest_older_than[key] = m
|
|
|
|
|
return newest_older_than
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def measTimeSame(self):
|
|
|
|
|
"""
|
|
|
|
|
Returns True if all measurements have the same measurement
|
|
|
|
|