Skip to main content

Auto-differentiable line-by-line spectral modeling of exoplanets/brown dwarfs using JAX.

Project description

exojax

License Docs arxiv

Auto-differentiable line-by-line spectral modeling of exoplanets/brown dwarfs using JAX. Read the docs 🐕.

Functions

Voigt Profile :heavy_check_mark:
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 :heavy_check_mark:
from exojax.spec import AutoXS
nus=numpy.linspace(1900.0,2300.0,40000,dtype=numpy.float64) #wavenumber (cm-1)
autoxs=AutoXS(nus,"ExoMol","CO") #using ExoMol CO (12C-16O). HITRAN and HITEMP are also supported.  
xsv=autoxs.xsection(1000.0,1.0) #cross section for 1000K, 1bar (cm2)
Do you just want to plot the line strength?
ls=autoxs.linest(1000.0,1.0) #line strength for 1000K, 1bar (cm)
plt.plot(autoxs.mdb.nu_lines,ls,".")

autoxs.mdb is the moldb.MdbExomol class for molecular database. Here is a entrance to a deeper level. exojax is more flexible in the way it calculates the molecular lines. 🐈 Go to the docs for the deeper level.

Emission Spectrum :heavy_check_mark:
from exojax.spec.rtransfer import nugrid
from exojax.spec import AutoRT
nus,wav,res=nugrid(1900.0,2300.0,40000,"cm-1")
Parr=numpy.logspace(-8,2,100) #100 layers from 10^-8 bar to 10^2 bar
Tarr = 500.*(Parr/Parr[-1])**0.02    
autort=AutoRT(nus,1.e5,2.33,Tarr,Parr) #g=1.e5 cm/s2, mmw=2.33
autort.addcia("H2-H2",0.74,0.74)       #CIA, mmr(H)=0.74
autort.addcia("H2-He",0.74,0.25)       #CIA, mmr(He)=0.25
autort.addmol("ExoMol","CO",0.01)      #CO line, mmr(CO)=0.01
F=autort.rtrun()
Are you an observer?
nusobs=numpy.linspace(1900.0,2300.0,10000,dtype=numpy.float64) #observation wavenumber bin (cm-1)
F=autort.spectrum(nusobs,100000.0,20.0,0.0) #R=100000, vsini=10km/s, RV=0km/s

If you want to customize the model, see here.

HMC-NUTS of Emission Spectra :heavy_check_mark:

To fit a spectrum model to real data, you need to know a little more about exojax. See here.

🥥 HMC-NUTS modeling of a brown dwarf, Luhman 16 A using exojax. See here for an example of the Bayes inference using the real spectrum.

Clouds :white_check_mark: Only for brave users.
HMC-NUTS of Transmission Spectra :x: Not supported yet.

Installation

pip install exojax

or

python setup.py install
Note on installation w/ GPU support

:books: You need to install CUDA, NumPyro, JAX w/ NVIDIA GPU support, and cuDNN.

  • NumPyro

exojax supports NumPyro >0.5.0, which enables the forward differentiation of HMC-NUTS. Please check the required JAX version by NumPyro. In May 2021, it seems the recent version of NumPyro requires jaxlib>=0.1.62 (see setup.py of NumPyro for instance).

  • JAX

Check you cuda version:

nvcc -V

Install such as

pip install --upgrade "jax[cuda111]"  -f https://storage.googleapis.com/jax-releases/jax_releases.html

This is the case for cuda11.1 to 11.4. Visit here for the details.

  • cuDNN

For instance, get .deb from NVIDIA and install such as

sudo dpkg -i libcudnn8_8.2.0.53-1+cuda11.3_amd64.deb

cuDNN is used for to compute the astronomical/instrumental response for the large number of wave number grid (exojax.spec.response). Otherwise, we do not use it.

References

  • Kawahara, Kawashima, Masuda, Crossfield, van den Bekerom, Parker (2021) under review: arXiv:2105.14782

License

🐈 Copyright 2020-2021 Hajime Kawahara and contributors. exojax is publicly available under the MIT license. Under development since Dec. 2020.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

exojax-0.8.0-py3.8.egg (942.2 kB view hashes)

Uploaded Source

exojax-0.8.0-py2.py3-none-any.whl (408.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page