Source code for perda.utils.data_summary
from ..constants import DELIMITER, title_block
from ..core_data_structures.data_instance import DataInstance
from ..core_data_structures.single_run_data import SingleRunData
from ..units import *
from .integrate import average_over_time_range
[docs]
def data_instance_summary(
data_instance: DataInstance,
source_time_unit: Timescale = Timescale.MS,
target_time_unit: Timescale = Timescale.S,
) -> None:
"""
Print information about a DataInstance.
Parameters
----------
data_instance : DataInstance
The DataInstance to print info about
source_time_unit : Timescale, optional
Time unit of data instance. Default is milliseconds.
target_time_unit : Timescale, optional
Time unit used by the summary. Default is Timescale.S.
"""
print(str(data_instance))
print(DELIMITER)
if len(data_instance) > 0:
min_val = float(data_instance.value_np.min())
max_val = float(data_instance.value_np.max())
min_val_idx = int(data_instance.value_np.argmin())
max_val_idx = int(data_instance.value_np.argmax())
min_ts = float(data_instance.timestamp_np[min_val_idx])
max_ts = float(data_instance.timestamp_np[max_val_idx])
first_ts = float(data_instance.timestamp_np[0])
last_ts = float(data_instance.timestamp_np[-1])
first_ts = convert_time(first_ts, source_time_unit, target_time_unit)
last_ts = convert_time(last_ts, source_time_unit, target_time_unit)
min_ts = convert_time(min_ts, source_time_unit, target_time_unit)
max_ts = convert_time(max_ts, source_time_unit, target_time_unit)
avg_val = average_over_time_range(
data_instance,
source_time_unit=source_time_unit,
target_time_unit=target_time_unit,
)
print(f"Count: {len(data_instance)}")
print(f"Time range: {first_ts:.4f} to {last_ts:.4f} ({target_time_unit.value})")
print(f"Min: {min_val:.4f} at {min_ts:.4f} ({target_time_unit.value})")
print(f"Max: {max_val:.4f} at {max_ts:.4f} ({target_time_unit.value})")
print(f"Average: {avg_val:.4f}")
else:
print("Empty DataInstance.")
[docs]
def single_run_summary(
data: SingleRunData,
time_unit: Timescale = Timescale.S,
) -> None:
"""
Print overall information about the SingleRunData.
Parameters
----------
data : SingleRunData
Data structure containing CSV file data
time_unit : Timescale, optional
Time unit used by the summary. Default is Timescale.S.
"""
start_time = float(data.data_start_time)
end_time = float(data.data_end_time)
start_time = convert_time(start_time, data.timestamp_unit, time_unit)
end_time = convert_time(end_time, data.timestamp_unit, time_unit)
print(title_block("Data Summary"))
print(f"Logging unit: {data.timestamp_unit.value}")
print(f"Time range: {start_time} to {end_time} ({time_unit.value})")
print(f"Total Variable: {len(data.id_to_instance)}")
print(f"Total Data Points: {data.total_data_points}")
print(DELIMITER)