Awesome Open Source
Awesome Open Source

Lowtran in Python

Zenodo DOI CDash Language grade: Python Actions Status Actions Status PyPi version PyPi Download stats

LOWTRAN7 atmospheric absorption extinction model. Updated by Michael Hirsch to be platform independent and easily accessible from Python ≥ 3.6 and Matlab.

The main LOWTRAN program has been made accessible from Python by using direct memory transfers instead of the cumbersome and error-prone process of writing/reading text files. xarray.Dataset high-performance, simple N-D array data is passed out, with appropriate metadata.

Gallery

See below for how to make these examples.

Lowtran7 absorption

Install

You will need a Fortran compiler. gfortran is one suitable compiler. We use f2py (part of numpy) to seamlessly use Fortran libraries from Python by special compilation of the Fortran library with auto-generated shim code.

  1. If a Fortran compiler is not already installed, install Gfortran:

    • Linux: apt install gfortran
    • Mac: brew install gcc
    • Windows use MSYS2 or MinGW to get Gfortran. Windows only: from Powershell:
    echo "[build]`ncompiler=mingw32" | Out-File -Encoding ASCII ~/pydistutils.cfg
    

    Note: Cygwin is essentially obsolete due to Windows Subsystem for Linux. Cygwin is broken for Numpy and Gfortran and general.

  2. Install Python Lowtran code

    pip install -e .
    

Examples

In these examples, you can write to HDF5 with the -o option.

We present examples of:

Matlab

Matlab users can seamlessly access Python modules, as demonstrated in RunLowtran.m and lowtran_transmission.m.

Here's what's you'll need:

  1. Setup Python ↔ Matlab interface.

  2. Install Lowtran in Python as at the top of this Readme.

  3. From Matlab, verify everything is working by from the lowtran/ directory:

    runtests('tests')
    

Notes

LOWTRAN7 User manual Refer to this to understand what parameters are set to default. Currently I don't have any aerosols enabled for example, though it's possible to add them into the code.

Right now a lot of configuration features aren't implemented, please request those you want.

Reference

  • Original 1994 Lowtran7 Code
  • LOWFIL program in reference/lowtran7.10.f was not connected as we had previously implemented a filter function directly in Python.
  • LOWSCAN spectral sampling (scanning) program in reference/lowtran7.13.f was not connected as we had no need for coarser spectral resolution.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (1,123,251
Matlab (44,388
Fortran (5,798
Geoscience (156
Related Projects