lazuli-exo: exoplanet transmission spectroscopy with the Lazuli IFS

Schmidt Observatory System

lazuli-exo simulates exoplanet transmission spectroscopy with the Integral Field Spectrograph (IFS) on Lazuli, the Schmidt Observatory System’s space telescope. It returns the model transmission spectrum of a transiting planet binned to the instrument, with photon/read-noise error bars for a chosen number of transits, a spectral-template S/N, and (for the showcase planets) simulated transit light curves.

Two ways in:

  • Showcase tables: 14 well-known planets and 5 atmosphere scenarios each, with precomputed slicersim noise, through lazuli_exo.observe().

  • Parametric model: any transiting planet from its star, radius, mass, \(T_\mathrm{eq}\), transit duration and atmosphere knobs ([M/H], C/O, \(\mu\), cloud deck, haze), with slicersim computing the noise live, through lazuli_exo.simulate().

Warning

The instrument half is quantitative; the atmosphere half is a fast surrogate. Noise comes from slicersim with the Lazuli CBE instrument and a verified photon budget. The atmosphere is a millisecond interpolation of POSEIDON isothermal, equilibrium-chemistry spectra that matches POSEIDON to well under the single-transit noise inside a validated box, and is a 1D toy model outside it. Use the outputs for rankings, trade studies and scenario comparisons; do not quote the sigmas as detection significances. For an accurate atmosphere, pass your own forward model as simulate(star, spectrum=(wl_um, depth)). Read Concepts and known approximations before quoting any number.

The runtime is numpy-only with its lookup tables shipped as package data. POSEIDON, slicersim, jax and astropy are never imported by import lazuli_exo; slicersim and sncosmo are needed at call time only by the parametric model’s live noise.

Note

New here? Read Installation, then Quick start. The Tutorials are runnable Jupyter notebooks that cover every feature end to end; notebooks 6 to 9 cover the parametric model.

Highlights

  • Atmosphere scenarios clear, cloudy, hazy, high_metallicity and a featureless flat baseline for 14 showcase targets.

  • Parametric atmospheres from a POSEIDON-derived grid of photospheric pressure \(\zeta(\lambda)\) on (T, [M/H], C/O) plus analytic scale height, slant column, cloud deck and haze, validated against the showcase tables (The parametric model).

  • Instrument noise per channel from slicersim for a single transit, with Vega to AB handled, the readout desaturated per target, scaled by \(1/\sqrt{N_\mathrm{transits}}\) and binned in inverse variance.

  • A spectral-template S/N: a matched-template amplitude statistic against the best-fit flat line, overall and per molecular band mask.

  • Transit light curves, quadratically limb-darkened and numpy-only, for the showcase planets.

  • Plot methods on the results (Plotting), each taking an ax and returning it.

  • A form/report layer (lazuli_exo.forms, lazuli_exo.report) that the local Flask applet and the Lazuli simulators site share (Web applet and the web contract).

Contents

Tutorials

Indices and tables