Spline module for smooth interpolation in one and two dimensions

Class: FloatSpline - 1D cubic spline

Constructor:

FloatSpline(listOfXYPairs)

listOfXYPairs is a sequence (of length N) of sequences containing
two floating point elements listing (x, y) data points.
Alternatively, the x and y data points can be input separately:

FloatSpline(vectorOfX, vectorOfY)

where vectorOfX and vectorOfY are cdsVector.CDSVector_double
instances with the x and y values, respectively; x and y values
are matched by offset to generate the corresponding (x, y) pairs.

Regardless of the constructor used, the x values do not have to lie
on a regular grid.

By default the data is assumed non-periodic.  Periodic data can be
specified as follows:

FloatSpline(listOfXYPairs, True)

(x, y), where

x = 2 * listOfXYPairs[N-1] - listOfXYPairs[N-2]
y = listOfXYPairs

Also, the slope at the first and final points are set to match.
The same result is obtained by using the alternative constructor:

FloatSpline(vectorOfX, vectorOfY, True)

Methods:

__call__(x) - return the interpolated value at (x).

deriv(x) - return derivative wrt x at x.
secondDeriv(x) - return the second derivative wrt x at x.

size() - return the number of input x,y data pairs.

Use:

Interpolated y values are obtained using the __call__() method.
For example,

spline = FloatSpline( [(0,1), (1,2), (2,3)] )
spline(0.5)

will return the value 1.5.

Class: FloatSpline2D - 2D bicubic interpolation

Constructor:

from spline import FloatSpline2D, PERIODIC_NOT
FloatSpline2D(xList, yList, zList, periodic=PERIODIC_NOT)

xList and yList contain x and y values of grid points.  These values
should be monotonically increasing, but do not need to be equally
spaced. zList is a row-major list of data on this grid.  For example,
if xList=[x0, x1, x2] and yList=[y0, y1, y2], then

zList = [z00, z01, z02,
z10, z11, z12,
z20, z21, z22]

where zij is associated to coordinate values (xi, yj).

The optional periodic argument is a bit field specifying whether the x
or y dimensions contain periodic data.  Valid values are PERIODIC_NOT,
PERIODIC_X and PERIODIC_Y.  If a dimension is marked as periodic, the
corresponding dimension in zList should be one less.  Thus, in the above
example, if PERIODIC_X is set, it is assumed that z0j=z2j and values
z20, z21, z22 should be omitted from zList.  Similarly, if PERIODIC_Y is
set, values z02, z12, z22 should be omitted.  First derivatives are also
matched in case of periodicity.

Note that, unlike the 1D case, the spline coefficients are not taken
from a global fit.  This is possible, but not yet implemented.

Methods:

__call__(x, y) - return the interpolated value at (x, y).

derivs(x, y) - return derivatives wrt x and y at (x, y) in a tuple (dx, dy).

Use:

Interpolated z values are obtained using the __call__() method.
For example,

x=[1, 2, 3]
y=[4, 7]
z=[7, 1,
3, 9,
3, 6]

spline2d = spline.FloatSpline2D(x, y, z)
spline2d(1.4, 5.1)

will return the value 5.032.  Specification of periodicity in both
x and y dimensions:

another_spline2d = spline.FloatSpline2D(x, y, z, spline.PERIODIC_X|spline.PERIODIC_Y)

(x, y, and z are different from the previous non-periodic example).

# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

Classes

builtins.object
FloatSpline
FloatSpline2D

 class FloatSpline(builtins.object) FloatSpline(*args) Methods defined here: __call__(self, *args, **kwargs) -> 'double'Call self as a function. __init__(self, *args)Initialize self.  See help(type(self)) for accurate signature. __repr__ = _swig_repr(self) deriv(self, *args, **kwargs) -> 'double' init(self, *args, **kwargs) -> 'void' secondDeriv(self, *args, **kwargs) -> 'double' size(self, *args, **kwargs) -> 'int' Static methods defined here: __swig_destroy__ = delete_FloatSpline(...) getGridIndex(*args, **kwargs) -> 'int' Data descriptors defined here: __dict__   dictionary for instance variables (if defined) __weakref__   list of weak references to the object (if defined) thisown   The membership flag

 class FloatSpline2D(builtins.object) FloatSpline2D(*args, **kwargs) Methods defined here: __call__(self, *args, **kwargs) -> 'double'Call self as a function. __init__(self, *args, **kwargs)Initialize self.  See help(type(self)) for accurate signature. __repr__ = _swig_repr(self) derivs(self, *args, **kwargs) -> 'void' init(self, *args, **kwargs) -> 'void' Static methods defined here: __swig_destroy__ = delete_FloatSpline2D(...) Data descriptors defined here: __dict__   dictionary for instance variables (if defined) __weakref__   list of weak references to the object (if defined) thisown   The membership flag

 Functions FloatSpline_getGridIndex(*args, **kwargs) -> 'int' pyXplorHelp(*args) -> 'String'

 Data PERIODIC_NOT = 0 PERIODIC_X = 1 PERIODIC_Y = 2