skyscapes.background.zodi#

Zodiacal-light background sources.

Three concrete variants:

  • AYOZodi – fixed V-band surface brightness with the Leinert wavelength-dependent color correction. Matches the AYO/EXOSIMS ETC Calibration Task Group convention (135 deg solar longitude).

  • LeinertZodi – full Leinert et al. (1998) tables for position- and wavelength-dependence.

  • PrecomputedZodi – pre-computed photon flux supplied externally (e.g. extracted from an EXOSIMS/pyEDITH run).

All three return ph/s/m^2/nm per arcsec^2. Each is its own eqx.Module; there is intentionally no shared abstract base yet (see the package docstring).

Classes#

AYOZodi

Zodiacal light using AYO-compatible default settings.

LeinertZodi

Zodiacal light using the full Leinert (1998) position-dependent model.

PrecomputedZodi

Zodiacal light from pre-computed photon flux values.

Module Contents#

class skyscapes.background.zodi.AYOZodi(wavelengths_nm, surface_brightness_mag=22.0, reference_wavelength_nm=550.0)[source]#

Bases: equinox.Module

Zodiacal light using AYO-compatible default settings.

Uses a fixed surface brightness at V-band with a Leinert wavelength-dependent color correction. Position-independent at query time – the AYO convention bakes in solar longitude 135 deg.

Example:
>>> import jax.numpy as jnp
>>> wavelengths = jnp.linspace(400, 1000, 50)
>>> zodi = AYOZodi(wavelengths, surface_brightness_mag=22.0)
Parameters:
  • wavelengths_nm (jax.numpy.ndarray)

  • surface_brightness_mag (float)

  • reference_wavelength_nm (float)

_wavelengths_nm: jax.numpy.ndarray#
_flux_density_phot: jax.numpy.ndarray#
_flux_interp: interpax.Interpolator1D#
_reference_wavelength_nm: float#
_reference_mag_arcsec2: float#
property reference_wavelength_nm: float#

Reference wavelength for the zodi model in nm.

Return type:

float

property reference_mag_arcsec2: float#

Surface brightness at the reference wavelength in mag/arcsec^2.

Return type:

float

spec_flux_density(wavelength_nm, time_jd, ecliptic_lat_deg=0.0, solar_lon_deg=135.0)[source]#

Return surface brightness in ph/s/m^2/nm per arcsec^2.

time_jd and the ecliptic/solar arguments are accepted for interface compatibility but ignored: the AYO convention is a fixed-angle assumption.

Parameters:
Return type:

float

__repr__()[source]#

One-line summary of the AYO zodi reference + wavelength grid.

Return type:

str

class skyscapes.background.zodi.LeinertZodi(reference_mag_arcsec2=22.0, reference_wavelength_nm=550.0)[source]#

Bases: equinox.Module

Zodiacal light using the full Leinert (1998) position-dependent model.

Computes the surface brightness dynamically from the Leinert et al. (1998) tables for both position (ecliptic latitude, solar longitude) and wavelength dependence.

Example:
>>> zodi = LeinertZodi(reference_mag_arcsec2=22.0)
>>> flux1 = zodi.spec_flux_density(550.0, 0.0, ecliptic_lat_deg=30.0)
>>> flux2 = zodi.spec_flux_density(550.0, 0.0, ecliptic_lat_deg=45.0)
Parameters:
  • reference_mag_arcsec2 (float)

  • reference_wavelength_nm (float)

_reference_wavelength_nm: float#
_reference_mag_arcsec2: float#
property reference_wavelength_nm: float#

Reference wavelength for the zodi model in nm.

Return type:

float

property reference_mag_arcsec2: float#

Surface brightness at the reference wavelength in mag/arcsec^2.

Return type:

float

spec_flux_density(wavelength_nm, time_jd, ecliptic_lat_deg=0.0, solar_lon_deg=135.0)[source]#

Return surface brightness in ph/s/m^2/nm per arcsec^2.

Args:

wavelength_nm: Scalar wavelength in nm. time_jd: Scalar time in Julian days (ignored). ecliptic_lat_deg: Ecliptic latitude in degrees. solar_lon_deg: Solar longitude in degrees.

Parameters:
Return type:

float

__repr__()[source]#

One-line summary of the Leinert zodi reference.

Return type:

str

class skyscapes.background.zodi.PrecomputedZodi(wavelengths_nm, flux_phot_per_arcsec2, reference_mag_arcsec2=22.0)[source]#

Bases: equinox.Module

Zodiacal light from pre-computed photon flux values.

Wraps an externally computed array of photon fluxes (e.g. extracted from an EXOSIMS or pyEDITH run) so the same values flow through the coronagraph image simulator without recomputation. Position and time arguments are accepted for interface compatibility but ignored.

Example:
>>> exosims_flux = ...  # ph/s/m^2/nm/arcsec^2 from EXOSIMS
>>> zodi = PrecomputedZodi(wavelengths, exosims_flux)
Parameters:
  • wavelengths_nm (jax.numpy.ndarray)

  • flux_phot_per_arcsec2 (jax.numpy.ndarray)

  • reference_mag_arcsec2 (float)

_wavelengths_nm: jax.numpy.ndarray#
_flux_density_phot: jax.numpy.ndarray#
_flux_interp: interpax.Interpolator1D#
_reference_wavelength_nm: float#
_reference_mag_arcsec2: float#
property reference_wavelength_nm: float#

Reference wavelength for the zodi model in nm.

Return type:

float

property reference_mag_arcsec2: float#

Surface brightness at the reference wavelength in mag/arcsec^2.

Return type:

float

spec_flux_density(wavelength_nm, time_jd, ecliptic_lat_deg=0.0, solar_lon_deg=135.0)[source]#

Return surface brightness in ph/s/m^2/nm per arcsec^2.

All arguments other than wavelength_nm are accepted for interface compatibility but ignored.

Parameters:
Return type:

float

__repr__()[source]#

One-line summary of pre-tabulated zodi photon-flux source.

Return type:

str