bycycle.burst.detect_bursts_dual_threshold

bycycle.burst.detect_bursts_dual_threshold(sig, fs, dual_thresh, f_range=None, min_n_cycles=3, min_burst_duration=None, avg_type='median', magnitude_type='amplitude', **filter_kwargs)[source]

Detect bursts in a signal using the dual threshold algorithm.

Parameters:
sig1d array

Time series.

fsfloat

Sampling rate, in Hz.

dual_threshtuple of (float, float)

Low and high threshold values for burst detection. Units are normalized by the average signal magnitude.

f_rangetuple of (float, float), optional

Frequency range, to filter signal to, before running burst detection. If f_range is None, then no filtering is applied prior to running burst detection.

min_n_cyclesfloat, optional, default: 3

Minimum burst duration in to keep. Only used if f_range is defined, and is used as the number of cycles at f_range[0].

min_burst_durationfloat, optional, default: None

Minimum length of a burst, in seconds. Must be defined if not filtering. Only used if f_range is not defined, or if min_n_cycles is set to None.

avg_type{‘median’, ‘mean’}, optional

Averaging method to use to normalize the magnitude that is used for thresholding.

magnitude_type{‘amplitude’, ‘power’}, optional

Metric of magnitude used for thresholding.

**filter_kwargs

Keyword parameters to pass to filter_signal.

Returns:
is_burst1d array

Boolean indication of where bursts are present in the input signal. True indicates that a burst was detected at that sample, otherwise False.

Notes

The dual-threshold burst detection algorithm was originally proposed in [1].

References

[1]

Feingold, J., Gibson, D. J., DePasquale, B., & Graybiel, A. M. (2015). Bursts of beta oscillation differentiate postperformance activity in the striatum and motor cortex of monkeys performing movement tasks. Proceedings of the National Academy of Sciences, 112(44), 13687–13692. DOI: https://doi.org/10.1073/pnas.1517629112

Examples

Detect bursts using the dual threshold algorithm:

>>> from neurodsp.sim import sim_combined
>>> sig = sim_combined(n_seconds=10, fs=500,
...                    components={'sim_synaptic_current': {},
...                                'sim_bursty_oscillation' : {'freq': 10}},
...                    component_variances=[0.1, 0.9])
>>> is_burst = detect_bursts_dual_threshold(sig, fs=500, dual_thresh=(1, 2), f_range=(8, 12))