Differentiable spectral modelling of exoplanets/brown dwarfs/M dwarfs using JAX! Read the docs π. In short, ExoJAX allows you to do gradient based optimizations and HMC-NUTS samplings using the latest database.
ExoJAX is at least compatible with
![](https://private-user-images.githubusercontent.com/15956904/318988511-8aa9673b-b64b-4b65-a76c-2966ef1edbc7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyNjY5OTgsIm5iZiI6MTcyMTI2NjY5OCwicGF0aCI6Ii8xNTk1NjkwNC8zMTg5ODg1MTEtOGFhOTY3M2ItYjY0Yi00YjY1LWE3NmMtMjk2NmVmMWVkYmM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE4VDAxMzgxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZGIyYWQ4YjQ0MWFjYTA3Y2I0M2M4ODJiZjc5MGI5OWYwMjgwYTk5NmY3YjQwOTVjNjcxNjI1MGQ4YmVlZTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.S_LQR44KVVNbSt5OkFSrfRpWc-HszmibsNYnjnAsXlA)
ExoJAX Classes
- Databases: *db (mdb: molecular, adb: atomic, cdb:continuum, pdb: particulates)
- Opacity Calculators: opa (i.e. Voigt profile)
- Atmospheric Radiative Transfer: art (emission w, w/o scattering, refelction, transmission)
- Atompsheric Microphysics: amp (clouds etc)
See this page for the first step!
Voigt Profile βοΈ
from exojax.spec import voigt
nu=numpy.linspace(-10,10,100)
voigt(nu,1.0,2.0) #sigma_D=1.0, gamma_L=2.0
Cross Section using HITRAN/HITEMP/ExoMol βοΈ
from exojax.utils.grids import wavenumber_grid
from exojax.spec.api import MdbExomol
from exojax.spec.opacalc import OpaPremodit
from jax import config
config.update("jax_enable_x64", True)
nu_grid,wav,res=wavenumber_grid(1900.0,2300.0,200000,xsmode="premodit",unit="cm-1",)
mdb = MdbExomol(".database/CO/12C-16O/Li2015",nu_grid)
opa = OpaPremodit(mdb,nu_grid,auto_trange=[900.0,1100.0])
xsv = opa.xsvector(1000.0, 1.0) # cross section for 1000K, 1 bar
![](https://user-images.githubusercontent.com/15956904/111430765-2eedf180-873e-11eb-9740-9e1a313d590c.png)
Do you just want to plot the line strength at T=1000K?
mdb.change_reference_temperature(1000.) # at 1000K
plt.plot(mdb.nu_lines,mdb.line_strength_ref,".")
Emission Spectrum βοΈ
art = ArtEmisPure(nu_grid=nu_grid, pressure_btm=1.e2, pressure_top=1.e-8, nlayer=100)
F = art.run(dtau, Tarr)
![](https://user-images.githubusercontent.com/15956904/116488770-286ea000-a8ce-11eb-982d-7884b423592c.png)
Transmission Spectrum βοΈ
Reflection Spectrum βοΈ
pip install exojax
or
python setup.py install
Note on installation w/ GPU support
π You need to install CUDA, JAX w/ NVIDIA GPU support.
Visit here for the installation of GPU supported JAX.
- Paper I: Kawahara, Kawashima, Masuda, Crossfield, Pannier, van den Bekerom, ApJS 258, 31 (2022)
π Copyright 2020-2024 ExoJAX contributors. ExoJAX is publicly available under the MIT license.