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
, andscipy.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
Scipy bspline object representation
The coefficients vector
Dictionary of coefficient parameters
The degree of the spline polynomials
Dictionary of knot parameters
The number of inputs.
The number of outputs.
The knots vector
The interior knots
Scipy 'tck' tuple representation
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:
- nu
int
, optional Antiderivative order, default is 1.
- nu
Notes
Assumes constant of integration is 0