pybaselines.smooth.swima
- pybaselines.smooth.swima(data, min_half_window=3, max_half_window=None, smooth_half_window=None, x_data=None, pad_kwargs=None, **kwargs)[source]
Small-window moving average (SWiMA) baseline.
Computes an iterative moving average to smooth peaks and obtain the baseline.
- Parameters:
- dataarray_like, shape (N,)
The y-values of the measured data, with N data points.
- min_half_window
int, optional The minimum half window value that must be reached before the exit criteria is considered. Can be increased to reduce the calculation time. Default is 3.
- max_half_window
int, optional The maximum number of iterations. Default is None, which will use (N - 1) / 2. Typically does not need to be specified.
- smooth_half_window
int, optional The half window to use for smoothing the input data with a moving average. Default is None, which will use N / 50. Use a value of 0 or less to not smooth the data. See Notes below for more details.
- x_dataarray_like, optional
The x-values. Not used by this function, but input is allowed for consistency with other functions.
- pad_kwargs
dict, optional A dictionary of keyword arguments to pass to
pad_edges()for padding the edges of the data to prevent edge effects from smoothing. Default is None.- **kwargs
Deprecated since version 1.2.0: Passing additional keyword arguments is deprecated and will be removed in version 1.4.0. Pass keyword arguments using pad_kwargs.
- Returns:
- baseline
numpy.ndarray, shape (N,) The calculated baseline.
dictA dictionary with the following items:
- 'half_window': list(int)
A list of the half windows at which the exit criteria was reached. Has a length of 1 if the main exit criteria was intially reached, otherwise has a length of 2.
- 'converged': list(bool or None)
A list of the convergence status. Has a length of 1 if the main exit criteria was intially reached, otherwise has a length of 2. Each convergence status is True if the main exit criteria was reached, False if the second exit criteria was reached, and None if max_half_window is reached before either exit criteria.
- baseline
Notes
This algorithm requires the input data to be fairly smooth (noise-free), so it is recommended to either smooth the data beforehand, or specify a smooth_half_window value. Non-smooth data can cause the exit criteria to be reached prematurely (can be avoided by setting a larger min_half_window), while over-smoothed data can cause the exit criteria to be reached later than optimal.
The half-window at which convergence occurs is roughly close to the index-based full-width-at-half-maximum of a peak or feature, but can vary. Therfore, it is better to set a min_half_window that is smaller than expected to not miss the exit criteria.
If the main exit criteria is not reached on the initial fit, a gaussian baseline (which is well handled by this algorithm) is added to the data, and it is re-fit.
References
Schulze, H., et al. A Small-Window Moving Average-Based Fully Automated Baseline Estimation Method for Raman Spectra. Applied Spectroscopy, 2012, 66(7), 757-764.