Papers
Topics
Authors
Recent
Search
2000 character limit reached

ExoIris: Python Exoplanet Spectroscopy

Updated 12 July 2026
  • ExoIris is an open-source Python package designed to analyze exoplanet transit and eclipse spectroscopy using 2D time-wavelength flux arrays.
  • It integrates spectral and temporal data in a self-consistent fit, enabling joint analysis of multiple instruments and epochs for robust transmission spectra.
  • Its flexible spline parameterization and Gaussian process noise modeling reduce bias and improve the precision of orbital and atmospheric parameter retrievals.

ExoIris is a user-friendly Python package for exoplanet transmission and emission spectroscopy that models two-dimensional spectrophotometric transit time series directly and supports the joint analysis of multiple datasets obtained with different instruments and at different epochs. It is designed for time-resolved spectrophotometric data represented as 2D arrays of flux versus time and wavelength, and it infers wavelength-independent parameters and wavelength-dependent parameters in a single, self-consistent fit rather than through the commonly used two-step workflow based on a preliminary white-light solution (Parviainen, 19 Sep 2025).

1. Scope, observational domain, and inferred quantities

ExoIris is an open-source Python package for analyzing exoplanet transit and eclipse spectroscopy. It was built for modern instruments such as JWST NIRISS SOSS, NIRSpec, and NIRCam grism, but the methodology is general and can be applied to HST and ground-based spectroscopic transit datasets as well. Its native data model is a time-wavelength flux array with associated uncertainties, masks, and grouping metadata, so the primary observational object is not an extracted one-dimensional spectrum but a spectrophotometric time series in two dimensions (Parviainen, 19 Sep 2025).

The principal products are a transmission spectrum and, conceptually, an emission spectrum. In the transmission case the core wavelength-dependent quantity is

k(λ)=Rp(λ)R⋆,k(\lambda) = \frac{R_p(\lambda)}{R_\star},

which is inferred from transit depth as a function of wavelength. In eclipse or phase-curve applications, the analogous output is the planet/star flux ratio. This organization is significant because ExoIris treats the spectral and temporal dimensions as parts of a single inference problem, so orbital parameters, limb darkening, offsets, baselines, and noise properties are estimated jointly rather than propagated sequentially from a reduced summary product (Parviainen, 19 Sep 2025).

Typical use cases include a single transit from one instrument, a joint transmission spectrum from multiple JWST instruments and detectors, and sensitivity tests for stellar contamination, instrumental offsets, and noise properties. A representative example discussed in the literature is a combined NIRSpec, NIRCam, and NIRISS analysis for WASP-39 b, which illustrates the package’s intended role in heterogeneous, multi-epoch exoplanet spectroscopy (Parviainen, 19 Sep 2025).

2. Forward model and transit formalism

For a dataset dd, ExoIris models the observed flux as

Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),

where OdO_d is an additive flux offset for the dataset’s offset group, Bd(λ)B_d(\lambda) is a multiplicative baseline spectral shape modeled as a spline in λ\lambda, TT is the spectrophotometric transit model, k(λ)k(\lambda) is the wavelength-dependent planet-to-star radius ratio, u(λ)\mathbf{u}(\lambda) is the limb-darkening parameter vector, and

ϕ={t0,g, P, i, e, ω}\boldsymbol{\phi} = \bigl\{ t_{0,g},\, P,\, i,\, e,\, \omega \bigr\}

is the orbital parameter vector shared across datasets except for epoch-group-dependent transit centers dd0 (Parviainen, 19 Sep 2025).

The transit calculation uses TSModel from PyTransit, based on the RoadRunner transit model optimized for transmission spectroscopy. For a radially symmetric stellar intensity profile dd1, the in-transit stellar flux is written as

dd2

and, after normalization, RoadRunner evaluates the flux with a discretized limb-darkening profile: dd3 Here dd4 is a weight vector depending on radius ratio dd5 and impact parameter dd6, dd7 is the discretized limb-darkening profile, and dd8 is the occulted area using the Agol et al. 2020 circle-intersection routine. The computational optimization central to ExoIris is that dd9 is independent of wavelength and is computed once per exposure, while Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),0 depends only weakly on small variations in Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),1, permitting precomputation around a single Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),2 (Parviainen, 19 Sep 2025).

ExoIris avoids fitting an independent Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),3 in every spectral channel by parameterizing Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),4 as a spline: Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),5 The dimensionality is therefore controlled by the number of knots rather than the number of channels, and the effective spectral resolution of the inferred transmission spectrum can be adjusted through knot placement. The same strategy is used for analytical limb-darkening laws, where coefficients such as Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),6 and Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),7 are represented by splines, or alternatively limb darkening can be supplied through an LDTk-based numerical model parameterized by the global stellar parameters Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),8, Fd(t,λ)=Od+(1−Od) Bd(λ)  T ⁣(t,  k(λ),  u(λ),  ϕ),F_d(t,\lambda) = O_d + \bigl(1 - O_d\bigr)\, B_d(\lambda)\; T\!\left(t,\;k(\lambda),\;\mathbf{u}(\lambda),\;\boldsymbol{\phi}\right),9, and OdO_d0 (Parviainen, 19 Sep 2025).

This modeling strategy suggests an explicitly low-dimensional but spectrally flexible representation of wavelength structure. A plausible implication is that ExoIris is particularly well suited to cases where the desired retrieved spectrum is smoother than the native channelization of the reduced data but not necessarily describable by a rigid parametric atmosphere model.

3. Joint multi-dataset inference

A defining feature of ExoIris is its explicit design for joint modeling of heterogeneous datasets from multiple instruments, multiple detectors within an instrument, and multiple epochs. Each dataset is assigned to an epoch group, an offset group, a noise group, and a dataset-specific baseline spline. In that grouped formulation the dataset model becomes

OdO_d1

where OdO_d2 is shared by all datasets in an epoch group, while OdO_d3, OdO_d4, OdO_d5, and OdO_d6 remain global (Parviainen, 19 Sep 2025).

This grouping induces a clear separation of parameter roles. Global, wavelength-independent parameters include OdO_d7, OdO_d8, OdO_d9, Bd(λ)B_d(\lambda)0, the transit centers per epoch group, and the LDTk stellar parameters if numerical limb darkening is used. Group-specific but wavelength-independent parameters include offsets and noise parameters. Dataset-specific wavelength-dependent structure is carried by the baseline spline Bd(λ)B_d(\lambda)1. The transmission spectrum Bd(λ)B_d(\lambda)2 and the limb-darkening functions Bd(λ)B_d(\lambda)3 are wavelength-dependent but shared across datasets. In effect, ExoIris performs a joint inversion in which the physical spectrum is global while instrumental baselines, offsets, and noise remain local to the relevant group structure (Parviainen, 19 Sep 2025).

The canonical demonstration is the joint ExoIris analysis of eight JWST spectrophotometric datasets for WASP-39 b. The configuration uses four epoch groups, five offset groups with PRISM as the reference and Bd(λ)B_d(\lambda)4, six noise groups, 126 radius-ratio knots across Bd(λ)B_d(\lambda)5–Bd(λ)B_d(\lambda)6, 10 limb-darkening knots linearly spaced from Bd(λ)B_d(\lambda)7–Bd(λ)B_d(\lambda)8, and a baseline spline for each dataset. The resulting transmission spectrum is reported as consistent with Carter et al. (2024), while the joint fit achieves a stellar density precision of Bd(λ)B_d(\lambda)9 assuming known λ\lambda0 (Parviainen, 19 Sep 2025).

The significance of this architecture is methodological rather than merely software-engineering. By sharing λ\lambda1, limb darkening, and orbital geometry across datasets while permitting detector- and epoch-specific nuisance structure, ExoIris operationalizes a self-consistent treatment of cross-instrument inference that the traditional channel-by-channel workflow does not naturally provide.

4. Noise models, likelihood, and Bayesian estimation

ExoIris supports both white-noise and time-correlated-noise formulations. Under the white-noise model, each noise group λ\lambda2 has a free scaling factor λ\lambda3 that rescales the input uncertainties according to

λ\lambda4

This accommodates pipeline uncertainties that may be mis-estimated while retaining a diagonal covariance structure when photon noise dominates or systematics are already removed (Parviainen, 19 Sep 2025).

For time-correlated noise ExoIris uses celerite2 and currently focuses on a Matern-λ\lambda5 kernel. For a dataset λ\lambda6,

λ\lambda7

where λ\lambda8 is the transit-plus-baseline-plus-offset model, λ\lambda9 is the GP covariance matrix, and TT0. An example kernel is

TT1

with amplitude TT2 and timescale TT3. Hyperparameters may be fixed or fitted jointly with transit parameters, although the latter is computationally more expensive (Parviainen, 19 Sep 2025).

The dataset likelihood under a Gaussian noise model is

TT4

with TT5, and the total log-likelihood is the sum over datasets. Posterior estimation is Bayesian,

TT6

and ExoIris uses MCMC via emcee to sample the posterior over spline knot values, orbital parameters, offsets, baseline terms, noise scalings, and optionally GP hyperparameters (Parviainen, 19 Sep 2025).

In practical use, broad limb-darkening priors may be derived from LDTk/PHOENIX, orbital parameters may have Gaussian or uniform priors informed by external ephemerides, and radius-ratio spline values typically have broad priors consistent with physically reasonable transit depths. The baseline model is wavelength-dependent and time-independent; explicit auxiliary-variable time trends are not detailed, so temporal systematics are handled by the GP kernel or by upstream reduction choices (Parviainen, 19 Sep 2025).

5. Computational performance, workflow, validation, and limitations

Despite its joint two-dimensional formalism, ExoIris is designed to remain computationally efficient. A low-resolution transmission spectrum can be estimated from a single JWST NIRISS transit observation in TT7 minutes assuming white noise and in TT8 minutes when using a Gaussian process noise model on a standard desktop computer. A single JWST NIRISS transit at TT9 with 100 radius-ratio knots and GP noise is reported as typically requiring 10–20 minutes, while more complex joint analyses such as the eight-dataset WASP-39 b example are completed within a few hours (Parviainen, 19 Sep 2025).

The implementation stack includes PyTransit for the transit model, LDTk for optional limb darkening, celerite2 for Gaussian processes, NumPy, SciPy, Numba, Astropy, and emcee. The package is installable via PyPI with pip install exoiris, and source code, examples, documentation, and tutorials are provided through GitHub and Read the Docs. The software design emphasizes explicit group-based model configuration, spline infrastructure for wavelength-dependent parameters, and tools for masking, binning, and cropping data (Parviainen, 19 Sep 2025).

Validation in the literature proceeds at several levels. Numerical tests of the RoadRunner approximations give a maximum transit-depth error of k(λ)k(\lambda)0 (3 ppm) for hot Jupiter WASP-39 b with k(λ)k(\lambda)1 varying k(λ)k(\lambda)2–k(λ)k(\lambda)3, and k(λ)k(\lambda)4 (0.05 ppm) for sub-Neptune TOI-836 c with k(λ)k(\lambda)5 varying k(λ)k(\lambda)6–k(λ)k(\lambda)7. For grazing hot Jupiters, the errors can rise to k(λ)k(\lambda)8, although they are still described as below current observational precision and correctable if needed. The package is also validated against the joint JWST transmission spectrum of WASP-39 b and through a bias-offset example showing that detector offsets can be absorbed by k(λ)k(\lambda)9 without distorting the transmission-spectrum shape (Parviainen, 19 Sep 2025).

A typical workflow begins with reduction of a spectroscopic time series to a flux array in u(λ)\mathbf{u}(\lambda)0 with uncertainties, optional cropping or binning, and construction of ExoIris dataset objects. The next stages are assignment of epoch, offset, and noise groups; selection of a noise model; definition of radius-ratio, limb-darkening, and baseline splines; an initial white-light fit; and then a full two-dimensional MCMC fit with posterior and residual inspection. The final transmission spectrum u(λ)\mathbf{u}(\lambda)1 is then intended to be passed to atmospheric retrieval tools, which are not part of ExoIris (Parviainen, 19 Sep 2025).

The documented limitations are equally specific. ExoIris currently focuses on time-domain Gaussian processes rather than a full two-dimensional GP over time and wavelength. GP fitting with free hyperparameters is currently limited to the Matern-u(λ)\mathbf{u}(\lambda)2 kernel. The offset model requires wavelength overlap between groups; without overlap, offset degeneracies with u(λ)\mathbf{u}(\lambda)3 arise. Runtime increases with the number of knots and datasets, and emission spectroscopy is conceptually supported but the documented use cases focus mainly on transmission (Parviainen, 19 Sep 2025).

6. Relation to the traditional two-step workflow and terminological ambiguity

The methodological contrast most often emphasized in connection with ExoIris is its departure from the traditional two-step approach. In that conventional workflow, a white light curve is first fitted to estimate global parameters, after which each spectral channel is fitted independently under constraints inherited from the white-light solution. ExoIris instead fits the full time-wavelength data simultaneously, with shared orbital parameters, shared wavelength-dependent spline models, and jointly inferred offsets, baselines, and noise properties. The stated advantages are self-consistent uncertainty propagation, reduced bias, and better handling of correlations across time, wavelength, and dataset boundaries (Parviainen, 19 Sep 2025).

The name also requires disambiguation. In current research usage, “ExoIris” most directly denotes the Python package for exoplanet transmission and emission spectroscopy, but similar spellings have been used for distinct exoplanet-related contexts. The term “ExoIRIS” has been used for exoplanet science with the InfraRed Imaging Spectrograph on the Thirty Meter Telescope, especially direct imaging and spectroscopy of planets and planetary systems (Barton et al., 2010). “ExoIRIS” or “ExoIris” has also been used informally to describe the application of the 3D radiative transfer code IRIS to exoplanet atmospheres (Ibgui et al., 2012). In another line of usage, “ExoIris” has been associated with a visible-light extreme adaptive optics concept for detecting oxygen in Proxima Centauri b and analogs on extremely large telescopes (Fowler et al., 2023). Mid-infrared biosignature discussions have likewise framed the u(λ)\mathbf{u}(\lambda)4 Ou(λ)\mathbf{u}(\lambda)5-X CIA band as directly relevant to an “ExoIris”-type mission concept (Fauchez et al., 2020).

Usage of the name Referent Source
ExoIris Python package for exoplanet transmission and emission spectroscopy (Parviainen, 19 Sep 2025)
ExoIRIS Exoplanet science with TMT/IRIS (Barton et al., 2010)
ExoIRIS or ExoIris Application of the IRIS radiative-transfer framework to exoplanet atmospheres (Ibgui et al., 2012)
ExoIris Visible ExAO concept for oxygen detection on rocky exoplanets (Fowler et al., 2023)

This terminological overlap has produced a recurring misconception that all occurrences denote a single software or instrument program. The literature instead indicates a family of unrelated or only loosely related usages built around the prominence of “IRIS” in astrophysical instrumentation and modeling. In the contemporary software context, however, ExoIris most specifically denotes the Python framework for direct modeling of two-dimensional spectrophotometric transit and eclipse datasets (Parviainen, 19 Sep 2025).

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to ExoIris.