agentMET4FOF metrologically enabled streams¶

class agentMET4FOF.metrological_streams.MetrologicalDataStreamMET4FOF(value_unc: Union[float, Iterable[float]] = 0.0, time_unc: Union[float, Iterable[float]] = 0.0)[source]¶

Abstract class for creating datastreams with metrological information. Inherits from the DataStreamMET4FOF class

To create a new MetrologicalDataStreamMET4FOF class, inherit this class and call set_metadata() in the constructor. Choose one of two types of datastreams to be created:

Alternatively, override the next_sample() function if neither option suits the application. For generator functions, sfreq is a required variable to be set on init which sets the sampling frequency and the time-step which occurs when next_sample() is called.

For an example implementation of using generator function, see the built-in MetrologicalSineGenerator class. See tutorials for more implementations.

_generator_function_unc¶

A generator function for the time and quantity uncertainties which takes in at least one argument time which will be used in next_sample(). The return value must be a 2-tuple of time and value uncertainties each of one of the three types:

  • np.ndarray
  • pandas DataFrame
  • list
Type:Callable
_uncertainty_parameters¶

Any additional keyword arguments to be supplied to the generator function. Both the calls of the value generator function and of the uncertainty generator function will be supplied with the **_uncertainty_parameters.

Type:Dict
_default_uncertainty_generator(time: Union[List[T], pandas.core.frame.DataFrame, numpy.ndarray], values: Union[List[T], pandas.core.frame.DataFrame, numpy.ndarray]) → Tuple[numpy.ndarray, numpy.ndarray][source]¶

Default (standard) uncertainty generator function

Parameters:
  • time (Union[List, DataFrame, np.ndarray]) – timestamps
  • values (Union[List, DataFrame, np.ndarray]) – values corresponding to timestamps
Returns:

constant time and value uncertainties each of the same shape as time

Return type:

Tuple[np.ndarray, np.ndarray]

_next_sample_generator(batch_size: int = 1) → numpy.ndarray[source]¶

Internal method for generating a batch of samples from the generator function. Overrides DataStreamMET4FOF._next_sample_generator(). Adds time uncertainty ut and measurement uncertainty uv to sample

set_generator_function(generator_function: Callable = None, uncertainty_generator: Callable = None, sfreq: int = None, **kwargs) → Callable[source]¶

Set value and uncertainty generators based on user-defined functions. By default, this function resorts to a sine wave generator function and a constant (zero) uncertainty. Initialisation of the generator’s parameters should be done here such as setting the sampling frequency and wave frequency. For setting it with a dataset instead, see set_data_source(). Overwrites the default DataStreamMET4FOF.set_generator_function() method.

Parameters:
  • generator_function (callable) – A generator function which takes in at least one argument time which will be used in next_sample().
  • uncertainty_generator (callable) – An uncertainty generator function which takes in at least one argument time which will be used in next_sample().
  • sfreq (int) – Sampling frequency.
  • **kwargs (Optional[Dict[str, Any]]) – Any additional keyword arguments to be supplied to the generator function. The **kwargs will be saved as _uncertainty_parameters. Both the calls of the value generator function and of the uncertainty generator function will be supplied with the **uncertainty_parameters.
Returns:

The uncertainty generator function

Return type:

Callable

time_unc¶

uncertainties associated with timestamps

Type:Union[float, Iterable[float]]
value_unc¶

uncertainties associated with the values

Type:Union[float, Iterable[float]]
class agentMET4FOF.metrological_streams.MetrologicalSineGenerator(sfreq: int = 500, sine_freq: float = 50, device_id: str = 'SineGenerator', time_name: str = 'time', time_unit: str = 's', quantity_names: Union[str, Tuple[str, ...]] = 'Voltage', quantity_units: Union[str, Tuple[str, ...]] = 'V', misc: Optional[Any] = 'Simple sine wave generator', value_unc: Union[float, Iterable[float]] = 0.1, time_unc: Union[float, Iterable[float]] = 0)[source]¶

Built-in class of sine wave generator

Parameters:
  • sfreq (int, optional) – Sampling frequency which determines the time step when next_sample() is called. Defaults to 500.
  • sine_freq (float, optional) – Frequency of the wave function. Defaults to 50.
  • device_id (str, optional) – Name of the represented generator. Defaults to ‘SineGenerator’.
  • time_name (str, optional) – Name for the time dimension. Defaults to ‘time’.
  • time_unit (str, optional) – Unit for the time. Defaults to ‘s’.
  • quantity_names (iterable of str or str, optional) – An iterable of names of the represented quantities’ values. Defaults to (‘Voltage’)
  • quantity_units (iterable of str or str, optional) – An iterable of units for the quantities’ values. Defaults to (‘V’)
  • misc (Any, optional) – This parameter can take any additional metadata which will be handed over to the corresponding attribute of the created Metadata object. Defaults to ‘Simple sine wave generator’.
  • value_unc (iterable of floats or float, optional) – standard uncertainty(ies) of the quantity values. Defaults to 0.5.
  • time_unc (iterable of floats or float, optional) – standard uncertainty of the time stamps. Defaults to 0.
_sine_wave_function(time, sine_freq)[source]¶

A simple sine wave generator