Imaging Spectrometer Optimal FITting
Project description
ISOFIT — Imaging Spectrometer Optimal FITting
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
. 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
- Features
- Installation
- Quick Start
- Examples
- Atmospheric Radiative Transfer Models
- Documentation
- Contributing
- Citation
- License
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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file isofit-4.0.0b0.tar.gz.
File metadata
- Download URL: isofit-4.0.0b0.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a32210df706975d4ad8420b5fa41cd8d97dfc0852d6f09d5b53412b64c0dde90
|
|
| MD5 |
d8d06c72b132136e865341a34dfacd75
|
|
| BLAKE2b-256 |
fdee70dfbfa9071dd4de13544ec94180f023b4a0197887c4beff47f10cf46f0c
|
File details
Details for the file isofit-4.0.0b0-py3-none-any.whl.
File metadata
- Download URL: isofit-4.0.0b0-py3-none-any.whl
- Upload date:
- Size: 341.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ecb13a39ea7259a78af08d3a1d7a11a87dcba88c82748c1c9437f6cd6a768d5
|
|
| MD5 |
24b4b2ca9d6013c3acd071b1dfd5732b
|
|
| BLAKE2b-256 |
24acd9668f8ccfb04d1060ef4dec8592604344460fbd72f064d63b9276b56fce
|