psf.vectorial_fft
Vectorial FFT Point Spread Function (PSF) Module
This module provides functionality for simulating and analyzing the Point Spread Function (PSF) of optical systems using the Vectorial Fast Fourier Transform (FFT). It includes capabilities for generating PSF from given wavefront aberrations and exit pupil electric fields.
Kramer Harrison, 2026
Classes
|
Class representing the Vectorial Fast Fourier Transform (FFT) PSF. |
- class VectorialFFTPSF(optic, field, wavelength: str | float, num_rays=128, grid_size=None, strategy='chief_ray', remove_tilt=False, **kwargs)[source]
Class representing the Vectorial Fast Fourier Transform (FFT) PSF.
This class computes the PSF of an optical system by taking the Fourier Transform of the vectorial pupil function, taking into account the full 3D electric field at the exit pupil.
- static fit_and_remove_tilt(data: WavefrontData, remove_piston: bool = False, ridge: float = 1e-12) be.ndarray
Removes piston and tilt from OPD data using weighted least squares.
- Parameters:
data (WavefrontData) – The wavefront data containing pupil coordinates and OPD.
remove_piston (bool, optional) – If True, removes piston term as well as tilt. Defaults to False.
ridge (float, optional) – Small diagonal regularization for stability. Defaults to 1e-12.
- Returns:
OPD with piston and tilt removed, shape (N,).
- Return type:
opd_detrended (be.ndarray)
- get_data(field: tuple[float, float], wl: float) WavefrontData
Retrieves precomputed wavefront data for a field and wavelength.
- Parameters:
field (tuple[float, float]) – The field coordinates, or a FieldPoint.
wl (float) – The wavelength in µm, or a WavelengthPoint.
- Returns:
A data container with the computed wavefront results.
- Return type:
- strehl_ratio()
Computes the Strehl ratio of the PSF.
The Strehl ratio is the ratio of the peak intensity of the aberrated PSF to the peak intensity of the diffraction-limited PSF. Assumes self.psf is normalized such that its peak would be 1.0 (or 100%) for a diffraction-limited system.
- Returns:
The Strehl ratio.
- Return type:
float
- Raises:
RuntimeError – If the PSF has not been computed.
- view(fig_to_plot_on: Figure | None = None, projection: str = '2d', log: bool = False, figsize: tuple = (7, 5.5), threshold: float = 0.05, num_points: int = 128) tuple[Figure, Axes]
Visualizes the PSF.
- Parameters:
projection (str, optional) – The projection type. Can be ‘2d’ or ‘3d’. Defaults to ‘2d’.
log (bool, optional) – Whether to use a logarithmic scale for the intensity. Defaults to False.
figsize (tuple, optional) – The figure size. Defaults to (7, 5.5).
threshold (float, optional) – The threshold for determining the bounds of the PSF for zoomed view. Defaults to 0.05.
num_points (int, optional) – The number of points used for interpolating the PSF for smoother visualization. Defaults to 128.
- Returns:
A tuple containing the figure and axes objects.
- Return type:
tuple
- Raises:
RunentimeError – If the PSF has not been computed.
ValueError – If the projection is not ‘2d’ or ‘3d’.
RuntimeError – If the PSF has not been computed by the subclass.