Skip to main content

PyExoCross

A Python framework for LTE and non-LTE spectroscopic post-processing of atomic and molecular line lists

PyPI PyPI Total Downloads PyPI Monthly Downloads PyPI Status

Python Code Documentation License

CUDA GPU acceleration with PyTorch and CuPy MPS GPU acceleration with PyTorch

DOI arXiv

Description

PyExoCross is a Python adaptation of the ExoCross Fortran application.

PyExoCross is designed for postprocessing the huge molecular line lists generated by the ExoMol project and other similar initiatives such as the HITRAN and HITEMP. PyExoCross generates absorption and emission spectra and other properties (partition functions, specific heats, cooling functions, lifetimes, oscillator strengths, and stick spectra) based on molecular line lists. PyExoCross calculates cross sections with four line profiles: Doppler, Gaussian, Lorentzian, and Voigt; a number of options are available for computing Voigt profiles. PyExoCross can convert data format between ExoMol and HITRAN. PyExoCross supports importing and exporting line lists in the ExoMol and HITRAN/HITEMP formats.

PyExoCross Python Package

PyExoCross PyPI : https://pypi.org/project/pyexocross/

PyExoCross API Reference : https://pyexocross.readthedocs.io/en/latest/python_api/index.html

Install from PyPI (Python package)

pip install pyexocross

Use as a Python package

import pyexocross as px

print(px.__version__)

For detailed usage, see the Python API Reference in the documentation: https://pyexocross.readthedocs.io/en/latest/python_api/index.html

PyExoCross Python Program

PyExoCross GitHub : https://github.com/Beryl-Jingxin/PyExoCross

PyExoCross Manual : https://pyexocross.readthedocs.io

PyExoCross Wiki : https://github.com/Beryl-Jingxin/PyExoCross/wiki

PyExoCross NASA EMAC: https://emac.gsfc.nasa.gov?cid=2407-003

Download program

Download PyExoCross program by command:

git clone https://github.com/Beryl-Jingxin/PyExoCross.git

Install Python packages

pip install -r requirements.txt

Python packages version (see requirements.txt for installable bounds; tested on Python 3.8–3.12):

Python packages Version range
python_version 3.8, 3.9, 3.10, 3.11, 3.12
numpy >=1.20, <2.0
pandas >=1.4, <3.0
pyarrow >=10.0, <24.0
scipy >=1.7, <2.0
numexpr >=2.7.0,<3.0.0
matplotlib >=3.5, <4.0
tqdm >=4.64.0,<5.0.0
tabulate >=0.8.9,<1.0.0
requests >=2.25.1,<3.0.0
astropy >=5.0.0,<7.0.0
dask >=2022.5, <2025
pandarallel >=1.6.5,<2.0.0

Optional GPU Acceleration

PyExoCross now supports selectable compute mode:

  • Device CPU (default)
  • Device GPU (uses CUDA backend when available)

GPU mode is optional and automatically falls back to CPU if CUDA runtime packages or devices are unavailable. To keep GPU memory usage bounded, use:

  • GPUBatchLines (default 8192)
  • GPUBatchGrid (default 256)

When using API kwargs, use device='CPU' or device='GPU'.
run_mode kwarg remains supported as a compatibility alias for device.
Other parameters are gpu_backend, gpu_batch_lines, and gpu_batch_grid.

Runtime packages (optional):

  • CUDA: install torch (preferred) or cupy with CUDA support.

Note: macOS MPS GPU can use GPU mode but it only uses float32 which lacks precision, so please use Nvidia GPU (CUDA) or use macOS CPU mode instead for high precision calculations.

Run PyExoCross program

In the terminal, use the following commands to run PyExoCross:

python run.py -p input_filepath

If the input filepath is /home/username/PyExoCross/input/H2O_exomol.inp

python run.py -p ./input/H2O_exomol.inp
# OR 
python run.py -p /home/username/PyExoCross/input/H2O_exomol.inp

If you want to run program in conda environment which is named as 'exomol', please use command:

/home/username/anaconda3/envs/exomol/bin/python run.py -p ./input/H2O_exomol.inp

If you need to run program in background, please use command:

# Recommended: Without log file (the program will record log automatically)
nohup python -u run.py -p ./input/H2O_exomol.inp > /dev/null 2>&1
# Save log file
nohup python -u run.py -p ./input/H2O_exomol.inp > ./output/H2O_exomol.out 2>&1 &
# OR 
nohup /home/username/anaconda3/envs/exomol/bin/python -u run.py -p ./input/H2O_exomol.inp > ./output/H2O_exomol.out 2>&1 &

Notes for input file

All information can be written in the input file. Just change the information you will use.You don't need to change any other unnecessary information.Please do not change the first column strings.

Citation

PyExoCross Paper

PyExoCross Published Paper : https://doi.org/10.1093/rasti/rzae016

PyExoCross arXiv Preprint : https://arxiv.org/abs/2406.03977

Please cite PyExoCross paper 💚

Cite

Jingxin Zhang, Jonathan Tennyson, Sergei N Yurchenko, PyExoCross: a Python program for generating spectra and cross-sections from molecular line lists, RAS Techniques and Instruments, Volume 3, Issue 1, January 2024, Pages 257–287, https://doi.org/10.1093/rasti/rzae016

Bibtex

@article{pyexocross,
    author   = {Jingxin Zhang and Jonathan Tennyson and Sergei N. Yurchenko},
    title    = {{PyExoCross: a Python program for generating spectra and cross-sections from molecular line lists}},
    journal  = {RAS Techniques and Instruments},
    volume   = {3},
    number   = {1},
    pages    = {257-287},
    year     = {2024},
    month    = {04},
    issn     = {2752-8200},
    doi      = {10.1093/rasti/rzae016},
    url      = {https://doi.org/10.1093/rasti/rzae016},
    eprint   = {https://academic.oup.com/rasti/article-pdf/3/1/257/61224370/rzae016.pdf},
}

@article{pyexocross2,
    author  = {Jingxin Zhang and Sergei N. Yurchenko and Jonathan Tennyson},
    title   = {{PyExoCross 2.0: A Python Framework for LTE and non-LTE Spectra, Cross Sections, and Spectroscopic Post-processing of Atomic and Molecular Line Lists}},
    journal = {RAS Techniques and Instruments},
    volume  = {to be submitted},
    pages   = {},
    year    = {2026},
    doi     = {}
}

Support databases

✅ ExoMol (High temperature + molecule)

✅ ExoMolHR (High-resolution + high accuracy + high temperature + molecule)

✅ ExoAtom (Including NIST and Kurucz + atom and ion)

✅ HITRAN (High-resolution + molecule)

✅ HITEMP (High temperature + molecule)

⏳ Databases from VAMDC

Metadata

Release files for pyexocross 1.1.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyexocross 1.1.15
File Size Uploaded
pyexocross-1.1.15.tar.gz 324.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyexocross 1.1.15
File Interpreter ABI Platform
pyexocross-1.1.15-py3-none-any.whl Python 3 none any Details

Total release size: 569.7 kB

Release files / pyexocross-1.1.15.tar.gz

Download URL pyexocross-1.1.15.tar.gz
Size 324.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b2c0a80efdafa969714a901241dd6bdc8d7563181544818fc0bd1b2d7b0ba8fd
BLAKE2b-256 checksum
How to use checksums
bbbdb5be6625551afdefae97d4e12fe6db1250f3f5d80ced3af6961606901a98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.8

Release files / pyexocross-1.1.15-py3-none-any.whl

Download URL pyexocross-1.1.15-py3-none-any.whl
Size 245.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a7de627b2686597920122055902bb70563026b8493f6153135eaa5f0e1f4e9f
BLAKE2b-256 checksum
How to use checksums
ecc5684f487211729b6d33cb0917a95dc7b547c430446b2f9c72ee345868f3bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.8

Release history Release notifications | RSS feed

1.1.19

2 release files

1.1.18

2 release files

1.1.17

2 release files

1.1.16

2 release files

This release

1.1.15 This release

2 release files

1.1.14

2 release files

1.1.12

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page