Skip to main content

zodi

Zodiacal and exozodiacal light brightness conventions for exoplanet imaging, from a single source that runs on numpy and JAX.

Status: v0.1 core (pre-PyPI). The LBTI HOSTS population distributions land next.

What it owns

  • Local zodiacal light surface brightness: the Leinert et al. (1998) Table 17 position dependence and Table 19 wavelength dependence, with the interpolation, anchoring, and near-Sun conventions of the production codes stated explicitly (zodi.specific_intensity, zodi.zodi_flux_ratio).
  • The exozodi chain of Stark et al. (2014), anchored at the EEID and numerically compatible with EXOSIMS calc_JEZ0, with the radial scaling measured from the EEID (zodi.exozodi_flux_ratio_v, zodi.jez0, zodi.scale_jez), the three published latitudinal models (zodi.latitudinal_factor), and the grey-scatterer band correction in both production flavors: the stellar-color scaling used by pyEDITH (zodi.exozodi_flux_ratio_band) and the scattered-plus-thermal spectrum model used by EXOSIMS, with its calibration as a closed-form least-squares fit (zodi.fit_grey_scatter_constants).
  • Unit conversions between the dialects in common use: magnitudes per square arcsecond, flux ratio per square arcsecond, spectral radiance, photon rates, and MJy per steradian (zodi.units).

Coming next: the LBTI HOSTS survey n-zodi population distributions as quantile functions (callers supply their own uniform draws).

Documentation and evidence

docs/conventions.md states every model, constant, and known cross-code difference with sources and measured deltas; docs/evidence.md maps each claim to an executable check and its kind of evidence. Cross-code benchmark scripts against EXOSIMS, skyscapes, and zodipy live in scripts/ and are runnable by anyone with those packages installed. Current results: exact agreement with the EXOSIMS closed-form models and magnitude chain, float64 round-off agreement with skyscapes, and 0.95-1.23 brightness ratios against the independent Kelsall model at 1.25 um.

Design

One implementation serves both backends through the array API standard. Functions compute in the namespace of their array inputs (via array-api-compat), so numpy callers get numpy in and numpy out with no JAX anywhere in their dependency tree, while JAX callers get functions that jit, vmap, and differentiate natively. Hard dependencies are numpy and array-api-compat only; the [jax] extra exists so the test suite can run the JAX side. JAX users should enable float64:

jax.config.update("jax_enable_x64", True)

Random sampling is deliberately absent from the library: distributions ship as quantile functions (inverse CDFs), and callers bring uniforms from their own generator, whether that is numpy.random or jax.random.

Not this library

Structured circumstellar disks (rings, gaps, offsets) and scene rendering belong to scene simulators; solar-system ephemerides belong to the caller. For thermal-infrared zodiacal emission modeling, see zodipy; this library covers the reflected-light brightness conventions used in exoplanet direct imaging.

Install

PyPI release pending; for now:

pip install git+https://github.com/CoreySpohn/zodi.git

Metadata

Release files for zodi 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zodi 1.0.0
File Size Uploaded
zodi-1.0.0.tar.gz 38.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zodi 1.0.0
File Interpreter ABI Platform
zodi-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 58.7 kB

Release files / zodi-1.0.0.tar.gz

Download URL zodi-1.0.0.tar.gz
Size 38.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7bc119db62f2abde081219a003250127dcf176ff72aef0e16ab3d6076de64342
BLAKE2b-256 checksum
How to use checksums
e6b3067aa30c7bdbcbe8f878f692e1c127806de7ea02976922481699ab4ac137
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / zodi-1.0.0-py3-none-any.whl

Download URL zodi-1.0.0-py3-none-any.whl
Size 20.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20a6f971ce31be6f48342eb0b640ea1f307ca0cf60a64417647ad927c0080a13
BLAKE2b-256 checksum
How to use checksums
e620e5f8d4b4979d2ea612e1963db906eedc457562edada005a1c3d1dd0ee567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page