Skip to main content

ISOFIT — Imaging Spectrometer Optimal FITting

Documentation PyPI version conda-forge License Python versions Downloads DOI

ISOFIT is a Python toolkit for retrieving surface reflectance, atmospheric state, and instrument calibration from imaging spectrometer radiance data. It is built around the optimal estimation framework and is designed for flexibility — users can combine different radiative transfer models, surface priors, and uncertainty models to suit their sensors and science questions. The effort began with a straightforward optimal estimation implementation, and has grown considerably - see the bibilography for the latest science.

ISOFIT is on version PyPI version. Major revisions are not backwards compatible with one another due to updates to the configuration files. See Release History for older versions.

ISOFIT combines surface models, atmospheric radiative transfer, and instrument characteristics into a forward model. This forward model is then solved by inverting relative to a measurement, via optimization or MCMC, to generate the Maximum a Posterior estimate of the joint surface and atmospheric state vector.

+-------------------------------------------------------------------------+
|                                 isofit                                  |
|                                                                         |
|  +--------+      +---------------+      +----------------------------+  |
|  |        |      |               |      |          forward           |  |
|  |   io   | ===> |   inversion   | <=== |                            |  |
|  |        |      |               |      | +----------+  +----------+ |  |
|  +--------+      +---------------+      | |atmosphere|  | surface  | |  |
|                          |              | +----------+  +----------+ |  |
|                          |              |                            |  |
|                          |              |       +------------+       |  |
|                          |              |       | instrument |       |  |
|                          |              |       +------------+       |  |
|                          |              +----------------------------+  |
|                          |                                              |
+--------------------------|----------------------------------------------+
                           |
                           | produces
                           v
   +-------------------------------------------------------------+
   |    Joint Surface, Instrument, & Atmospheric State Vector    |
   +-------------------------------------------------------------+

Contents


Components

Capability Details
Radiative transfer MODTRAN, 6S, LibRadTran, sRTMnet neural-network emulator
Surface models Multicomponent Gaussian, Glint, LUT, Emissive (thermal)
Instrument models SNR, parametric noise, nonlinear response, and more

Installation

Conda (recommended)

mamba create -n isofit_env -c conda-forge isofit
mamba activate isofit_env

Full Installation Instructions

For all options including developer installs, see the Installation guide.


Quick Start

1. Download supporting data and build examples

isofit download all
isofit build

This fetches the sRTMnet emulator, 6S, surface libraries, and pre-configured example datasets into ~/.isofit/. For users that want a smaller or mosre custom download, see Additional Data for customization.

2. Run an example to test

cd $(isofit path examples)/image_cube/small
bash default.sh

3. Start using!

Leverage the command line interface to build surface models, run isofit on scenes, or perform a wavelength calibration.

To get going, you'll need a radiance image, a location file (with lat, lon, and elevation), and an observation file with sensor and solar geometry. To get running, ISOFIT ships with both examples (all command line scripts) and tutorials (jupyter notebooks that annotate calls in python and the command line):

Tutorials

Tutorial Description
apply_oe Full walkthrough of inputs and outputs of apply_oe
single pixel inversion Learn how to use isofit modules in your own code by building and executing individual modules on a single pixel

Examples

Example Description
image_cube/small Fast analytical retrieval — good first run
20151026_SantaMonica AVIRIS-NG scene with 6S radiative transfer
20171108_Pasadena Urban hyperspectral scene
20190806_ThermalIR Thermal infrared joint VSWIR+TIR retrieval
20231110_Prism_Multisurface Multi-component surface model
NEON National Ecological Observatory Network data
SeaBASS_prism_001 Coastal / water target single-pixel case

Full instructions for running examples.


Atmospheric Radiative Transfer Models

ISOFIT supports several atmospheric RTM backends. The recommended starting point for new users is sRTMnet, a neural-network emulator that requires no licensed software:

  • sRTMnet quickstart — automatic install via isofit download
  • MODTRAN quickstart — requires a MODTRAN 6 licence
  • 6S — Second Simulation of a Satellite Signal in the Solar Spectrum vector code. Automatic download and build with isofit download.
  • libRadtran — library for radiative transfer. Automatic download and build with isofit download.
  • Bring Your Own — isofit can run with any LUT that complies with the luts/reader.py standards. Adding a new radiative transfer model is also straightforward by extending the base BaseAtmosphere class.

Contributing

Contributions are welcome — bug reports, tests, documentation, and new features.
Please read the Contributing guide before opening a pull request.

Active development happens on the dev branch.
Issues and feature requests are tracked in the issue tracker.


Citation

If you use ISOFIT in your work, please cite the relevant papers listed in the Bibliography.
Package citation information is in the CITATION.cff file.


License

Apache License v2 — see LICENSE.

Images in this repository are licensed under CC0.

Release files for isofit 4.1.4

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

Source distribution (sdist)

Source distribution for isofit 4.1.4
File Size Uploaded
isofit-4.1.4.tar.gz 1.1 MB Details

Built distribution (wheel)

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

Total release size: 1.5 MB

Release files / isofit-4.1.4.tar.gz

Download URL isofit-4.1.4.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
6fe12134b7ada8f20983390392258f12e059e2cd46d88a9e673093c4d8fa29f3
BLAKE2b-256 checksum
How to use checksums
1bc8da872a8ec669d8c88804ec49dd14b217038e68a92d708c0eea2e69f1fc23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / isofit-4.1.4-py3-none-any.whl

Download URL isofit-4.1.4-py3-none-any.whl
Size 352.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4b13da0217d075744c8b0efae6b7649310af444de4a0a5d509364549531b213
BLAKE2b-256 checksum
How to use checksums
6aa7a541750c19bf220f78b614b85870953c37ba307cf38cd5eb66efada3fcce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release history Release notifications | RSS feed

4.1.5

2 release files

This release

4.1.4 This release

2 release files

4.1.3

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.7.7

2 release files

3.7.6

2 release files

3.7.5

2 release files

3.7.4

2 release files

3.7.3

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.6

2 release files

3.3.4

2 release files

3.3.3

2 release files

3.3.0

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.10.5

2 release files

2.10.4

2 release files

2.10.2

2 release files

2.10.0

1 release file

2.9.8

2 release files

2.9.7

2 release files

2.9.6

2 release files

2.9.5

2 release files

2.9.4

2 release files

2.9.3

2 release files

2.9.2

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.4.3

2 release files

1.4.2

1 release file

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.6

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.1.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