Source code for piogrowth.turbistat
import pandas as pd
from scipy.signal import find_peaks
[docs]
def detect_peaks(
series: pd.Series,
distance: int = 300,
prominence: float = None,
) -> pd.Series:
"""Detect peaks in a pandas Series using scipy's find_peaks function.
Args:
series (pd.Series): The input time series data.
distance (int): Minimum horizontal distance (in number of samples)
between neighboring peaks.
prominence (float): Required prominence of peaks. If None, defaults to
one-fifth of the maximum value in the series.
Returns:
pd.Series: Detected peaks in the series.
"""
s = series.dropna()
if prominence is None:
prominence = s.max() / 5
peaks, _ = find_peaks(s, distance=distance, prominence=prominence)
return s.iloc[peaks]