optixstuff.coronagraph#

Coronagraph abstractions.

Classes#

AbstractCoronagraph

Abstract interface for coronagraph performance models.

AbstractScalarCoronagraph

Base for ETC-only coronagraph models that lack 2D PSF generation.

Module Contents#

class optixstuff.coronagraph.AbstractCoronagraph[source]#

Bases: equinox.Module

Abstract interface for coronagraph performance models.

Provides both scalar performance curves (for ETC use) and 2D PSF generation (for image simulation). Implementations can be backed by pre-computed interpolation tables (yippy), physical wavefront propagation, or analytical models.

All wavelength arguments are in nanometres throughout. All separations are in lambda/D units.

pixel_scale_lod: equinox.AbstractVar[float]#

Native pixel scale in lambda/D per pixel.

IWA: equinox.AbstractVar[float]#

Inner working angle in lambda/D.

OWA: equinox.AbstractVar[float]#

Outer working angle in lambda/D.

abstractmethod throughput(separation_lod, wavelength_nm, *, time_s=0.0)[source]#

Core (off-axis planet) throughput.

Args:

separation_lod: Angular separation in lambda/D. wavelength_nm: Wavelength in nanometres. time_s: Time since mission start in seconds.

Returns:

Fractional throughput in [0, 1].

Parameters:
  • separation_lod (jax.typing.ArrayLike)

  • wavelength_nm (jax.typing.ArrayLike)

  • time_s (jax.typing.ArrayLike)

Return type:

jax.typing.ArrayLike

abstractmethod core_area(separation_lod, wavelength_nm, *, time_s=0.0)[source]#

Photometric aperture area in (lambda/D)^2.

Args:

separation_lod: Angular separation in lambda/D. wavelength_nm: Wavelength in nanometres. time_s: Time since mission start in seconds.

Returns:

Core area in (lambda/D)^2.

Parameters:
  • separation_lod (jax.typing.ArrayLike)

  • wavelength_nm (jax.typing.ArrayLike)

  • time_s (jax.typing.ArrayLike)

Return type:

jax.typing.ArrayLike

abstractmethod core_mean_intensity(separation_lod, wavelength_nm, *, time_s=0.0)[source]#

Mean stellar intensity within the photometric aperture.

Args:

separation_lod: Angular separation in lambda/D. wavelength_nm: Wavelength in nanometres. time_s: Time since mission start in seconds.

Returns:

Mean stellar leakage intensity in (lambda/D)^-2.

Parameters:
  • separation_lod (jax.typing.ArrayLike)

  • wavelength_nm (jax.typing.ArrayLike)

  • time_s (jax.typing.ArrayLike)

Return type:

jax.typing.ArrayLike

abstractmethod occulter_transmission(separation_lod, wavelength_nm, *, time_s=0.0)[source]#

Off-axis (sky/zodi) transmission through the occulter.

Args:

separation_lod: Angular separation in lambda/D. wavelength_nm: Wavelength in nanometres. time_s: Time since mission start in seconds.

Returns:

Fractional sky transmission in [0, 1].

Parameters:
  • separation_lod (jax.typing.ArrayLike)

  • wavelength_nm (jax.typing.ArrayLike)

  • time_s (jax.typing.ArrayLike)

Return type:

jax.typing.ArrayLike

abstractmethod on_axis_psf(wavelength_nm, pixel_scale_rad, npixels)[source]#

On-axis (stellar leakage) PSF.

Returns the coronagraphic PSF for an on-axis point source, normalized to unit stellar flux before the coronagraph.

Args:

wavelength_nm: Wavelength in nanometres. pixel_scale_rad: Output pixel scale in radians/pixel. npixels: Output array side length in pixels. Must be a

Python int (not a JAX array) as it determines the output shape at compile time.

Returns:

2D float array of shape (npixels, npixels).

Parameters:
  • wavelength_nm (jax.typing.ArrayLike)

  • pixel_scale_rad (float)

  • npixels (int)

Return type:

jaxtyping.Array

abstractmethod off_axis_psf(wavelength_nm, separation_lod, pixel_scale_rad, npixels)[source]#

Off-axis PSF at a given angular separation.

Args:

wavelength_nm: Wavelength in nanometres. separation_lod: Source separation in lambda/D. pixel_scale_rad: Output pixel scale in radians/pixel. npixels: Output array side length in pixels. Must be a

Python int (not a JAX array) as it determines the output shape at compile time.

Returns:

2D float array of shape (npixels, npixels).

Parameters:
  • wavelength_nm (jax.typing.ArrayLike)

  • separation_lod (jax.typing.ArrayLike)

  • pixel_scale_rad (float)

  • npixels (int)

Return type:

jaxtyping.Array

class optixstuff.coronagraph.AbstractScalarCoronagraph[source]#

Bases: AbstractCoronagraph

Base for ETC-only coronagraph models that lack 2D PSF generation.

Stubs out the image interface with zero arrays so the class satisfies AbstractCoronagraph without requiring a full optical model.

on_axis_psf(wavelength_nm, pixel_scale_rad, npixels)[source]#

Return a zero PSF (not implemented for scalar-only models).

Parameters:
  • wavelength_nm (jax.typing.ArrayLike)

  • pixel_scale_rad (float)

  • npixels (int)

Return type:

jaxtyping.Array

off_axis_psf(wavelength_nm, separation_lod, pixel_scale_rad, npixels)[source]#

Return a zero PSF (not implemented for scalar-only models).

Parameters:
  • wavelength_nm (jax.typing.ArrayLike)

  • separation_lod (jax.typing.ArrayLike)

  • pixel_scale_rad (float)

  • npixels (int)

Return type:

jaxtyping.Array