Skip to main content

Imaging Spectrometer Optimal FITting

Project description

This codebase contains a set of routines and utilities for fitting surface, atmosphere and instrument models to imaging spectrometer data. It is written primarily in Python, with JSON format configuration files and some dependencies on widely-available numerical and scientific libraries such as scipy, scikit-learn, and numba. It is designed for maximum flexibility, so that users can swap in and evaluate model components based on different radiative transfer models (RTMs) and various statistical descriptions of surface, instrument, and atmosphere. It can run on individual radiance spectra in text format, or imaging spectrometer data cubes.

The subdirectories contain:

  • bin/ - command line scripts for calling isofit and sunposition

  • data/ - shared data files

  • docs/ - documentation

  • examples/ - example runs packaged with input data and configuration files

  • isofit/ - the isofit Python module including utilities and tests

  • logs/ - Pytest logs

  • recipe/ - conda release recipe

If you use ISOFIT in your research or production, we ask that you cite the precursor publication:

Thompson, David R., Vijay Natraj, Robert O. Green, Mark C. Helmlinger, Bo-Cai Gao, and Michael L. Eastwood. “Optimal estimation for imaging spectrometer atmospheric correction.” Remote Sensing of Environment 216 (2018): 355-373.

Installation Instructions

From Github

The code repository, development branches, and user community are found on GitHub. To install:

  1. Download or clone the git repo located at https://github.com/davidraythompson/isofit.

  2. Install the ISOFIT dependencies using pip

python3 -m pip install scipy
python3 -m pip install numba
python3 -m pip install matplotlib
python3 -m pip install scikit-learn
python3 -m pip install scikit-image
python3 -m pip install spectral
python3 -m pip install pytest
python3 -m pip install pep8
python3 -m pip install xxhash
  1. Make sure the isofit base directory is in your Python path like this:

export PYTHONPATH="${PYTHONPATH}:/path/to/isofit"

From PyPI

Also, the latest release is always hosted on PyPI, so if you have pip installed, you can install ISOFIT from the command line with

pip install isofit

This will install the “isofit” package into your environment as well as its dependencies.

Quick Start using MODTRAN 6.0

This quick start presumes that you have an installation of the MODTRAN 6.0 radiative transfer model. This is the preferred radiative transfer option if available, though we have also included an interface to the open source LibRadTran RT code. Other open source options and neural network emulators will be integrated in the future.

  1. Configure your environment with the variable MODTRAN_DIR pointing to the base MODTRAN 6.0 directory.

  2. Run the following code

cd examples/20171108_Pasadena
./run_examples_modtran.sh
  1. This will build a surface model and run the retrieval. The default example uses a lookup table approximation, and the code should recognize that the tables do not currently exist. It will call MODTRAN to rebuild them, which will take a few minutes.

  2. Look for output data in examples/20171108_Pasadena/output/. Each retrieval writes diagnostic images to examples/20171108_Pasadena/images/ as it runs.

Quick Start with LibRadTran 2.0.x

This quick start presumes that you have an installation of the open source libRadTran radiative transfer model (LibRadTran <http://www.libradtran.org/doku.php>)_ . We have tested with the 2.0.2 release. You will need the “REPTRAN” absorption parameterization - follow the instructions on the libradtran installation page to get that data.

  1. Configure your environment with the variable LIBRADTRAN_DIR pointing to the base libRadTran directory.

  2. Run the following code

cd examples/20171108_Pasadena
./run_example_libradtran.sh
  1. This will build a surface model and run the retrieval. The default example uses a lookup table approximation, and the code should recognize that the tables do not currently exist. It will call libRadTran to rebuild them, which will take a few minutes.

  2. Look for output data in examples/20171108_Pasadena/output/. Diagnostic images are written to examples/20171108_Pasadena/images/.

Additional Installation Info for Mac OSX

  1. Install the command-line compiler

xcode-select --install
  1. Download the python3 installer from https://www.python.org/downloads/mac-osx/

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

isofit-1.2.0.tar.gz (16.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isofit-1.2.0-py3-none-any.whl (477.7 kB view details)

Uploaded Python 3

File details

Details for the file isofit-1.2.0.tar.gz.

File metadata

  • Download URL: isofit-1.2.0.tar.gz
  • Upload date:
  • Size: 16.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3

File hashes

Hashes for isofit-1.2.0.tar.gz
Algorithm Hash digest
SHA256 5aa7010d7707c86058348c459720d893a4d18bf7e11434c19aa409531cd56072
MD5 5c6096722257e3099ef666f50bc3c3fb
BLAKE2b-256 8e8e5be276b817eb1625343fdbb677d324820792861864bf8f99bc3262835455

See more details on using hashes here.

File details

Details for the file isofit-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: isofit-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 477.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3

File hashes

Hashes for isofit-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f943f786555b3ae178a517fddcb77ec4ed97353b2517c4508de1dd5be1192fd
MD5 df0e546bf5f47d24ab434dedcfd177c4
BLAKE2b-256 1c5c793d2de6129bbafd0f8fb8a0f4d2cb181c3af931273aeab98507caff1d66

See more details on using hashes here.

Supported by

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