Source code for energy_analysis_toolbox.timeseries.profiles.thresholds.relative

"""Module for computing threshold profiles based on relative deviations.

This module provides tools to calculate profiles that deviate from the mean profile
by a user-defined relative offset. The profiles are designed to scale proportionally
with the baseline consumption pattern derived from historical data.
"""

import pandas as pd

from energy_analysis_toolbox.timeseries.profiles.mean_profile import MeanProfile


[docs] class RelativeThreshold(MeanProfile): """A class which implements a relative deviation from the mean profile.""" def __init__( self, offset_relative: float = 0.5, **kwargs, ) -> None: """Return a threshold profile. The threshold profile is obtained using a user-defined relative variation from the mean profile built from history. Parameters ---------- offset_rel : float, optional Relative difference VS the computed reference to obtain the threshold profile. Default is 0.5 (profile is 150% of reference) """ self.offset_rel = offset_relative super().__init__(**kwargs)
[docs] def compute( self, history: pd.Series, time: pd.Timestamp, **kwargs, ) -> pd.Series: """Return a threshold profile. The threshold profile is obtained using a user-defined relative variation from the mean profile built from history. Parameters ---------- history : pd.Series Consumption history used to computed the reference profile. time : pd.Timestamp The time at which the profile is of interest. Only the information about the date is used in the passed timestamp. Returns ------- profile : pd.Series Profile threshold with same resolution as the history data. Notes ----- The profile threshold is obtained as ``(1 + tshd) *`` the mean profile obtained from history. """ reference = super().compute(history, time, **kwargs) offset = self.offset_rel * reference offset.index = reference.index return reference + offset