Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
... n_fft=n_fft)
>>> mags_db = librosa.power_to_db(mags, amin=amin)
>>> ax = plt.subplot(2, 1, 1)
>>> librosa.display.specshow(mags_db, x_axis="s", y_axis="linear", sr=sr,
... hop_length=n_fft//4, cmap="gray_r")
>>> plt.title("Spectrogram")
>>> plt.tick_params(axis='x', labelbottom=False)
>>> plt.xlabel("")
>>> plt.subplot(2, 1, 2, sharex=ax, sharey=ax)
>>> plt.scatter(times, freqs, c=mags_db, alpha=0.05, cmap="gray_r")
>>> plt.clim(10*np.log10(amin), np.max(mags_db))
>>> plt.title("Reassigned spectrogram"))
"""
if not six.callable(ref_power) and ref_power < 0:
raise ParameterError("ref_power must be non-negative or callable.")
if not reassign_frequencies and not reassign_times:
raise ParameterError(
"reassign_frequencies or reassign_times must be True."
)
if win_length is None:
win_length = n_fft
if hop_length is None:
hop_length = int(win_length // 4)
# frequency and time reassignment if requested
if reassign_frequencies:
freqs, S = __reassign_frequencies(
y=y,
>>> plt.figure(figsize=(10, 4))
>>> plt.subplot(1,2,1)
>>> librosa.display.specshow(rec, x_axis='frames', y_axis='frames')
>>> plt.title('Recurrence matrix')
>>> plt.colorbar()
>>> plt.subplot(1,2,2)
>>> librosa.display.specshow(score, x_axis='frames', y_axis='frames')
>>> plt.title('Alignment score matrix')
>>> plt.plot(path[:, 1], path[:, 0], label='Optimal path', color='c')
>>> plt.colorbar()
>>> plt.legend()
>>> plt.show()
'''
if gap_onset < 0:
raise ParameterError('gap_onset={} must be strictly positive')
if gap_extend < 0:
raise ParameterError('gap_extend={} must be strictly positive')
score, pointers = __rqa_dp(sim, gap_onset, gap_extend, knight_moves)
if backtrack:
path = __rqa_backtrack(score, pointers)
return score, path
return score
'''
if pre_max < 0:
raise ParameterError('pre_max must be non-negative')
if pre_avg < 0:
raise ParameterError('pre_avg must be non-negative')
if delta < 0:
raise ParameterError('delta must be non-negative')
if wait < 0:
raise ParameterError('wait must be non-negative')
if post_max <= 0:
raise ParameterError('post_max must be positive')
if post_avg <= 0:
raise ParameterError('post_avg must be positive')
if x.ndim != 1:
raise ParameterError('input array must be one-dimensional')
# Ensure valid index types
pre_max = valid_int(pre_max, cast=np.ceil)
post_max = valid_int(post_max, cast=np.ceil)
pre_avg = valid_int(pre_avg, cast=np.ceil)
post_avg = valid_int(post_avg, cast=np.ceil)
wait = valid_int(wait, cast=np.ceil)
# Get the maximum of the signal over a sliding window
max_length = pre_max + post_max
max_origin = np.ceil(0.5 * (pre_max - post_max))
# Using mode='constant' and cval=x.min() effectively truncates
# the sliding window at the boundaries
>>> p_trans = np.array([[0.7, 0.3], [0.4, 0.6]])
>>> path, logp = librosa.sequence.viterbi(p_emit, p_trans, p_init,
... return_logp=True)
>>> print(logp, path)
-4.19173690823075 [0 0 1]
'''
n_states, n_steps = prob.shape
if transition.shape != (n_states, n_states):
raise ParameterError('transition.shape={}, must be '
'(n_states, n_states)={}'.format(transition.shape,
(n_states, n_states)))
if np.any(transition < 0) or not np.allclose(transition.sum(axis=1), 1):
raise ParameterError('Invalid transition matrix: must be non-negative '
'and sum to 1 on each row.')
if np.any(prob < 0) or np.any(prob > 1):
raise ParameterError('Invalid probability values: must be between 0 and 1.')
states = np.zeros(n_steps, dtype=int)
values = np.zeros((n_steps, n_states), dtype=float)
ptr = np.zeros((n_steps, n_states), dtype=int)
# Compute log-likelihoods while avoiding log-underflow
epsilon = np.finfo(prob.dtype).tiny
log_trans = np.log(transition + epsilon)
log_prob = np.log(prob.T + epsilon)
if p_init is None:
p_init = np.empty(n_states)
magnitude = np.abs(S)
else:
magnitude = S
if six.callable(ref):
# User supplied a function to calculate reference power
ref_value = ref(magnitude)
else:
ref_value = np.abs(ref)
log_spec = 10.0 * np.log10(np.maximum(amin, magnitude))
log_spec -= 10.0 * np.log10(np.maximum(amin, ref_value))
if top_db is not None:
if top_db < 0:
raise ParameterError('top_db must be non-negative')
log_spec = np.maximum(log_spec, log_spec.max() - top_db)
return log_spec
--------
constant_q
librosa.core.cqt
'''
if fmin <= 0:
raise ParameterError('fmin must be positive')
if bins_per_octave <= 0:
raise ParameterError('bins_per_octave must be positive')
if filter_scale <= 0:
raise ParameterError('filter_scale must be positive')
if n_bins <= 0 or not isinstance(n_bins, int):
raise ParameterError('n_bins must be a positive integer')
if isinstance(tuning, Deprecated):
tuning = 0.0
else:
warnings.warn('The `tuning` parameter to `filters.constant_q_lengths` is deprecated in librosa 0.7.1.'
'It will be removed in 0.8.0.', DeprecationWarning)
correction = 2.0**(float(tuning) / bins_per_octave)
fmin = correction * fmin
# Q should be capitalized here, so we suppress the name warning
# pylint: disable=invalid-name
Q = float(filter_scale) / (2.0**(1. / bins_per_octave) - 1)
# Compute the frequencies
freq = fmin * (2.0 ** (np.arange(n_bins, dtype=float) / bins_per_octave))
return window(Nx)
elif (isinstance(window, (six.string_types, tuple)) or
np.isscalar(window)):
# TODO: if we add custom window functions in librosa, call them here
return scipy.signal.get_window(window, Nx, fftbins=fftbins)
elif isinstance(window, (np.ndarray, list)):
if len(window) == Nx:
return np.asarray(window)
raise ParameterError('Window size mismatch: '
'{:d} != {:d}'.format(len(window), Nx))
else:
raise ParameterError('Invalid window specification: {}'.format(window))
or is otherwise mis-specified.
'''
if six.callable(window):
return window(Nx)
elif (isinstance(window, (six.string_types, tuple)) or
np.isscalar(window)):
# TODO: if we add custom window functions in librosa, call them here
return scipy.signal.get_window(window, Nx, fftbins=fftbins)
elif isinstance(window, (np.ndarray, list)):
if len(window) == Nx:
return np.asarray(window)
raise ParameterError('Window size mismatch: '
'{:d} != {:d}'.format(len(window), Nx))
else:
raise ParameterError('Invalid window specification: {}'.format(window))
>>> librosa.display.specshow(mfcc_delta2, x_axis='time')
>>> plt.title(r'MFCC-$\Delta^2$')
>>> plt.colorbar()
>>> plt.tight_layout()
>>> plt.show()
'''
data = np.atleast_1d(data)
if mode == 'interp' and width > data.shape[axis]:
raise ParameterError("when mode='interp', width={} "
"cannot exceed data.shape[axis]={}".format(width, data.shape[axis]))
if width < 3 or np.mod(width, 2) != 1:
raise ParameterError('width must be an odd integer >= 3')
if order <= 0 or not isinstance(order, int):
raise ParameterError('order must be a positive integer')
kwargs.pop('deriv', None)
kwargs.setdefault('polyorder', order)
return scipy.signal.savgol_filter(data, width,
deriv=order,
axis=axis,
mode=mode,
**kwargs)
Examples
--------
>>> # Generate a random sparse binary matrix
>>> X = scipy.sparse.lil_matrix(np.random.randint(0, 2, size=(5,5)))
>>> X_roll = roll_sparse(X, 2, axis=0) # Roll by 2 on the first axis
>>> X_dense_r = roll_sparse(X.toarray(), 2, axis=0) # Equivalent dense roll
>>> np.allclose(X_roll, X_dense_r.toarray())
True
'''
if not scipy.sparse.isspmatrix(x):
return np.roll(x, shift, axis=axis)
# shift-mod-length lets us have shift > x.shape[axis]
if axis not in [0, 1, -1]:
raise ParameterError('axis must be one of (0, 1, -1)')
shift = np.mod(shift, x.shape[axis])
if shift == 0:
return x.copy()
fmt = x.format
if axis == 0:
x = x.tocsc()
elif axis in (-1, 1):
x = x.tocsr()
# lil matrix to start
x_r = scipy.sparse.lil_matrix(x.shape, dtype=x.dtype)
idx_in = [slice(None)] * x.ndim