MACS3.Signal.SignalProcessing module

Module Description: functions to find maxima minima or smooth the signal tracks.

This code is free software; you can redistribute it and/or modify it under the terms of the BSD License (see the file LICENSE included with the distribution).

MACS3.Signal.SignalProcessing.bool(*args, **kwargs)
MACS3.Signal.SignalProcessing.enforce_peakyness(signal, maxima)

requires peaks described by a signal and a set of points where the signal is at a maximum to meet a certain set of criteria

maxima which do not meet the required criteria are discarded

criteria:

for each peak:

calculate a threshold of the maximum of its adjacent two minima plus the sqrt of that value

subtract the threshold from the region bounded by those minima

clip that region if negative values occur inside it

require it be > 50 bp in width – controlled by is_valied_peak()

require that it not be too flat (< 6 unique values) – controlled by is_valid_peak()

MACS3.Signal.SignalProcessing.enforce_valleys(signal, summits, min_valley=0.8)

require a value of <= min_valley * lower summit between each pair of summits

Return type:

_fake_callable

MACS3.Signal.SignalProcessing.hard_clip(signal, maximum)

clip the signal in both directions at the nearest values <= 0 to position maximum

Return type:

_fake_callable

MACS3.Signal.SignalProcessing.internal_minima(signal, maxima)
Return type:

_fake_callable

MACS3.Signal.SignalProcessing.is_valid_peak(signal, maximum)
Return type:

_fake_callable

MACS3.Signal.SignalProcessing.maxima(signal, window_size=51)

return the local maxima in a signal after applying a 2nd order Savitsky-Golay (polynomial) filter using window_size specified

Return type:

_fake_callable

MACS3.Signal.SignalProcessing.savitzky_golay(y, window_size, order, deriv=0, rate=1)

Smooth (and optionally differentiate) data with a Savitzky-Golay filter. The Savitzky-Golay filter removes high frequency noise from data. It has the advantage of preserving the original shape and features of the signal better than other types of filtering approaches, such as moving averages techniques. :type y: None :param y: the values of the time history of the signal. :type y: array_like, shape (N,) :type window_size: typedef :param window_size: the length of the window. Must be an odd integer number. :type window_size: int :type order: typedef :param order: the order of the polynomial used in the filtering.

Must be less then window_size - 1.

Parameters:

deriv (int) – the order of the derivative to compute (default = 0 means only smoothing)

Returns:

ys – the smoothed signal (or it’s n-th derivative).

Return type:

ndarray, shape (N)

Notes

The Savitzky-Golay is a type of low-pass filter, particularly suited for smoothing noisy data. The main idea behind this approach is to make for each point a least-square fit with a polynomial of high order over a odd-sized window centered at the point.

Examples

t = np.linspace(-4, 4, 500) y = np.exp(-t**2) + np.random.normal(0, 0.05, t.shape) ysg = savitzky_golay(y, window_size=31, order=4) import matplotlib.pyplot as plt plt.plot(t, y, label=’Noisy signal’) plt.plot(t, np.exp(-t**2), ‘k’, lw=1.5, label=’Original signal’) plt.plot(t, ysg, ‘r’, label=’Filtered signal’) plt.legend() plt.show()

References

MACS3.Signal.SignalProcessing.savitzky_golay_order2_deriv1(signal, window_size)

Smooth (and optionally differentiate) data with a Savitzky-Golay filter. The Savitzky-Golay filter removes high frequency noise from data. It has the advantage of preserving the original shape and features of the signal better than other types of filtering approaches, such as moving averages techhniques. :param y: the values of the time history of the signal. :type y: array_like, shape (N,) :type window_size: typedef :param window_size: the length of the window. Must be an odd integer number. :type window_size: int :param deriv: the order of the derivative to compute (default = 0 means only smoothing) :type deriv: int

Returns:

ys – the smoothed signal (or it’s n-th derivative).

Return type:

ndarray, shape (N)

Notes

The Savitzky-Golay is a type of low-pass filter, particularly suited for smoothing noisy data. The main idea behind this approach is to make for each point a least-square fit with a polynomial of high order over a odd-sized window centered at the point.

References

MACS3.Signal.SignalProcessing.sqrt(threshold)
Return type:

typedef

MACS3.Signal.SignalProcessing.too_flat(signal)

return whether signal has at least 6 unique values

Return type:

_fake_callable