Source code for bycycle.burst.amp

"""Detect bursts: amplitude threshold approach."""

from bycycle.utils.checks import check_param_range
from bycycle.burst.utils import check_min_burst_cycles

###################################################################################################
###################################################################################################

[docs]def detect_bursts_amp(df_features, burst_fraction_threshold=1, min_n_cycles=3): """Detect bursts based on amplitude thresholding. Parameters ---------- df_features : pandas.DataFrame Waveform features for individual cycles from :func:`~.compute_burst_features`. burst_fraction_threshold : int or float, optional, default: 1 Minimum fraction of a cycle to be identified as a burst. min_n_cycles : int, optional, default: 3 The minimum number of cycles of consecutive cycles required to be considered a burst. Returns ------- df_features : pandas.DataFrame Dataframe updated, with a additional column to indicate if the cycle is part of a burst. Examples -------- Apply thresholding for dual amplitude burst detection: >>> from bycycle.features import compute_burst_features, compute_shape_features >>> from neurodsp.sim import sim_bursty_oscillation >>> fs = 500 >>> sig = sim_bursty_oscillation(10, fs, freq=10) >>> df_shapes = compute_shape_features(sig, fs, f_range=(8, 12)) >>> df_burst = compute_burst_features(df_shapes, sig, burst_method='amp', ... burst_kwargs={'fs': fs, 'f_range': (8, 12)}) >>> df_burst = detect_bursts_amp(df_burst) """ # Ensure arguments are within valid ranges check_param_range(burst_fraction_threshold, 'burst_fraction_threshold', (0, 1)) # Determine cycles that are defined as bursting throughout the whole cycle is_burst = [frac >= burst_fraction_threshold for frac in df_features['burst_fraction']] df_features['is_burst'] = check_min_burst_cycles(is_burst, min_n_cycles=min_n_cycles) return df_features