find_peaks

ipkiss3.all.find_peaks(x, y, method='spline', threshold=None, bandpass=None, smoothing=0)

Find peaks in data varying in one parameter.

Assumes the y data is real and has been preprocessed to represent amplitude or power in linear or logarithmic scale.

Two peak detection methods are available:

  • ‘spline’: Fits the peaks with a cubic B-spline. The 2 x-values for which y goes through the threshold are found

    and finally the mathematical mean between those is used as the peak.

  • ‘cwt’: Finds the peaks using a wavelet convolution. First detects the bandwidths for which y is over threshold and

    uses the maximum bandwidth as a maximum wavelet width.

Depending on the features of the peaks like (a)symmetry and in-band ripple, one method may return better results than the other. Some experimentation may be needed to decide the best method for a specific device spectrum.

Parameters:
x: ndarray or list

Abscissa of the data

y: ndarray or list

Ordinate of the data in which to detect peaks

method: ‘spline’ or ‘cwt’

Peak finding method.

threshold: float or None

Decision threshold for peaks. Defaults to the average between minimum and maximum (independent of what the y data represents).

bandpass: bool or None

Bandpass (True) or bandstop (False) filter. None for auto-detect.

Returns:
peak_x: ndarray

x values where y peaks

peak_y: ndarray

peak y values

Other Parameters:
smoothing: float

Spline smoothing factor (‘spline’ method). Defaults to 0.0

Notes

Peak values in the input arrays x,y are returned. For coarse data, you may want to apply an upfront interpolation or use find_peaks_spline().