Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
f, t, Sxx = stft_power(data, sf, window=2, step=.2, band=freq_broad,
interp=False, norm=True)
idx_sigma = np.logical_and(f >= freq_sp[0], f <= freq_sp[1])
rel_pow = Sxx[idx_sigma].sum(0)
# Let's interpolate `rel_pow` to get one value per sample
# Note that we could also have use the `interp=True` in the `stft_power`
# function, however 2D interpolation is much slower than
# 1D interpolation.
func = interp1d(t, rel_pow, kind='cubic', bounds_error=False,
fill_value=0)
t = np.arange(data.size) / sf
rel_pow = func(t)
# Now we apply moving RMS and correlation on the sigma-filtered signal
_, mcorr = moving_transform(data_sigma, data, sf, window=.3, step=.1,
method='corr', interp=True)
_, mrms = moving_transform(data_sigma, data, sf, window=.3, step=.1,
method='rms', interp=True)
# Hilbert power (to define the instantaneous frequency / power)
n = data_sigma.size
nfast = next_fast_len(n)
analytic = signal.hilbert(data_sigma, N=nfast)[:n]
inst_phase = np.angle(analytic)
inst_pow = np.square(np.abs(analytic))
# inst_freq = sf / 2pi * 1st-derivative of the phase of the analytic signal
inst_freq = (sf / (2 * np.pi) * np.ediff1d(inst_phase))
# Let's define the thresholds
if hypno is None:
thresh_rms = mrms.mean() + thresh['rms'] * trimbothstd(mrms, cut=0.10)
idx_sigma = np.logical_and(f >= freq_sp[0], f <= freq_sp[1])
rel_pow = Sxx[idx_sigma].sum(0)
# Let's interpolate `rel_pow` to get one value per sample
# Note that we could also have use the `interp=True` in the `stft_power`
# function, however 2D interpolation is much slower than
# 1D interpolation.
func = interp1d(t, rel_pow, kind='cubic', bounds_error=False,
fill_value=0)
t = np.arange(data.size) / sf
rel_pow = func(t)
# Now we apply moving RMS and correlation on the sigma-filtered signal
_, mcorr = moving_transform(data_sigma, data, sf, window=.3, step=.1,
method='corr', interp=True)
_, mrms = moving_transform(data_sigma, data, sf, window=.3, step=.1,
method='rms', interp=True)
# Hilbert power (to define the instantaneous frequency / power)
n = data_sigma.size
nfast = next_fast_len(n)
analytic = signal.hilbert(data_sigma, N=nfast)[:n]
inst_phase = np.angle(analytic)
inst_pow = np.square(np.abs(analytic))
# inst_freq = sf / 2pi * 1st-derivative of the phase of the analytic signal
inst_freq = (sf / (2 * np.pi) * np.ediff1d(inst_phase))
# Let's define the thresholds
if hypno is None:
thresh_rms = mrms.mean() + thresh['rms'] * trimbothstd(mrms, cut=0.10)
else:
thresh_rms = mrms[mask].mean() + thresh['rms'] * \