Skip to main content

Torch-based Vegetation Radiative Transfer Model library (PROSPECT, SAIL, SMAC)

Project description

TorchRTM: A PyTorch-based Radiative Transfer Model

TorchRTM is a flexible and efficient package designed for simulating radiative transfer in the atmosphere, vegetation, and soil systems, based on the PROSAIL model. It leverages GPU-accelerated computations and integrates various atmospheric correction models, including SMAC for top-of-atmosphere reflectance estimation. This package is particularly suitable for remote sensing and environmental monitoring applications and is build for pyTorch integration.


Features

  • GPU Acceleration: Built with PyTorch in mind, TorchRTM offers GPU inference to speed up simulations.
  • SMAC Integration: Perform atmospheric correction using the Simplified Model for Atmospheric Correction (SMAC).
  • PROSAIL Model: Integrates the PROSAIL radiative transfer model for canopy reflectance simulations.
  • Flexible Inputs: Handles both batch and individual simulations of canopy and atmospheric parameters.
  • Retrieval Component: Includes a fast and flexible trait retrieval system, offering both neural network (NN)-based inference and Look-Up Table (LUT)-based matching.

Installation

Prerequisites

Ensure that you have Python 3.9+ and PyTorch installed. If you need PyTorch, follow the installation instructions from the official site.

Install TorchRTM

You can install TorchRTM directly from GitHub:

pip install torchrtm

Usage

1. Simulating Canopy Reflectance

The prosail_shell_v2 function can be used to simulate the canopy reflectance based on input vegetation parameters.

from torchrtm.models import prosail
import torch
# Simulate canopy reflectance
B=10000
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

traits=torch.tensor([[40.0, 8.0, 0.0, 0.01, 0.008]] * B).to(device)
N=torch.tensor([1.5] * B).to(device)
LIDFa=torch.tensor([-0.3] * B).to(device)
LIDFb=torch.tensor([-0.1] * B).to(device)
lai=torch.tensor([3.0] * B).to(device)
q=torch.tensor([0.5] * B).to(device)
tts=torch.tensor([30.0] * B).to(device)
tto=torch.tensor([20.0] * B).to(device)
psi=torch.tensor([10.0] * B).to(device)
alpha=torch.tensor([40.0] * B).to(device)

psoil=torch.tensor([0.5] * B).to(device)
toc = prosail(traits,N,LIDFa,LIDFb,lai,q,tts,tto,psi,alpha,psoil,batch_size=100000,use_prospectd=False,lidtype=2)

2. Atmospheric Correction with SMAC

Use the smac function to apply atmospheric correction using the SMAC model.

from torchrtm.atmosphere.smac import smac
from torchrtm.data_loader import load_smac_sensor

# Load sensor-specific coefficients
sensor_name = "Sentinel2A-MSI"
coefs = load_smac_sensor(sensor_name)

# Set atmospheric parameters
tts = torch.tensor([30.0])
tto = torch.tensor([20.0])
psi = torch.tensor([10.0])

# Apply SMAC atmospheric correction
ttetas, ttetav, tg, s, atm_ref, tdir_tts, tdif_tts, tdir_ttv, tdif_ttv = smac(tts, tto, psi, coefs)

3. Converting TOC to TOA Reflectance

Use the toc_to_toa function to convert Top-of-Canopy (TOC) reflectance to Top-of-Atmosphere (TOA) reflectance.

from torchrtm.atmosphere.smac import toc_to_toa

# Convert TOC to TOA reflectance
R_TOC, R_TOA = toc_to_toa(toc, sm_wl, ta_ss, ta_sd, ta_oo, ta_do, ra_so, ra_dd, T_g, return_toc=True)

Tests

This package includes a set of unit tests to ensure the correctness of all key components. To run the tests, use pytest:

pytest

Contributing

Contributions to TorchRTM are welcome! Please fork this repository, create a new branch, and submit a pull request. Make sure to include tests for any new features or bug fixes.


License

This project is licensed under the MIT License.


Acknowledgments

To be added.

Project details


Download files

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

Source Distribution

torchrtm-1.1.5.tar.gz (432.1 kB view details)

Uploaded Source

Built Distribution

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

torchrtm-1.1.5-py3-none-any.whl (432.9 kB view details)

Uploaded Python 3

File details

Details for the file torchrtm-1.1.5.tar.gz.

File metadata

  • Download URL: torchrtm-1.1.5.tar.gz
  • Upload date:
  • Size: 432.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for torchrtm-1.1.5.tar.gz
Algorithm Hash digest
SHA256 e1af9e2ffad8583c20a23f07bcec10059ba8c41f1f1e26b59246b2fee148b624
MD5 b06b72d03a742a56b6da69bb1a2db051
BLAKE2b-256 8311cdbe276b3840172d47cb4771c296195c4bfa1f7a1dcd1f713d14e88b42a9

See more details on using hashes here.

File details

Details for the file torchrtm-1.1.5-py3-none-any.whl.

File metadata

  • Download URL: torchrtm-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 432.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for torchrtm-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6c2664f1709bbc1f9309ea7b28c65503c2eddd7a7dd8d91995b5d337fc27d70b
MD5 de05f54219bb8bcf70295cb4159d5755
BLAKE2b-256 3274235cfa014eef0b2a24953abcd6643194ae06efa757b861342f0ad18e1cea

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