CoolFace
Datasetpublic

alexroz/CarbonFluxBench

CarbonFluxBench: A Global Benchmark for Upscaling of Carbon Fluxes Using Zero-Shot Learning CarbonFluxBench comprises over 1.3 million daily observations from 573 eddy covariance flux tower sites globally (2000–2024). It provides stratified evaluation protocols that explicitly test generalization across unseen vegetation types and climate regimes, a harmonized set of remote sensing and meteorological features, and reproducible baselines ranging from tree-based methods to… See the full description on the dataset page: https://huggingface.co/datasets/alexroz/CarbonFluxBench.

sourceHugging Facemitupdated 3mo agoView on Hugging Face
1likes140downloads
Dataset Card

CarbonFluxBench: A Global Benchmark for Upscaling of Carbon Fluxes Using Zero-Shot Learning

CarbonFluxBench comprises over 1.3 million daily observations from 573 eddy covariance flux tower sites globally (2000–2024). It provides stratified evaluation protocols that explicitly test generalization across unseen vegetation types and climate regimes, a harmonized set of remote sensing and meteorological features, and reproducible baselines ranging from tree-based methods to domain-generalization architectures.

Paper: [CarbonFluxBench (KDD 2026)]() Code: github.com/alexxxroz/CarbonFluxBench

Dataset Summary

PropertyValue
Daily observations1,405,813
Flux tower sites573
Date range2000–2024
Source networksFLUXNET2015, AmeriFlux, ICOS, JapanFlux
IGBP vegetation classes16
Köppen climate classes5 (main) / 30 (detailed)

Data Files

FileDescriptionSize
target_fluxes.parquetCarbon flux targets + site metadata~43 MB
MOD09GA.parquetMODIS MOD09GA surface reflectance features~474 MB
ERA5.parquetERA5-Land meteorological features~5 GB
koppen_sites.jsonSite → Köppen climate classification mapping~11 KB
feature_sets.jsonERA5 feature set definitions (minimal/standard/full)~7 KB
FLUXNET2015_Metadata.csvFLUXNET2015 site metadata~18 KB
AmeriFlux_Metadata.tsvAmeriFlux site metadata~210 KB
ICOS2025_Metadata.csvICOS site metadata~3 KB

Prediction Targets

All targets are derived from eddy covariance measurements standardized under the ONEFlux methodology (units: gC m⁻² day⁻¹):

TargetColumnDescription
GPPGPP_NT_VUT_USTAR50Gross Primary Production
RECORECO_NT_VUT_USTAR50Ecosystem Respiration
NEENEE_VUT_USTAR50Net Ecosystem Exchange (NEE = −GPP + RECO)

Each observation includes a continuous quality control flag: NEE_VUT_USTAR50_QC (0–1).

Features

MODIS MOD09GA (12 features)

Seven surface reflectance bands (sur_refl_b01sur_refl_b07), sensor/solar geometry (SensorZenith, SensorAzimuth, SolarZenith, SolarAzimuth), and cloud fraction (clouds).

ERA5-Land (6 / 36 / 150 features)

Three configurable feature sets defined in feature_sets.json:

  • Minimal (6): temperature, precipitation, radiation, evaporation, LAI (high & low vegetation)
  • Standard (36): minimal + soil temperature/moisture (4 levels), wind, pressure, snow/albedo, radiation components, runoff
  • Full (150): standard + lake variables, additional flux components, min/max daily variants

Site Metadata (5 features)

Latitude, longitude, IGBP vegetation type (16 classes), Köppen climate class (5 main / 30 detailed).

Train-Test Splits

CarbonFluxBench provides two complementary site-holdout splits for zero-shot evaluation (random state = 56):

  • IGBP-stratified: partitioned by vegetation type. 80/20 for common classes (>10 sites), 50/50 for rare classes (≤10 sites).
  • Köppen-stratified: partitioned by climate zone. Uniform 80/20 split across 5 main classes.

All splits are at the site level — train and test sites are mutually exclusive.

Usage

Download

bash
pip install huggingface_hub
huggingface-cli download alexroz/CarbonFluxBench --repo-type dataset --local-dir data

With the CarbonFluxBench package

python
import carbonfluxbench

targets = ['GPP_NT_VUT_USTAR50', 'RECO_NT_VUT_USTAR50', 'NEE_VUT_USTAR50']
y = carbonfluxbench.load_targets(targets, include_qc=True)
y_train, y_test = carbonfluxbench.split_targets(y, split_type='Koppen')

modis = carbonfluxbench.load_modis()
era = carbonfluxbench.load_era('minimal')
train, val, test, x_scaler, y_scaler = carbonfluxbench.join_features(
    y_train, y_test, modis, era, scale=True
)

Direct loading with pandas

python
import pandas as pd

targets = pd.read_parquet("data/target_fluxes.parquet")
modis = pd.read_parquet("data/MOD09GA.parquet")
era5 = pd.read_parquet("data/ERA5.parquet")

Evaluation

All metrics are computed per-site, then reported as quantiles (25th, median, 75th percentile):

MetricDescription
Coefficient of determination
RMSERoot mean squared error (gC m⁻² day⁻¹)
nMAEMean absolute error normalized by site mean flux
RAERelative absolute error

Citation

<!-- ```bibtex @inproceedings{carbonfluxbench, title={CarbonFluxBench: A Global Benchmark for Upscaling of Carbon Fluxes Using Zero-Shot Learning}, author={Rozanov, Aleksei and Renganathan, Arvind and Zhang, Yimeng and Kumar, Vipin}, booktitle={Proceedings of the 31st ACM SIGKDD Conference on Knowledge Discovery and Data Mining}, year={2025} }

-->

## License

MIT