RayFunction¶
- class kgpy.optics.rays.RayFunction(input=<factory>, output=<factory>, mask=None, distortion_polynomial_degree=2, vignetting_polynomial_degree=1)¶
Bases:
Array[ObjectVector,RayVector]- Parameters:
input (ObjectVector) –
output (RayVector) –
mask (int | float | ndarray | Quantity | AbstractArray | AbstractArray | None) –
distortion_polynomial_degree (int) –
vignetting_polynomial_degree (int) –
- __init__(input=<factory>, output=<factory>, mask=None, distortion_polynomial_degree=2, vignetting_polynomial_degree=1)¶
- Parameters:
input (ObjectVector) –
output (RayVector) –
mask (int | float | ndarray | Quantity | AbstractArray | AbstractArray | None) –
distortion_polynomial_degree (int) –
vignetting_polynomial_degree (int) –
- Return type:
None
Attributes
Methods
__init__([input, output, mask, ...])calc_labels(name, grid)calc_mtf(psf, limit_min, limit_max)colorgrid(axis)- rtype:
colormesh(axis)- rtype:
copy()- rtype:
typing.TypeVar(CopyableT, bound= Copyable)
- rtype:
typing.TypeVar(CopyableT, bound= Copyable)
distortion([polynomial_degree])from_pickle([path])grid_labels(axis)- rtype:
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)
mtf([bins, frequency_min, use_vignetted])pcolormesh(axs, input_component_x, ...[, ...])Plot this function using
matplotlib.pyplot.pcolormesh.plot_pupil_hist2d_vs_field([config_index, ...])plot_spot_size_vs_field([axs, config_index, ...])point_spread([bins, use_vignetted, ...])pupil_hist2d([bins, limit_min, limit_max, ...])to_pickle(path)Inheritance Diagram
digraph inheritance7cbc0df60f { 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.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.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)"]; "kgpy.optics.rays.RayFunction" [URL="kgpy.optics.rays.RayFunction.html#kgpy.optics.rays.RayFunction",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="RayFunction(input: kgpy.optics.vectors.ObjectVector = <factory>, output: kgpy.optics.rays.RayVector = <factory>, mask: Union[int, float, numpy.ndarray, astropy.units.quantity.Quantity, kgpy.labeled.AbstractArray, kgpy.uncertainty.AbstractArray, NoneType] = None, distortion_polynomial_degree: int = 2, vignetting_polynomial_degree: int = 1)"]; "kgpy.function.Array" -> "kgpy.optics.rays.RayFunction" [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."]; }- classmethod calc_mtf(psf, limit_min, limit_max)¶
- copy()¶
- Return type:
typing.TypeVar(CopyableT, bound= Copyable)- Parameters:
self (CopyableT) –
- copy_shallow()¶
- Return type:
typing.TypeVar(CopyableT, bound= Copyable)- Parameters:
self (CopyableT) –
- 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', )
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());
- Parameters:
input_new (
typing.TypeVar(InputT, bound=typing.Union[int,float,numpy.ndarray,astropy.units.quantity.Quantity,kgpy.labeled.AbstractArray,kgpy.uncertainty.AbstractArray, VectorInterface])) –self (ArrayT) –
num_kernel (int) –
- 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:
- interp_nearest(input_new, axis=None)¶
- Return type:
typing.TypeVar(ArrayT, bound= Array)- Parameters:
- mtf(bins=10, frequency_min=None, use_vignetted=False)¶
- 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', )
- Parameters:
axs (Array of axes that the function will be plotted on) –
input_component_x (
typing.Union[str,kgpy.vectors.ComponentAxis]) –input_component_y (
typing.Union[str,kgpy.vectors.ComponentAxis]) –input_component_row (
typing.Union[str,kgpy.vectors.ComponentAxis,None]) –input_component_column (
typing.Union[str,kgpy.vectors.ComponentAxis,None]) –output_component_color (
typing.Union[str,kgpy.vectors.ComponentAxis,None]) –index (
typing.Optional[typing.Dict[str,int]]) –kwargs –
self (AbstractArrayT) –
- plot_pupil_hist2d_vs_field(config_index=0, wavlen_index=0, velocity_los_index=0, bins=10, limit_min=None, limit_max=None, use_vignetted=False, relative_to_centroid=(True, True), norm=None, cmap='viridis', kwargs_colorbar=None)¶
- plot_spot_size_vs_field(axs=None, config_index=None, velocity_los_index=0, kwargs_colorbar=None, digits_after_decimal=3)¶
- Return type:
- Parameters:
- point_spread(bins=None, use_vignetted=False, use_position_relative=True, use_position_apparent=False)¶
- Parameters:
bins (Cartesian2D | None) –
use_vignetted (bool) –
use_position_relative (bool) –
use_position_apparent (bool) –
- pupil_hist2d(bins=10, limit_min=None, limit_max=None, use_vignetted=False, relative_to_centroid=(False, False), use_position_apparent=False)¶
- property effective_area: EffectiveArea¶
- property input_broadcasted: InputT¶
-
mask:
typing.Union[int,float,numpy.ndarray,astropy.units.quantity.Quantity,kgpy.labeled.AbstractArray,kgpy.uncertainty.AbstractArray,None] = None¶
-
output:
kgpy.optics.rays.RayVector= None¶
- property output_broadcasted: OutputT¶
- property output_position_apparent¶