perda.utils.integrate#
- perda.utils.integrate.average_over_time_range(data_instance, start_time=0, end_time=-1, source_time_unit=Timescale.MS, target_time_unit=Timescale.S)[source]#
Get average value over time using integral divided by time range.
- Parameters:
data_instance (DataInstance) – DataInstance to average
start_time (int, optional) – Start time for averaging. Default is 0
end_time (int, optional) – End time for averaging. -1 means end of data. Default is -1
source_time_unit (Timescale, optional) – Time unit of inputs. Default is Timescale.MS
target_time_unit (Timescale, optional) – Target time unit for averaging. Default is Timescale.S
- Returns:
Time-weighted average value over the time range
- Return type:
float
Notes
Uses numpy.trapezoid (trapezoidal rule) for numerical integration of discrete data.
- perda.utils.integrate.get_data_slice_by_timestamp(original_instance, start_time=0, end_time=-1)[source]#
Get a new DataInstance with data in [start_time, end_time).
- Parameters:
original_instance (DataInstance) – Original DataInstance to slice
start_time (int, optional) – Start time (inclusive). Default is 0
end_time (int, optional) – End time (exclusive). -1 means till end. Default is -1
- Returns:
New DataInstance containing only data within the specified time range
- Return type:
- perda.utils.integrate.integrate_over_time_range(data_instance, start_time=0, end_time=-1, source_time_unit=Timescale.MS, target_time_unit=Timescale.S)[source]#
Get integral of the value over time using the trapezoidal rule.
- Parameters:
data_instance (DataInstance) – DataInstance to integrate
start_time (int, optional) – Start time for integration. Default is 0
end_time (int, optional) – End time for integration. -1 means end of data. Default is -1
source_time_unit (Timescale, optional) – Time unit of inputs. Default is Timescale.MS
target_time_unit (Timescale, optional) – Target time unit for averaging. Default is Timescale.S
- Returns:
Integral of the value over the time range
- Return type:
float
Notes
Uses numpy.trapezoid (trapezoidal rule) for numerical integration of discrete data.
- perda.utils.integrate.smoothed_filtered_integration(data, source_time_unit=Timescale.US, target_time_unit=Timescale.S, filter_window_size=10, n_sigmas=3, smoothing_window_len=11, smoothing_poly_order=2)[source]#
Integrate a time-series signal after outlier removal and smoothing.
Cleans spikes via rolling MAD-based outlier detection, applies Savitzky-Golay smoothing, then computes the cumulative trapezoidal integral over time.
- Parameters:
data (DataInstance) – Time-series signal to integrate.
source_time_unit (Timescale) – Time unit of inputs. Default is Timescale.US.
target_time_unit (Timescale) – Target time unit for integration result. Default is Timescale.S.
filter_window_size (int) – Rolling window size used for median and MAD outlier detection.
n_sigmas (float) – Number of scaled MAD units beyond which a point is considered an outlier.
smoothing_window_len (int) – Window length for Savitzky-Golay smoothing filter.
smoothing_poly_order (int) – Polynomial order for Savitzky-Golay smoothing filter.
- Returns:
A tuple of (timestamps, smoothed values, cumulative integral), all of the same length as the input signal.
- Return type:
tuple[NDArray[Float64], NDArray[Float64], NDArray[Float64]]