Source code for bycycle.utils.timeseries
"""Utility functions for working with time series."""
import numpy as np
from bycycle.utils.checks import check_param_range
###################################################################################################
###################################################################################################
[docs]def limit_signal(times, sig, start=None, stop=None):
"""Restrict signal and times to be within time limits.
Parameters
----------
times : 1d array
Time definition for the time series.
sig : 1d array
Time series.
start : float
The lower time limit, in seconds, to restrict the signal.
stop : float
The upper time limit, in seconds, to restrict the signal.
Returns
-------
sig : 1d array
A limited time series.
times : 1d array
A limited time definition.
Examples
--------
Restrict a signal and times to the first second:
>>> from neurodsp.sim import sim_bursty_oscillation
>>> from neurodsp.utils import create_times
>>> sig = sim_bursty_oscillation(n_seconds=10, fs=500, freq=10)
>>> times = create_times(n_seconds=10, fs=500)
>>> sig, times = limit_signal(times, sig, start=0, stop=1)
"""
# Ensure arguments are within valid range
check_param_range(start, 'start', (0, stop))
check_param_range(stop, 'stop', (start, np.inf))
if start is not None:
sig = sig[times >= start]
times = times[times >= start]
if stop is not None:
sig = sig[times < stop]
times = times[times < stop]
return sig, times