Spline1D#

class astropy.modeling.spline.Spline1D(knots=None, coeffs=None, degree=3, bounds=None, n_models=None, model_set_axis=None, name=None, meta=None)[source]#

Bases: _Spline

One dimensional Spline Model.

Parameters:
knotsoptional

Define the knots for the spline. Can be 1) the number of interior knots for the spline, 2) the array of all knots for the spline, or 3) If both bounds are defined, the interior knots for the spline

coeffsoptional

The array of knot coefficients for the spline

degreeoptional

The degree of the spline. It must be 1 <= degree <= 5, default is 3.

boundsoptional

The upper and lower bounds of the spline.

Notes

Much of the functionality of this model is provided by scipy.interpolate.BSpline which can be directly accessed via the bspline property.

Fitting for this model is provided by wrappers for: scipy.interpolate.UnivariateSpline, scipy.interpolate.InterpolatedUnivariateSpline, and scipy.interpolate.LSQUnivariateSpline.

If one fails to define any knots/coefficients, no parameters will be added to this model until a fitter is called. This is because some of the fitters for splines vary the number of parameters and so we cannot define the parameter set until after fitting in these cases.

Since parameters are not necessarily known at model initialization, setting model parameters directly via the model interface has been disabled.

Direct constructors are provided for this model which incorporate the fitting to data directly into model construction.

Knot parameters are declared as “fixed” parameters by default to enable the use of other astropy.modeling fitters to be used to fit this model.

Examples

>>> import numpy as np
>>> from astropy.modeling.models import Spline1D
>>> from astropy.modeling import fitting
>>> np.random.seed(42)
>>> x = np.linspace(-3, 3, 50)
>>> y = np.exp(-x**2) + 0.1 * np.random.randn(50)
>>> xs = np.linspace(-3, 3, 1000)

A 1D interpolating spline can be fit to data:

>>> fitter = fitting.SplineInterpolateFitter()
>>> spl = fitter(Spline1D(), x, y)

Similarly, a smoothing spline can be fit to data:

>>> fitter = fitting.SplineSmoothingFitter()
>>> spl = fitter(Spline1D(), x, y, s=0.5)

Similarly, a spline can be fit to data using an exact set of interior knots:

>>> t = [-1, 0, 1]
>>> fitter = fitting.SplineExactKnotsFitter()
>>> spl = fitter(Spline1D(), x, y, t=t)

Attributes Summary

bspline

Scipy bspline object representation.

c

The coefficients vector.

coeffs

Dictionary of coefficient parameters.

degree

The degree of the spline polynomials.

knots

Dictionary of knot parameters.

n_inputs

The number of inputs.

n_outputs

The number of outputs.

optional_inputs

t

The knots vector.

t_interior

The interior knots.

tck

Scipy 'tck' tuple representation.

user_knots

If the knots have been supplied by the user.

Methods Summary

__call__(*inputs[, model_set_axis, ...])

Make model callable to model evaluation.

antiderivative([nu])

Create a spline that is an antiderivative of this one.

derivative([nu])

Create a spline that is the derivative of this one.

evaluate(*args, **kwargs)

Evaluate the spline.

Attributes Documentation

bspline#

Scipy bspline object representation.

c#

The coefficients vector.

coeffs#

Dictionary of coefficient parameters.

degree#

The degree of the spline polynomials.

knots#

Dictionary of knot parameters.

n_inputs = 1#

The number of inputs.

n_outputs = 1#

The number of outputs.

optional_inputs = {'nu': 0}#
t#

The knots vector.

t_interior#

The interior knots.

tck#

Scipy ‘tck’ tuple representation.

user_knots#

If the knots have been supplied by the user.

Methods Documentation

__call__(*inputs, model_set_axis=None, with_bounding_box=False, fill_value=nan, equivalencies=None, inputs_map=None, **new_inputs)#

Make model callable to model evaluation.

antiderivative(nu=1)[source]#

Create a spline that is an antiderivative of this one.

Parameters:
nuint, optional

Antiderivative order, default is 1.

Notes

Assumes constant of integration is 0

derivative(nu=1)[source]#

Create a spline that is the derivative of this one.

Parameters:
nuint, optional

Derivative order, default is 1.

evaluate(*args, **kwargs)[source]#

Evaluate the spline.

Parameters:
x

(positional) The points where the model is evaluating the spline at

nuoptional

(kwarg) The derivative of the spline for evaluation, 0 <= nu <= degree + 1. Default: 0.