Changelog#
0.6.0
Fixed the projected-ellipse orientation when the quadratic coefficients along the two sky axes are equal. Tilted ellipses at 45 degrees now retain their orientation instead of being treated as axis-aligned.
Fixed JAX derivatives at zero flattening in both the projected 2D and physical 3D planet parameterizations. The transit engine now constructs the boundary directly from the shape parameters, avoiding the undefined major-axis angle of a circle. Added regression tests for circular-limit gradients.
Replaced SymPy-based construction of the limb-darkening change-of-basis matrix with a NumPy linear solve. SymPy is now a test-only dependency, with regression comparisons against the original symbolic calculation at orders up to 50.
Removed the remaining unused phase-curve and extended-illumination internals. The surface-sampling and illumination helpers used by
illustratenow live inengine.illustrate_utils; direct imports from the removedengine.phase_curve_utilsmodule must be updated.Consolidated repeated limb-darkening profile and illustration code, and simplified the 3D-to-2D projection helpers without changing their formulas.
Reduced runtime dependencies to JAX, NumPy, and Matplotlib. Removed quadax, moved Astropy and tqdm to the test dependency group, and removed unused tox tooling. JAX is now declared directly as a dependency.
Updated integration-method documentation and lint compatibility. CI now avoids duplicate push and pull-request runs and cancels superseded pull-request runs.
0.5.0
Added
RingedSystem, a subclass ofOblateSystemfor planets hosting an opaque, flat, circular ring bounded by an inner and outer radius. Rings lie in the planet’s equatorial plane by default, with options for independent orientation. Blocked flux is computed by inclusion-exclusion of overlapping regions using Green’s-theorem boundary integrals.RingedSystem.illustrateoverlays the projected ring edges and a filled annulus.Generalized the transit engine’s limb-crossing logic to split the planet outline and stellar limb at all crossings, including four-intersection cases. This fixes light curves for long, thin projected ellipses crossing the star, including nearly edge-on rings and extreme projected planet shapes.
Added ring geometry, flux, and gradient tests, with independent Monte Carlo and Shapely comparisons, plus stress tests for grazing transits, tangencies, extreme flattening, and higher-order limb darkening.
Expanded type annotations and updated tutorials, including examples for ringed planets and performance comparisons.
0.4.0
Breaking: Removed
OblateSystem.loglike. Users now compute their own likelihood by comparingOblateSystem.lightcurvewith their data. Removed the constructor argumentsdata,uncertainties,log_jitter, andsystematic_trend_coeffs. The transit-fitting tutorial demonstrates this pattern.Breaking: Removed phase-curve and stellar-variation calculations from
OblateSystem, together withcompute_reflected_phase_curve,compute_emitted_phase_curve,compute_stellar_ellipsoidal_variations,compute_stellar_doppler_variations,phase_curve_nsamples,extended_illumination_npts, andrandom_seed.OblateSystem.illustrateretains itsreflectedvisualization option.Replaced adaptive quadax integration with fixed-grid quadrature: a reparameterized Gauss-Legendre rule for partial transits and a periodic trapezoid rule for full transits. Added numerical stability and performance improvements to the transit engine.
Removed the separate Fortran implementation.
Dropped Python 3.9 support, adopted uv for dependency management, and added pre-commit linting, formatting, and spelling checks.
0.3.1 (10/2024)
Enforced forward-mode differentiation under the hood in
OblateSystemto speed up gradient evaluation forOblateSystem.loglikeor any functions that useOblateSystem.lightcurve.
0.3.0 (10/2024)
Added
limb_darkening_lawsmodule, which contains convenience functions for transforming limb darkening coefficients of commonly used limb darkening laws into coefficients of high-order polynomials thatsquishyplanetcan use to model the intensity profile of the star.
0.2.2 (09/2024)
Added ability to parameterize the planet’s orbit via t0, the time of transit center, instead of t_peri. This is useful for fitting systems with non-zero eccentricity.
0.2.1 (09/2024)
0.2.0 (08/2024)
The
log_jitterterm now represents the standard deviation of the added noise, not the variance. This brings it in line with the definition of measurement uncertainties.When dealing with a projected 2D ellipse (i.e., not a tidally locked planet)
projected_rhas been replaced withprojected_effective_r. Previously there was a strong degeneracy betweenprojected_randprojected_f, since the combination of the two dictated the area of the ellipse, and therefore transit depth, which fits are much more sensitive to than to slight deviations to ingress/egress shape.projected_effective_ris the radius of a circle with the same area as the ellipse, and is therefore a more physically meaningful parameter to fit for.Added fit_limb_darkening_profile() as a convenience function for approximating limb darkening profiles computed via stellar grids as high-order polynomial laws that
squishyplanetcan use.tidally_lockedis now a required parameter when creating anOblateSystemobject, which is a change from its previous default of True.
0.1.2 (05/2024)
Fixed issue #7. Previously, calls to OblateSystem.lightcurve() after initializing the OblateSystem object were not recalculating true anomalies even if the period and/or t_peri changed.
0.1.1 (05/2024)
Initial JOSS submission version, fixed issues #1 and #5.