exoplanet-dev / jaxoplanet

Astronomical time series analysis with JAX
https://jax.exoplanet.codes
MIT License
24 stars 10 forks source link

Fitting multi-wavelength lightcurves #164

Open taylorbell57 opened 4 months ago

taylorbell57 commented 4 months ago

Another issue I brough up on the starry repo is the ability to fit multi-wavelength lightcurves. With the advent of JWST, I and many others are wanting to simultaneously fit multi-wavelength data. This ends up being such a high-dimensional problem that my understanding is that HMC-based samplers like NUTS are likely the only option. While starry supported wavelength-dependent emission, it did not support wavelength-dependent radii (https://github.com/rodluger/starry/issues/286) or wavelength-dependent limb-darkening (https://github.com/rodluger/starry/issues/310) which are critical for transmission spectroscopy. While with starry one could make N systems for N wavelengths, this ends up being seriously inefficient and slow as the overhead of initializing objects and solving for geometric values (e.g., solving Kepler's equation) is repeated N times.

Again, I am really not well-versed in jaxoplanet yet and its possible that this is already supported, but I wanted to raise this issue early on to try to make sure it was considered before adding such a feature became too cumbersome.

dfm commented 4 months ago

Thanks for bringing this up! This was one of our top motivations for developing jaxoplanet in the first place and it's absolutely supported. Here we benefit from jax.vmap, which means that any models written in JAX can be expressively vectorized over any of their input parameters.

@soichiro-hattori has been leading the work on applying jaxoplanet to real data with a specific eye towards transmission spectroscopy, and we're hoping to have a paper and tutorial "Soon™". In the meantime, we'd be very happy to help get you or anyone else up and running!

taylorbell57 commented 4 months ago

Wonderful, I'm very happy to hear it!! :rocket: You're welcome to close this issue if you want or keep it open to avoid others asking the same question until a tutorial is provided