radis.io.exomol module

Molecular database (MDB) class

  • MdbExomol is the MDB for ExoMol

Initial code borrowed from the Exojax code (which you should also have a look at !), by @HajimeKawahara, under MIT License.

class MdbExomol(path, nurange=[- inf, inf], margin=1.0, crit=- inf, bkgdatm='H2', broadf=True, engine='vaex', verbose=True)[source]

Bases: object

molecular database of ExoMol

MdbExomol is a class for ExoMol.

  • nu_lines (nd array) (line center (cm-1))

  • Sij0 (nd array) (line strength at T=Tref (cm))

  • dev_nu_lines (np array) (line center in device (cm-1))

  • logsij0 (np array) (log line strength at T=Tref)

  • A (np array) (Einstein A coefficient)

  • elower (np array) (the lower state energy (cm-1))

  • gpp (np array) (statistical weight)

  • jlower (np array) (J_lower)

  • jupper (np array) (J_upper)

  • n_Tref (np array) (temperature exponent)

  • alpha_ref (np array) (alpha_ref (gamma0))

  • n_Tref_def (default temperature exponent in .def file, used for jlower not given in .broad)

  • alpha_ref_def (default alpha_ref (gamma0) in .def file, used for jlower not given in .broad)

  • .. minigallery:: radis.fetch_exomol


interpolated partition function


T (temperature)

Return type

Q(T) interpolated in jnp.array

download(molec, extension, numtag=None)[source]

Downloading Exomol files

  • molec (like “12C-16O__Li2015”)

  • extension (extension list e.g. [“.pf”,”.def”,”.trans.bz2”,”.states.bz2”,”.broad”])

  • numtag (number tag of transition file if exists. e.g. “11100-11200”)


The download URL is written in exojax.utils.url.

masking(mask, mask_needed=True)[source]

applying mask and (re)generate jnp.arrays


mask: mask to be applied. self.mask is updated. mask_needed: whether mask needs to be applied or not


interpolated partition function ratio


T (temperature)

Return type

qr(T)=Q(T)/Q(Tref) interpolated in jnp.array

set_broadening(alpha_ref_def=None, n_Texp_def=None)[source]

setting broadening parameters


alpha_ref: set default alpha_ref and apply it. None=use self.alpha_ref_def n_Texp_def: set default n_Texp and apply it. None=use self.n_Texp_def


Export Line Database to a RADIS-friendly Pandas DataFrame


attrs (dict) – add these as attributes of the DataFrame


Generate Jax arrays for use in ExoJax

fetch_exomol(molecule, database=None, local_databases=None, databank_name='EXOMOL-{molecule}', isotope='1', load_wavenum_min=None, load_wavenum_max=None, columns=None, cache=True, verbose=True, clean_cache_files=True, return_local_path=False, return_partition_function=False, engine='default')[source]

Stream ExoMol file from EXOMOL website. Unzip and build a HDF5 file directly.

Returns a Pandas DataFrame containing all lines.

  • molecule (str) – ExoMol molecule

  • database (str) – database name. Ex:: POKAZATEL or BT2 for H2O. See KNOWN_EXOMOL_DATABASE_NAMES. If None and there is only one database available, use it.

  • local_databases (str) – where to create the RADIS HDF5 files. Default "~/.radisdb/exomol". Can be changed in radis.config["DEFAULT_DOWNLOAD_PATH"] or in ~/radis.json config file

  • databank_name (str) – name of the databank in RADIS Configuration file Default "EXOMOL-{molecule}"

  • isotope (str or int) – load only certain isotopes, sorted by terrestrial abundances : '1', '2', etc. Default 1.


    In RADIS, isotope abundance is included in the line intensity calculation. However, the terrestrial abundances used may not be relevant to non-terrestrial applications. By default, the abundance is given reading HITRAN data. If the molecule does not exist in the HITRAN database, the abundance is read from the radis/radis_default.json configuration file, which can be modified by editing radis.config after import or directly by editing the user ~/radis.json user configuration file (overwrites radis_default.json). In the radis/radis_default.json file, values were calculated with a simple model based on the terrestrial isotopic abundance of each element.

  • load_wavenum_min, load_wavenum_max (float (cm-1)) – load only specific wavenumbers.

  • columns (list of str) – list of columns to load. If None, returns all columns in the file.

Other Parameters
  • cache (bool, or 'regen') – if True, use existing HDF5 file. If False or 'regen', rebuild it. Default True.

  • verbose (bool)

  • clean_cache_files (bool) – if True clean downloaded cache files after HDF5 are created.

  • return_local_path (bool) – if True, also returns the path of the local database file.

  • return_partition_function (bool) – if True, also returns a PartFuncExoMol object.

  • engine (‘vaex’, ‘feather’) – which memory-mapping library to use. If ‘default’ use the value from ~/radis.json


  • df (pd.DataFrame) – Line list A HDF5 file is also created in local_databases and referenced in the RADIS config file with name databank_name

  • local_path (str) – path of local database file if return_local_path



if using load_only_wavenum_above/below or isotope, the whole database is anyway downloaded and uncompressed to local_databases fast access .HDF5 files (which will take a long time on first call). Only the expected wavenumber range & isotopes are returned. The .HFD5 parsing uses hdf2df()

get_exomol_database_list(molecule, isotope_full_name)[source]

Parse ExoMol website and return list of available databases, and recommended database



Get CH4 from ExoMol :

databases, recommended = get_exomol_database_list("CH4", "12C-1H4")
>>> ['xsec-YT10to10', 'YT10to10', 'YT34to10'], 'YT34to10'

Or combine with get_exomol_full_isotope_name() to get the isopologue (sorted by terrestrial abundance)

from radis.io.exomol import get_exomol_database_list, get_exomol_full_isotope_name
databases, recommended = get_exomol_database_list("CH4", get_exomol_full_isotope_name("CH4", 1))
>>> ['xsec-YT10to10', 'YT10to10', 'YT34to10'], 'YT34to10'
get_exomol_full_isotope_name(molecule, isotope)[source]

Get full isotope name for molecule and isotope number

  • molecule (str)

  • isotope (int) – terrestrial abundance


get_exomol_full_isotope_name("CH4", 1)
>>> '12C-1H4'