Metadata-Version: 2.4
Name: pyexocross
Version: 1.0.0
Summary: A Python package for generating molecular and atomic spectra and cross sections
Home-page: https://github.com/Beryl-Jingxin/PyExoCross
Author: Jingxin Zhang
Author-email: Jingxin Zhang <jingxin.zhang.19@ucl.ac.uk>
License: GPL-3.0-only
Project-URL: Homepage, https://github.com/Beryl-Jingxin/PyExoCross
Project-URL: Documentation, https://pyexocross.readthedocs.io
Project-URL: Repository, https://github.com/Beryl-Jingxin/PyExoCross
Project-URL: Issues, https://github.com/Beryl-Jingxin/PyExoCross/issues
Project-URL: Publication, https://doi.org/10.1093/rasti/rzae016
Keywords: spectroscopy,molecule,atom,cross section,exomol,hitran
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8,<3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy<2.0.0,>=1.20.0
Requires-Dist: pandas<3.0.0,>=1.4.0
Requires-Dist: scipy<2.0.0,>=1.7.0
Requires-Dist: matplotlib<4.0.0,>=3.5.0
Requires-Dist: tqdm<5.0.0,>=4.64.0
Requires-Dist: tabulate<1.0.0,>=0.8.9
Requires-Dist: numexpr<3.0.0,>=2.7.0
Requires-Dist: astropy<7.0.0,>=5.0.0
Requires-Dist: dask<2025.0.0,>=2022.5.0
Requires-Dist: pandarallel<2.0.0,>=1.6.5
Requires-Dist: requests<3.0.0,>=2.25.1
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# PyExoCross

**PyExoCross is a python program and package for generating molecular and atomic spectra and cross sections**

PyExoCross ***Manual*** : [https://pyexocross.readthedocs.io](https://pyexocross.readthedocs.io)

PyExoCross ***Wiki*** : [https://github.com/Beryl-Jingxin/PyExoCross/wiki](https://github.com/Beryl-Jingxin/PyExoCross/wiki)

PyExoCross ***Published*** Paper : [https://doi.org/10.1093/rasti/rzae016](https://doi.org/10.1093/rasti/rzae016)

PyExoCross ***arXiv*** Preprint : [https://arxiv.org/abs/2406.03977](https://arxiv.org/abs/2406.03977)

PyExoCross ***NASA EMAC*** Link : [https://emac.gsfc.nasa.gov?cid=2407-003](https://emac.gsfc.nasa.gov?cid=2407-003)

## Download

Download PyExoCross program by command:

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

## Install Python packages

```bash
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                |
| 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             |

## Run PyExoCross

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

```bash
python3 run.py -p input_filepath
```

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

```bash
python3 run.py -p ./input/H2O_exomol.inp
# OR 
python3 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:

```bash
/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:

```bash
# Recommended: Without log file (the program will record log automatically)
nohup python3 -u run.py -p ./input/H2O_exomol.inp > /dev/null 2>&1
# Save log file
nohup python3 -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

1. 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.
2. If you met problems, jupyter notebook `.ipynb` code is stored for checking and testing.


# <font color=Green>**Citation**</font>

## <font color=Green>**Please cite PyExoCross paper**</font> &#x1F49A;

<font color=Green>***Cite***</font>

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

<font color=Green>***Bibtex***</font>

```bash
@article{pyexocross,
    author   = {Zhang, Jingxin and Tennyson, Jonathan and Yurchenko, Sergei N},
    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},
    abstract = {PyExoCross is a Python adaptation of the ExoCross Fortran application, 
                PyExoCross is designed for post-processing the huge molecular line lists generated by the ExoMol project 
                and other similar initiatives such as the HITRAN and HITEMP data bases. 
                PyExoCross generates absorption and emission stick spectra, cross-sections, and other properties 
                (partition functions, specific heats, cooling functions, lifetimes, and oscillator strengths) 
                based on molecular line lists. PyExoCross calculates cross-sections with four line profiles: 
                Doppler, Gaussian, Lorentzian, and Voigt profiles in both sampling and binned methods; 
                a number of options are available for computing Voigt profiles which we test for speed and accuracy. 
                PyExoCross supports importing and exporting line lists in the ExoMol and HITRAN/HITEMP formats. 
                PyExoCross also provides conversion between the ExoMol and HITRAN data formats. 
                In addition, PyExoCross has extra code for users to automate the batch download of 
                line list files from the ExoMol data base.},
    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},
}
```

## Support databases

&#x2705; ExoMol  

&#x2705; ExoAtom

&#x2705; HITRAN

&#x2705; HITEMP

&#x23F3; ExoMolHR
