Cubic spline approximation (smoothing)
Project description
CSAPS: Cubic spline approximation (smoothing)
csaps is a package for univariate, multivariate and nd-gridded data approximation using cubic smoothing splines.
Installation
Python 3.5 or above is supported.
pip install -U csaps
The module depends only on NumPy and SciPy.
Simple Examples
Here are a couple of examples of smoothing data.
An univariate data smoothing:
import numpy as np
import matplotlib.pyplot as plt
from csaps import csaps
np.random.seed(1234)
x = np.linspace(-5., 5., 25)
y = np.exp(-(x/2.5)**2) + (np.random.rand(25) - 0.2) * 0.3
xs = np.linspace(x[0], x[-1], 150)
ys = csaps(x, y, xs, smooth=0.85)
plt.plot(x, y, 'o', xs, ys, '-')
plt.show()
A surface data smoothing:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from csaps import csaps
np.random.seed(1234)
xdata = [np.linspace(-3, 3, 41), np.linspace(-3.5, 3.5, 31)]
i, j = np.meshgrid(*xdata, indexing='ij')
ydata = (3 * (1 - j)**2. * np.exp(-(j**2) - (i + 1)**2)
- 10 * (j / 5 - j**3 - i**5) * np.exp(-j**2 - i**2)
- 1 / 3 * np.exp(-(j + 1)**2 - i**2))
ydata = ydata + (np.random.randn(*ydata.shape) * 0.75)
ydata_s = csaps(xdata, ydata, xdata, smooth=0.988)
fig = plt.figure(figsize=(7, 4.5))
ax = fig.add_subplot(111, projection='3d')
ax.set_facecolor('none')
c = [s['color'] for s in plt.rcParams['axes.prop_cycle']]
ax.plot_wireframe(j, i, ydata, linewidths=0.5, color=c[0], alpha=0.5)
ax.scatter(j, i, ydata, s=10, c=c[0], alpha=0.5)
ax.plot_surface(j, i, ydata_s, color=c[1], linewidth=0, alpha=1.0)
ax.view_init(elev=9., azim=290)
plt.show()
Documentation
More examples of usage and the full documentation can be found at ReadTheDocs.
Testing
pytest, tox and Travis CI are used for testing. Please see test_csaps.py.
Algorithms and implementations
csaps package is a Python modified port of MATLAB CSAPS function that is an implementation of Fortran routine SMOOTH from PGS (originally written by Carl de Boor).
csaps-cpp C++11 Eigen based implementation of the algorithm.
References
C. de Boor, A Practical Guide to Splines, Springer-Verlag, 1978.
License
Changelog
v0.8.0
- Add
csaps
function that can be used as the main API - Refactor the internal structure of the package
- Add the documentation
Attention
This is the last version that supports Python 3.5. The next versions will support Python 3.6 or above.
v0.7.0
- Add Generic-based type-hints and mypy-compatibility
v0.6.1
- A slight refactoring and extra data copies removing
v0.6.0
- Add "axis" parameter for univariate/multivariate cases
v0.5.0
- Reorganize the project to package-based structure
- Add the interface class for all smoothing spline classes
v0.4.2
- FIX: "smooth" value is 0.0 was not used
v0.4.1
- First PyPI release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.