colour.Extrapolator

class colour.Extrapolator(interpolator=None, method='Linear', left=None, right=None, dtype=<class 'numpy.float64'>)[source]

Bases: object

Extrapolates the 1-D function of given interpolator.

The colour.Extrapolator class acts as a wrapper around a given Colour or scipy interpolator class instance with compatible signature. Two extrapolation methods are available:

  • Linear: Linearly extrapolates given points using the slope defined by the interpolator boundaries (xi[0], xi[1]) if x < xi[0] and (xi[-1], xi[-2]) if x > xi[-1].

  • Constant: Extrapolates given points by assigning the interpolator boundaries values xi[0] if x < xi[0] and xi[-1] if x > xi[-1].

Specifying the left and right arguments takes precedence on the chosen extrapolation method and will assign the respective left and right values to the given points.

Parameters
  • interpolator (object) – Interpolator object.

  • method (unicode, optional) – {‘Linear’, ‘Constant’}, Extrapolation method.

  • left (numeric, optional) – Value to return for x < xi[0].

  • right (numeric, optional) – Value to return for x > xi[-1].

  • dtype (type) – Data type used for internal conversions.

__class__()

Notes

  • The interpolator must define x and y attributes.

References

[Sas], [WRC12d]

Examples

Extrapolating a single numeric variable:

>>> from colour.algebra import LinearInterpolator
>>> x = np.array([3, 4, 5])
>>> y = np.array([1, 2, 3])
>>> interpolator = LinearInterpolator(x, y)
>>> extrapolator = Extrapolator(interpolator)
>>> extrapolator(1)
-1.0

Extrapolating an array_like variable:

>>> extrapolator(np.array([6, 7 , 8]))
array([ 4.,  5.,  6.])

Using the Constant extrapolation method:

>>> x = np.array([3, 4, 5])
>>> y = np.array([1, 2, 3])
>>> interpolator = LinearInterpolator(x, y)
>>> extrapolator = Extrapolator(interpolator, method='Constant')
>>> extrapolator(np.array([0.1, 0.2, 8, 9]))
array([ 1.,  1.,  3.,  3.])

Using defined left boundary and Constant extrapolation method:

>>> x = np.array([3, 4, 5])
>>> y = np.array([1, 2, 3])
>>> interpolator = LinearInterpolator(x, y)
>>> extrapolator = Extrapolator(interpolator, method='Constant', left=0)
>>> extrapolator(np.array([0.1, 0.2, 8, 9]))
array([ 0.,  0.,  3.,  3.])
property interpolator

Getter and setter property for the Colour or scipy interpolator class instance.

Parameters

value (callable) – Value to set the Colour or scipy interpolator class instance with.

Returns

Colour or scipy interpolator class instance.

Return type

callable

property left

Getter and setter property for left value to return for x < xi[0].

Parameters

value (numeric) – Left value to return for x < xi[0].

Returns

Left value to return for x < xi[0].

Return type

numeric

property method

Getter and setter property for the extrapolation method.

Parameters

value (unicode) – Value to set the extrapolation method. with.

Returns

Extrapolation method.

Return type

unicode

property right

Getter and setter property for right value to return for x > xi[-1].

Parameters

value (numeric) – Right value to return for x > xi[-1].

Returns

Right value to return for x > xi[-1].

Return type

numeric