skyscapes.background.leinert#

Zodiacal light model based on Leinert et al. (1998).

All functions are pure JAX and JIT-compatible. Provides both position-dependent (Leinert Table 17) and wavelength-dependent (Table 19) zodiacal brightness.

Migrated from orbix.observatory.zodiacal – see that module’s history for full references.

Attributes#

Functions#

_clamped_log10_um(wavelength_nm)

Log10(wavelength in um), clamped to the tabulated Table 19 range.

_fill_sentinels(table)

Fill near-Sun exclusion cells with the nearest valid value.

zodi_color_correction(wavelength_nm[, ...])

Wavelength-dependent color correction from Leinert Table 19.

leinert_zodi_factor(ecliptic_lat_deg[, solar_lon_deg])

Position-dependent zodiacal brightness factor from Leinert Table 17.

leinert_zodi_spectral_radiance(wavelength_nm[, ...])

Zodiacal spectral radiance in W/(m^2 sr um) from Leinert tables.

leinert_zodi_mag(wavelength_nm[, ecliptic_lat_deg, ...])

Zodiacal surface brightness in mag/arcsec^2 from Leinert tables.

ayo_default_zodi_mag(wavelength_nm)

AYO-default zodiacal brightness: 22 mag/arcsec^2 at V with color correction.

ayo_default_zodi_flux_jy(wavelength_nm)

AYO-default zodiacal brightness in Jy/arcsec^2.

create_zodi_spectrum_jax(wavelengths_nm[, ...])

Create zodiacal light spectrum in Jy/arcsec^2 from reference flux.

Module Contents#

skyscapes.background.leinert.AYO_DEFAULT_ZODI_MAG_V = 22.0#
skyscapes.background.leinert.V_BAND_WAVELENGTH_NM = 550.0#
skyscapes.background.leinert.LEINERT_BETA_DEG#
skyscapes.background.leinert.LEINERT_SOLAR_LON_DEG#
skyscapes.background.leinert.LEINERT_TABLE17#
skyscapes.background.leinert.LEINERT_WAVELENGTH_UM#
skyscapes.background.leinert.LEINERT_B_LAMBDA#
skyscapes.background.leinert._LOG_WAVELENGTH_UM#
skyscapes.background.leinert._LOG_B_LAMBDA#
skyscapes.background.leinert._clamped_log10_um(wavelength_nm)[source]#

Log10(wavelength in um), clamped to the tabulated Table 19 range.

interpax.interp1d defaults to extrap=False (NaN outside the knot range); clamping the query wavelength to the table’s domain before interpolating means a wavelength outside Table 19’s 0.2-140 um span resolves to the nearest tabulated edge value instead of NaN.

skyscapes.background.leinert._fill_sentinels(table)[source]#

Fill near-Sun exclusion cells with the nearest valid value.

Sentinel cells (-1) are filled along the elongation axis so lookups clamp instead of returning NaN.

skyscapes.background.leinert._LEINERT_TABLE17_FILLED#
skyscapes.background.leinert._REF_IDX#
skyscapes.background.leinert._REFERENCE_VALUE#
skyscapes.background.leinert._NORMALIZED_TABLE17#
skyscapes.background.leinert.zodi_color_correction(wavelength_nm, reference_wavelength_nm=V_BAND_WAVELENGTH_NM, photon_units=True)[source]#

Wavelength-dependent color correction from Leinert Table 19.

Args:

wavelength_nm: Target wavelength in nm. reference_wavelength_nm: Reference wavelength in nm. photon_units: If True, include lambda/lambda_ref factor for photon flux.

Returns:

Flux ratio (target / reference).

Parameters:
  • wavelength_nm (float)

  • reference_wavelength_nm (float)

  • photon_units (bool)

Return type:

float

skyscapes.background.leinert.leinert_zodi_factor(ecliptic_lat_deg, solar_lon_deg=135.0)[source]#

Position-dependent zodiacal brightness factor from Leinert Table 17.

Returns brightness relative to (solar_lon=90 deg, ecliptic_lat=0 deg).

Queries inside the near-Sun exclusion zone return the nearest tabulated brightness (clamped), not NaN.

Args:

ecliptic_lat_deg: Ecliptic latitude in degrees. solar_lon_deg: Solar longitude in degrees (default 135 deg for coronagraphs).

Returns:

Dimensionless brightness factor.

Parameters:
Return type:

float

skyscapes.background.leinert.leinert_zodi_spectral_radiance(wavelength_nm, ecliptic_lat_deg=0.0, solar_lon_deg=135.0)[source]#

Zodiacal spectral radiance in W/(m^2 sr um) from Leinert tables.

Args:

wavelength_nm: Observation wavelength in nm. ecliptic_lat_deg: Ecliptic latitude in degrees. solar_lon_deg: Solar longitude in degrees.

Returns:

Spectral radiance in W/(m^2 sr um).

Parameters:
Return type:

float

skyscapes.background.leinert.leinert_zodi_mag(wavelength_nm, ecliptic_lat_deg=0.0, solar_lon_deg=135.0)[source]#

Zodiacal surface brightness in mag/arcsec^2 from Leinert tables.

Args:

wavelength_nm: Observation wavelength in nm. ecliptic_lat_deg: Ecliptic latitude in degrees. solar_lon_deg: Solar longitude in degrees.

Returns:

Surface brightness in mag/arcsec^2.

Parameters:
Return type:

float

skyscapes.background.leinert.ayo_default_zodi_mag(wavelength_nm)[source]#

AYO-default zodiacal brightness: 22 mag/arcsec^2 at V with color correction.

Args:

wavelength_nm: Observation wavelength in nm.

Returns:

Surface brightness in mag/arcsec^2.

Parameters:

wavelength_nm (float)

Return type:

float

skyscapes.background.leinert.ayo_default_zodi_flux_jy(wavelength_nm)[source]#

AYO-default zodiacal brightness in Jy/arcsec^2.

The AYO 22 mag V-band figure is treated as AB and converted via hwoutils.conversions.mag_to_flux_jy (astropy-exact AB zero point). If a Johnson-V calibration is ever required, the AB<->Johnson-V offset is ~0.044 mag.

Args:

wavelength_nm: Observation wavelength in nm.

Returns:

Surface brightness in Jy/arcsec^2.

Parameters:

wavelength_nm (float)

Return type:

float

skyscapes.background.leinert.create_zodi_spectrum_jax(wavelengths_nm, reference_flux_jy=None, reference_wavelength_nm=V_BAND_WAVELENGTH_NM)[source]#

Create zodiacal light spectrum in Jy/arcsec^2 from reference flux.

Args:

wavelengths_nm: Array of wavelengths in nm. reference_flux_jy: Reference flux (default: 22 mag at V). reference_wavelength_nm: Reference wavelength in nm.

Returns:

Array of surface brightness in Jy/arcsec^2.

Parameters:
  • wavelengths_nm (jax.numpy.ndarray)

  • reference_flux_jy (float | None)

  • reference_wavelength_nm (float)

Return type:

jax.numpy.ndarray