Skip to content

Releases: hpparvi/ExoIris

v1.1.0

10 Feb 14:32

Choose a tag to compare

ExoIris v1.1.0

New Features

  • White light curve creation — Added TSData.create_white_light_curve() for creating white light curves from 2D spectrophotometry with weighted averaging.

  • Marginalised log-likelihood — Added a white_marginalized noise model option alongside the existing profiled likelihood (now explicitly named white_profiled). The marginalised option analytically integrates out baseline coefficients rather than estimating them via least-squares profiling.

  • Combined binning — Added TSData.bin() for simultaneous wavelength and time binning.

Bug Fixes

  • Fixed error propagation in 2D binning.
  • Fixed exception handling in least-squares baseline calculation for individual wavelength bins.

Other Changes

  • Reorganised binning utilities into a standalone module; the previous bin2d in util.py is deprecated.
  • Added tests for binning functions and package imports.
  • Updated tutorial notebooks.

Upgrading

This release is backwards-compatible with v1.0.0. The default noise model remains unchanged (white_profiled). The deprecated bin2d function in util.py will be removed in a future release — migrate to exoiris.binning instead.

v1.0.0

28 Jan 11:26

Choose a tag to compare

ExoIris v1.0.0

New Features

  • Custom interpolation models — Added set_limb_darkening_interpolator and set_radius_ratio_interpolator methods, allowing users to choose interpolation schemes for limb darkening and radius ratios independently. Previously, both used the same interpolation method.

  • Offset parameter priors — Added the ability to set priors for offset parameters in the analysis workflow, giving more control over multi-instrument and multi-epoch fitting.

  • Interpolation metadata — Interpolation type is now tracked in FITS header metadata (INTERP_LD), ensuring the limb darkening interpolation method is preserved when saving and loading models.

Changes

  • Refactored interpolation handling in TSLPF to manage radius ratio and limb darkening interpolators separately, enabling more flexible model configurations.
  • Improved reinitialisation logic for MCMC and differential evolution populations when limb darkening coefficients or knots are updated.
  • Updated documentation for API methods and workflow.

Bug Fixes

  • Fixed incorrect FWHM scaling in the spot_model function. The scaling factor now correctly uses log(4)^(1/shape) for proper full width at half maximum calculations in generalised Gaussian spot models.

Upgrading

This is the first stable release. The API is considered stable and follows semantic versioning from this point onwards. Users on v0.23.x should note that the interpolation handling has been refactored — if you were relying on a single shared interpolator for both limb darkening and radius ratios, you may need to configure them separately using the new methods.

v0.21.0

24 Nov 12:00

Choose a tag to compare

ExoIris v0.21: Reduced-rank log likelihood function for atmospheric retrieval.

A new exoiris.loglikelihood.LogLikelihood class has been added to ExoIris to provide a statistically robust Gaussian likelihood for comparing theoretical transmission spectra against the posterior spectrum inferred by ExoIris.
Because the ExoIris transmission spectrum is derived from spline-parameterized radius-ratio knots, the resulting spectrum is strongly correlated across wavelength. These correlations carry information and must be accounted for explicitly when performing atmosphere retrievals. Treating the spectral points as independent (e.g., using only diagonal uncertainties) leads to overconfident likelihoods and biased inferences.

The new class implements a reduced-rank (PCA/Karhunen–Loève) Gaussian likelihood that correctly incorporates these wavelength correlations while avoiding the numerical instability that arises from inverting an ill-conditioned full covariance matrix. It works by:

  • Evaluating posterior samples of the transmission spectrum on a user-defined wavelength grid.
  • Computing the empirical covariance and extracting only its significant eigenmodes (the directions in which the posterior actually varies).
  • Projecting both the posterior mean spectrum and any theoretical model into this reduced eigenspace.
  • Whitening these components so the posterior becomes a Gaussian with unit variance in each retained mode.
  • Computing the log likelihood using only these statistically meaningful components.

This approach is mathematically equivalent to evaluating the likelihood in knot space while allowing direct comparison to theoretical spectra sampled on any wavelength grid. It avoids numerical instabilities, preserves the full information content of the posterior, and provides a reliable likelihood function for atmospheric retrievals and model comparison.

Added

  • Added a loglikelihood.LogLikelihood class for reduced-rank Gaussian log-likelihood calculation.
  • Added ExoIris.create_loglikelihood_function method to generate log-likelihood instances for atmospheric retrieval.
  • Added ExoIris.radius_ratio_spectrum and ExoIris.area_ratio_spectrum methods to compute posterior transmission
    spectrum distributions for given wavelengths.
  • Added exoiris.util.create_mock_model utility function for generating mock transmission spectra.

v0.20.0

19 Nov 09:17

Choose a tag to compare

ExoIris 0.20: Star spots and the transit light source effect

  • Added the ability to model star spot crossings. The spots are modeled as generalized Gaussians parameterized by their center time, amplitude in a given reference wavelength, full width at half maximum (FWHM), spot temperature in Kelvin, and spot shape. The spot amplitude along the wavelength is modeled using the theoretical BT-Settl spectra, the stellar effective temperature, the spot temperature, and the reference wavelength in which the spot amplitude is measured.
  • Added the ability to model the contamination from unocculted spots and faculae (the transit light source effect, or TLSE). This is modeled also using BT-Settl spectra following the formalism described by Rackham et al. (2018).
  • Included two new radius ratio interpolation options: "nearest" and "linear".

v0.19.2

12 Sep 13:05

Choose a tag to compare

Version 0.19.2

This release adds a free_gp noise model where the GP hyperparameters are free parameters in the model. It also improves GP visualization and white light curve modeling.

Full Changelog: v0.18.0...v0.19.2

V0.18.0

20 Feb 11:19

Choose a tag to compare

Version 0.18 adds an offset_group variable to TSData that can be used in ExoIris to account for bias offsets between instruments
and monochromatic transit-to-transit variations in transit depths caused by unocculted stellar heterogeneities, such
as spots and faculae.

v0.17.0

19 Feb 21:00

Choose a tag to compare

Added

  • Added support for masked data support with GP noise model.
  • Added an option to set the GP hyperparameters for an individual data set.
  • Added white_times, white_fluxes, white_models, and white_errors properties to ExoIris to access white ligth curve data.

Fixed

  • Fixed model loading with masked data.

v0.16.0

17 Feb 10:51

Choose a tag to compare

Added

  • New Data Mask: Introduced a general mask attribute in the TSData class to automatically flag valid data points (based on finite fluxes and errors).
  • Uncertainty Estimation: Added the estimate_average_uncertainties method in TSData to compute per-wavelength uncertainties using first differences.
  • White Light Curve Processing: Updated the WhiteLPF class to use nanmean and isfinite checks when computing the white light curve, ensuring only valid flux values are averaged.

Changed

  • Transit Mask Renaming: Renamed the old ootmask attribute to transit_mask throughout the codebase for clarity. This change affects plotting, normalization, binning, and file I/O.
  • Method Renaming: Renamed calculate_ootmask in the TSDataSet class to mask_transit to reflect the updated naming convention.
  • Normalization Enhancements: Updated normalization methods (normalize_to_poly and normalize_to_median) to utilize the new transit_mask and mask attributes, improving the reliability of baseline fits.
  • Cropping Flexibility: Added an inplace parameter to both crop_wavelength and crop_time methods, allowing users to choose between modifying the existing data or returning a new cropped instance.
  • Likelihood Function Update: Modified the lnlike_normal function in TSLPF to accept an additional mask parameter and process only valid data points during likelihood calculations.
  • Outlier Handling: Refined the remove_outliers method to flag outliers by setting affected fluxes and errors to NaN, rather than replacing them with median-filtered values.

Removed

  • Removed Deprecated Method: calculate_ootmask
    This method (deprecated since v0.9) has been removed in favor of the new transit masking functionality.
  • Removed Deprecated Method: normalize_baseline
    The normalize_baseline method (deprecated since v0.9) has been removed; users should now use normalize_to_poly.
  • Removed Deprecated Method: normalize_median
    The deprecated normalize_median method has been removed. Its functionality is now available via normalize_to_median.
  • Removed Deprecated Method: split_time
    The split_time method, deprecated since v0.9, has been removed. Use partition_time instead.

v0.15.0

27 Jan 12:36

Choose a tag to compare

v0.15.0

Full Changelog: v0.14.1...v0.15.0