Skip to main content

TorchRTM: A PyTorch-based Radiative Transfer Modeling Toolkit

PyPI version

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

  • Start_Tutorial/ — Reproduces the examples in the paper. Open In Colab

  • 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)

Source distribution for torchrtm 1.5.8
File Size Uploaded
torchrtm-1.5.8.tar.gz 89.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for torchrtm 1.5.8
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.5.8 This release

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.9

2 release files

1.4.8

2 release files

1.4.7

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.9

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

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