mirror of
https://github.com/ARM-software/devlib.git
synced 2025-01-31 02:00:45 +00:00
70 lines
2.4 KiB
ReStructuredText
70 lines
2.4 KiB
ReStructuredText
|
Derived Measurements
|
||
|
=====================
|
||
|
|
||
|
|
||
|
The ``DerivedMeasurements`` API provides a consistent way of performing post
|
||
|
processing on a provided :class:`MeasurementCsv` file.
|
||
|
|
||
|
Example
|
||
|
-------
|
||
|
|
||
|
The following example shows how to use an implementation of a
|
||
|
:class:`DerivedMeasurement` to obtain a list of calculated ``Measurements``.
|
||
|
|
||
|
.. code-block:: ipython
|
||
|
|
||
|
# Import the relevant derived measurement module
|
||
|
# in this example the derived energy module is used.
|
||
|
In [1]: from devlib import DerivedEnergyMeasurements
|
||
|
|
||
|
# Obtain a MeasurementCsv file from an instrument or create from
|
||
|
# existing .csv file. In this example an existing csv file is used which was
|
||
|
# created with a sampling rate of 100Hz
|
||
|
In [2]: from devlib import MeasurementsCsv
|
||
|
In [3]: measurement_csv = MeasurementsCsv('/example/measurements.csv', sample_rate_hz=100)
|
||
|
|
||
|
# Process the file and obtain a list of the derived measurements
|
||
|
In [4]: derived_measurements = DerivedEnergyMeasurements.process(measurement_csv)
|
||
|
|
||
|
In [5]: derived_measurements
|
||
|
Out[5]: [device_energy: 239.1854075 joules, device_power: 5.5494089227 watts]
|
||
|
|
||
|
API
|
||
|
---
|
||
|
|
||
|
Derived Measurements
|
||
|
~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
.. class:: DerivedMeasurements()
|
||
|
|
||
|
The ``DerivedMeasurements`` class is an abstract base for implementing
|
||
|
additional classes to calculate various metrics.
|
||
|
|
||
|
.. method:: DerivedMeasurements.process(measurement_csv)
|
||
|
|
||
|
Returns a list of :class:`Measurement` objects that have been calculated.
|
||
|
|
||
|
|
||
|
|
||
|
Available Derived Measurements
|
||
|
-------------------------------
|
||
|
.. class:: DerivedEnergyMeasurements()
|
||
|
|
||
|
The ``DerivedEnergyMeasurements`` class is used to calculate average power and
|
||
|
cumulative energy for each site if the required data is present.
|
||
|
|
||
|
The calculation of cumulative energy can occur in 3 ways. If a
|
||
|
``site`` contains ``energy`` results, the first and last measurements are extracted
|
||
|
and the delta calculated. If not, a ``timestamp`` channel will be used to calculate
|
||
|
the energy from the power channel, failing back to using the sample rate attribute
|
||
|
of the :class:`MeasurementCsv` file if timestamps are not available. If neither
|
||
|
timestamps or a sample rate are available then an error will be raised.
|
||
|
|
||
|
|
||
|
.. method:: DerivedEnergyMeasurements.process(measurement_csv)
|
||
|
|
||
|
Returns a list of :class:`Measurement` objects that have been calculated for
|
||
|
the average power and cumulative energy for each site.
|
||
|
|
||
|
|