Observations (lazuli_exo.observe)

Assemble a simulated Lazuli IFS transmission-spectroscopy observation.

class lazuli_exo.observe.SimulatedSpectrum(planet: str, scenario: str, n_transits: int, R: int, wavelength: numpy.ndarray, depth: numpy.ndarray, depth_err: numpy.ndarray, model_wavelength: numpy.ndarray, model_depth: numpy.ndarray, flat_depth: float, meta: dict = <factory>)[source]

Bases: object

Parameters:
planet: str
scenario: str
n_transits: int
R: int
wavelength: ndarray
depth: ndarray
depth_err: ndarray
model_wavelength: ndarray
model_depth: ndarray
flat_depth: float
meta: dict
simulate_points(seed=None)[source]

One noisy realization of the binned spectrum.

detect()[source]
light_curves(n_groups=1, seed=None, **kwargs)[source]
plot(ax=None, **kwargs)[source]

Model + one noisy realization; see plotting.plot_spectrum.

plot_noise(ax=None, **kwargs)[source]

Per-bin 1-sigma error vs wavelength; see plotting.plot_noise.

lazuli_exo.observe.positive_int(name, value)[source]

Validate a count or resolving power: a positive integer (an integral float such as 3.0 is accepted); bool is rejected.

lazuli_exo.observe.observe(planet, scenario='clear', n_transits=1, R=100, tables_dir=None, f_spot=0.0, T_spot_K=None, f_fac=0.0, T_fac_K=None)[source]

Simulate observing showcase planet under scenario for n_transits.

The spectrum is the parametric model evaluated at the frozen registry values (presets.showcase), so observe() and simulate() share one model and one radius convention: the archive R_p is the band-median transit radius and H uses the true T_eq. The per-bin 1-sigma uncertainties come from the precomputed slicersim noise table, scaled by 1/sqrt(n_transits). f_spot, T_spot_K, f_fac, T_fac_K add stellar contamination (star.contamination, registry T_eff/log g/[Fe/H]); default off. flat_depth stays the geometric (R_p/R_s)^2.