TorchRTM: A PyTorch-based Radiative Transfer Modeling Toolkit
TorchRTM is a GPU-accelerated, modular, and research-ready radiative transfer modeling (RTM) library built on top of PyTorch. It implements the full soil–leaf–canopy–atmosphere modelling chain (PROSPECT, 4SAIL, and SMAC) as native PyTorch tensor operations, enabling seamless integration with deep learning workflows.
This repository accompanies the paper:
TorchRTM: A high-performance vegetation RTM framework for deep learning integration
Installation
pip install torchrtm
Requires Python ≥ 3.9 and PyTorch ≥ 2.0.
Quick Start
Leaf Reflectance (PROSPECT)
import torch
from torchrtm.leaf.prospect import prospect5b, prospectd
# PROSPECT-5B: traits = [Cab, Car, Cbrown, Cw, Cm]
traits = torch.tensor([[40.0, 8.0, 0.0, 0.01, 0.009]])
N = torch.tensor([1.5]) # leaf structure parameter
rho, tau = prospect5b(traits, N)
# rho: leaf reflectance (1, 2101), tau: transmittance (1, 2101)
# PROSPECT-D: traits = [Cab, Car, Canth, Cbrown, Cw, Cm]
traits_d = torch.tensor([[40.0, 8.0, 0.0, 0.0, 0.01, 0.009]])
rho_d, tau_d = prospectd(traits_d, N)
Canopy Reflectance (PROSAIL)
from torchrtm.models.models import prosail
n = 100 # batch size
traits = torch.tensor([[40.0, 8.0, 0.0, 0.01, 0.009]] * n)
N = torch.tensor([1.5] * n)
LIDFa = torch.tensor([-0.35] * n)
LIDFb = torch.tensor([-0.15] * n)
lai = torch.tensor([3.0] * n)
q = torch.tensor([0.01] * n)
tts = torch.tensor([30.0] * n) # solar zenith
tto = torch.tensor([10.0] * n) # view zenith
psi = torch.tensor([0.0] * n) # relative azimuth
alpha = torch.tensor([40.0] * n)
psoil = torch.tensor([1.0] * n)
result = prosail(traits, N, LIDFa, LIDFb, lai, q,
tts, tto, psi, alpha, psoil,
batch_size=n, prospect_type='prospect5b')
# result shape: (7, 2101, n) — 7 reflectance components
Atmospheric Correction (SMAC)
from torchrtm.atmosphere.smac import smac
from torchrtm.data_loader import load_smac_sensor
coefs, wl = load_smac_sensor("Sentinel2A-MSI")
tts = torch.tensor([30.0])
tto = torch.tensor([10.0])
psi = torch.tensor([0.0])
Ta_s, Ta_o, T_g, ra_dd, ra_so, ta_ss, ta_sd, ta_oo, ta_do = smac(tts, tto, psi, coefs)
LUT-based Retrieval
from torchrtm.retrival.fastLUT import Torchlut_pred
# xb: LUT spectra (N, D), y: LUT parameters (N, P), xq: query spectra (M, D)
preds = Torchlut_pred(xb, xq, y, k=5, device="cpu", agg="weighted")
Available Sensors (SMAC)
Sentinel2A-MSI, Sentinel2B-MSI, Sentinel3A-OLCI, Sentinel3B-OLCI, LANDSAT4-TM, LANDSAT5-TM, LANDSAT7-ETM, LANDSAT8-OLI, TerraAqua-MODIS
Testing
Install test dependencies and run:
pip install pytest
python -m pytest tests/test_torchrtm.py -v
The test suite covers data loaders, PROSPECT (5B/D/PRO), PROSAIL, SMAC, LUT retrieval, Inverse Net, math utilities, and full integration pipelines.
Supplementary Code
-
Translation_Fidelity/— Evaluates consistency of TorchRTM outputs against other RTM implementations.
Citation
If you use TorchRTM in your research, please cite:
Peng Sun, Peter van Bodegom, Marco Visser. TorchRTM: A high-performance vegetation RTM package for deep learning integration. Authorea. 15 January 2026.
DOI: https://doi.org/10.22541/au.176849838.80131044/v1
License
MIT
Release files for torchrtm 1.5.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| torchrtm-1.5.8.tar.gz | 89.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| torchrtm-1.5.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 178.7 MB
Release files / torchrtm-1.5.8.tar.gz
| Download URL | torchrtm-1.5.8.tar.gz |
|---|---|
| Size | 89.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
589ae5cddb2609edde442d44a7fe8505fce187c2266febb43e064bdc12afb6db
|
|
BLAKE2b-256 checksum How to use checksums |
edf74200b29749cbc8ead1414faffdc363d9cd6b4103b0e964215ed91908a321
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.18
|
Release files / torchrtm-1.5.8-py3-none-any.whl
| Download URL | torchrtm-1.5.8-py3-none-any.whl |
|---|---|
| Size | 89.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4681458412cc5916334d83ffa65ff9b6ced9bc37465da60cb3bbbe1329c2f3f0
|
|
BLAKE2b-256 checksum How to use checksums |
f6eebd7c51e1e91124f32a493f1067b89f3394a27e5b171d917962e754632e53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.18
|