PolynomialArray

class kgpy.function.PolynomialArray(input, output=None, mask=None, degree=1, axes_model=None)

Bases: AbstractPolynomial, Array[InputT, OutputT]

Parameters:
__init__(input, output=None, mask=None, degree=1, axes_model=None)
Parameters:
Return type:

None

Attributes

axes_model

coefficients

degree

input_broadcasted

inverse

mask

output

output_broadcasted

residual

shape

input

Methods

__init__(input[, output, mask, degree, ...])

copy()

rtype:

typing.TypeVar(CopyableT, bound= Copyable)

copy_shallow()

rtype:

typing.TypeVar(CopyableT, bound= Copyable)

design_matrix(inp)

rtype:

kgpy.vectors.CartesianND

from_pickle([path])

interp_barycentric_linear(input_new[, axis, ...])

Interpolate this function using barycentric interpolation.

interp_barycentric_linear_scipy(input_new)

rtype:

typing.TypeVar(ArrayT, bound= Array)

interp_linear(input_new[, axis, damping])

rtype:

typing.TypeVar(ArrayT, bound= Array)

interp_nearest(input_new[, axis])

rtype:

typing.TypeVar(ArrayT, bound= Array)

pcolormesh(axs, input_component_x, ...[, ...])

Plot this function using matplotlib.pyplot.pcolormesh.

to_pickle(path)

update()

rtype:

None

Inheritance Diagram

digraph inheritance3bebd9f64e { bgcolor=transparent; rankdir=TB; size="8.0, 12.0"; "abc.ABC" [URL="https://docs.python.org/3/library/abc.html#abc.ABC",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Helper class that provides a standard way to create an ABC using"]; "kgpy.function.AbstractArray" [URL="kgpy.function.AbstractArray.html#kgpy.function.AbstractArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="AbstractArray(input: ~InputT)"]; "kgpy.mixin.Pickleable" -> "kgpy.function.AbstractArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.mixin.Copyable" -> "kgpy.function.AbstractArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "abc.ABC" -> "kgpy.function.AbstractArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "typing.Generic" -> "kgpy.function.AbstractArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.function.AbstractPolynomial" [URL="kgpy.function.AbstractPolynomial.html#kgpy.function.AbstractPolynomial",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="AbstractPolynomial(input: ~InputT)"]; "kgpy.function.AbstractArray" -> "kgpy.function.AbstractPolynomial" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.function.Array" [URL="kgpy.function.Array.html#kgpy.function.Array",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Array(input: ~InputT, output: ~OutputT = None, mask: Union[int, float, numpy.ndarray, astropy.units.quantity.Quantity, kgpy.labeled.AbstractArray, kgpy.uncertainty.AbstractArray, NoneType] = None)"]; "kgpy.function.AbstractArray" -> "kgpy.function.Array" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.function.PolynomialArray" [URL="kgpy.function.PolynomialArray.html#kgpy.function.PolynomialArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="PolynomialArray(input: ~InputT, output: ~OutputT = None, mask: Union[int, float, numpy.ndarray, astropy.units.quantity.Quantity, kgpy.labeled.AbstractArray, kgpy.uncertainty.AbstractArray, NoneType] = None, degree: int = 1, axes_model: Union[str, List[str], NoneType] = None)"]; "kgpy.function.AbstractPolynomial" -> "kgpy.function.PolynomialArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.function.Array" -> "kgpy.function.PolynomialArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.mixin.Copyable" [URL="kgpy.mixin.Copyable.html#kgpy.mixin.Copyable",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "abc.ABC" -> "kgpy.mixin.Copyable" [arrowsize=0.5,style="setlinewidth(0.5)"]; "kgpy.mixin.Pickleable" [URL="kgpy.mixin.Pickleable.html#kgpy.mixin.Pickleable",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Class for adding 'to_pickle' and 'from_pickle' methods for objects with long creation times."]; "abc.ABC" -> "kgpy.mixin.Pickleable" [arrowsize=0.5,style="setlinewidth(0.5)"]; "typing.Generic" [URL="https://docs.python.org/3/library/typing.html#typing.Generic",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Abstract base class for generic types."]; }
copy()
Return type:

typing.TypeVar(CopyableT, bound= Copyable)

Parameters:

self (CopyableT) –

copy_shallow()
Return type:

typing.TypeVar(CopyableT, bound= Copyable)

Parameters:

self (CopyableT) –

design_matrix(inp)
Return type:

kgpy.vectors.CartesianND

Parameters:
  • self (PolynomialArrayT) –

  • inp (InputT) –

classmethod from_pickle(path=None)
Parameters:

path (Path | None) –

interp_barycentric_linear(input_new, axis=None, num_kernel=1)

Interpolate this function using barycentric interpolation.

Examples

import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u
import kgpy.labeled
import kgpy.vectors
import kgpy.matrix
import kgpy.function

input = kgpy.vectors.Cartesian2D(
    x=kgpy.labeled.LinearSpace(-np.pi, np.pi, num=14, axis='x'),
    y=kgpy.labeled.LinearSpace(-np.pi, np.pi, num=14, axis='y'),
)

input_rotated = kgpy.matrix.Cartesian2D.rotation(30 * u.deg) @ input

f = kgpy.function.Array(
    input=input_rotated,
    output=np.cos(input.x * input.x * u.rad) * np.cos(input.y * input.y * u.rad),
)

fig, axs = plt.subplots(squeeze=False)
f.pcolormesh(
    axs=axs,
    input_component_x='x',
    input_component_y='y',
)
../_images/kgpy.function.PolynomialArray_0_0.png
input_large = kgpy.vectors.Cartesian2D(
    x=kgpy.labeled.LinearSpace(-2 * np.pi, 2 * np.pi, num=201, axis='x'),
    y=kgpy.labeled.LinearSpace(-2 * np.pi, 2 * np.pi, num=201, axis='y'),
)

g = f.interp_barycentric_linear(input_large)

fig_large, axs_large = plt.subplots(squeeze=False)
g.pcolormesh(
    axs=axs_large,
    input_component_x='x',
    input_component_y='y',
)
axs_large[0, 0].set_xlim(axs[0, 0].get_xlim());
axs_large[0, 0].set_ylim(axs[0, 0].get_ylim());
../_images/kgpy.function.PolynomialArray_1_1.png
Parameters:
Returns:

A new instance of class

Return type:

kgpy.function.Array evaluated at the coordinates input_new.

interp_barycentric_linear_scipy(input_new)
Return type:

typing.TypeVar(ArrayT, bound= Array)

Parameters:
  • self (ArrayT) –

  • input_new (InputT) –

interp_linear(input_new, axis=None, damping=1)
Return type:

typing.TypeVar(ArrayT, bound= Array)

Parameters:
  • self (ArrayT) –

  • input_new (InputT) –

  • axis (str | Sequence[str] | None) –

  • damping (float) –

interp_nearest(input_new, axis=None)
Return type:

typing.TypeVar(ArrayT, bound= Array)

Parameters:
  • self (ArrayT) –

  • input_new (InputT) –

  • axis (str | Sequence[str] | None) –

pcolormesh(axs, input_component_x, input_component_y, input_component_row=None, input_component_column=None, output_component_color=None, index=None, **kwargs)

Plot this function using matplotlib.pyplot.pcolormesh.

Examples

import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u
import kgpy.labeled
import kgpy.vectors
import kgpy.matrix
import kgpy.function

a = kgpy.labeled.LinearSpace(0 * u.rad, np.pi * u.rad, num=2, axis='a')
b = kgpy.labeled.LinearSpace(0 * u.rad, np.pi * u.rad, num=2, axis='b')
x = kgpy.labeled.LinearSpace(0 * u.rad, 2 * np.pi * u.rad, num=11, axis='x')
y = kgpy.labeled.LinearSpace(0 * u.rad, 1 * np.pi * u.rad, num=11, axis='y')

x2 = 2 * x + y / 4
y2 = x / 5 + y

inputs = kgpy.vectors.CartesianND(dict(
    a=a,
    b=b,
    x=x2,
    y=y2,
))

f = kgpy.function.Array(
    input=inputs,
    output=np.cos(a) * np.cos(b) * np.cos(x2) * np.cos(y2),
)

fig, axs = plt.subplots(
    nrows=a.num,
    ncols=b.num,
    sharex=True,
    sharey=True,
    squeeze=False,
    figsize=(12, 12),
    constrained_layout=True,
)

f.pcolormesh(
    axs=axs,
    input_component_x='x',
    input_component_y='y',
    input_component_row='a',
    input_component_column='b',
)
../_images/kgpy.function.PolynomialArray_2_0.png
Parameters:
to_pickle(path)
Parameters:

path (Path | None) –

update()
Return type:

None

Parameters:

self (PolynomialArrayT) –

axes_model: typing.Union[str, typing.List[str], None] = None
property coefficients: AbstractVector
degree: int = 1
input: typing.TypeVar(InputT, bound= typing.Union[int, float, numpy.ndarray, astropy.units.quantity.Quantity, kgpy.labeled.AbstractArray, kgpy.uncertainty.AbstractArray, VectorInterface])
property input_broadcasted: InputT
property inverse: ArrayT
mask: typing.Union[int, float, numpy.ndarray, astropy.units.quantity.Quantity, kgpy.labeled.AbstractArray, kgpy.uncertainty.AbstractArray, None] = None
output: typing.TypeVar(OutputT, bound= typing.Union[int, float, numpy.ndarray, astropy.units.quantity.Quantity, kgpy.labeled.AbstractArray, kgpy.uncertainty.AbstractArray, VectorInterface]) = None
property output_broadcasted: OutputT
property residual: OutputT
property shape: Dict[str, int]