Skip to main content

fluxatlas

PyPI - Version Documentation Tests License

Interactive explorer for FLUXNET-standardized ecosystem data.

fluxatlas turns the half-hourly record of an eddy covariance site into one browsable HTML page: every month of the record on one grid, opening down to the season, the year, the month and the single day. Fluxes, meteorology and their quality flags.

The output is a single file. It carries its own scripts and styles, so it opens from a memory stick with no server and no network.

v0.1.0, the first release with any content. The library and the command line work for meteorology and for the turbulent fluxes. There is no desktop GUI yet. Until the release reaches PyPI, install from source.

Documentation: fluxatlas.readthedocs.io

Install

git clone https://github.com/holukas/fluxatlas.git
cd fluxatlas
uv sync

Python 3.12 or 3.13.

Command line

fluxatlas record.csv --list

--list reports which variables can be read from the file, and which cannot. It reads the header only, so it answers immediately even on a file of several hundred megabytes.

fluxatlas record.csv -o atlas.html --vars TA,PREC,NEE

Where the columns are named to some other convention, which is most real files, name them:

fluxatlas record.parquet -o atlas.html --var TA=air_temp --qc TA=TA_ISFILLED

--qc names the quality flag beside a column (0 measured, above 0 modelled) and --factor converts a column onto the canonical unit. Both forms combine in one call.

Seasons default to the four meteorological ones. Name the first and the rest follow: --seasons DJFMAM gives two half-years, --seasons none drops the seasonal scale.

python -m fluxatlas is the same entry point. Every option is listed in the command-line reference.

Use as a library

import fluxatlas as fa

fa.available("record.csv")                                    # what the file can supply
fa.build_atlas("record.csv", "atlas.html", variables=["TA"])  # TA and nothing else

atlas = fa.Atlas("record.csv", ["TA", "PREC", "NEE"], site="CH-LAE")
atlas.metrics        # what the grid can be coloured by, for this selection
atlas.badges         # badge key -> how many months earned it
atlas.write("atlas.html")

A file whose columns follow no convention the registry knows is read by naming them:

fa.Atlas("local_record.parquet", {
    "TA":   {"column": "air_temp", "qc": "TA_FLAG"},
    "PREC": {"column": "rain_mm"},
    "VPD":  {"column": "vpd_pa", "factor": 0.001},   # into kPa
})

The file has to be half-hourly, carry a timestamp, and use -9999 or empty for missing. Files that are not FLUXNET-standardized works through a full conversion.

Variables

Meteorology TA, PREC, SW_IN, VPD, RH, SWC
Carbon NEE, GPP, RECO
Energy LE, H

The carbon fluxes are carried as totals in g C m⁻², so a tile reads as the carbon the site gained or lost. NEE is signed by the micrometeorological convention, negative for uptake, and the page writes the direction out beside every figure. Every flux figure carries an uncertainty interval, with the components it covers named beside it.

What the page shows

The grid draws at four resolutions: months, seasons, years, or every day of the record. Each tile carries badges for what was remarkable about that span, and opens to a panel of that span day by day, against the normal, and ranked among the others.

Each variable also has a page of its own: the slope of each calendar month taken separately, every year of the record, the shape of the year, and how much of it was measured.

The variables you pass in are the whole build. A metric whose variable is absent is not offered, and a badge whose inputs are missing is withheld with the reason attached. An atlas of one variable is a smaller page, not a broken one.

Statistics use the gap-filled values, and the page says what they rest on. Normals, ranks, anomalies, badges and trends are computed wherever the product covers a span. How much of it was measured never withholds a figure; it warns, and marks the span on the grid.

Examples

uv run python examples/build_lae_meteo_atlas.py --open

Builds two atlases from the twenty-one-year CH-LAE extract in examples/data/: one of six variables and one of air temperature alone.

uv run python examples/build_oe2_flux_atlas.py --input YOUR_FULLSET.csv --open

The opposite case: a FLUXNET FULLSET record, whose columns are found without being told anything, carrying the fluxes.

Tests

uv run pytest

Most tests run on synthetic data, so the suite passes on a fresh checkout.

Author

Lukas Hörtnagl, Grassland Sciences group, ETH Zürich (holukas@ethz.ch) · github.com/holukas/fluxatlas

The page generalizes the calendar explorer built for the CH-LAE flux product, which was tied to one site.

License

GPL-3.0

Download files

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

Source Distribution

fluxatlas-0.1.0.tar.gz (9.8 MB view details)

Uploaded Source

Built Distribution

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

fluxatlas-0.1.0-py3-none-any.whl (165.8 kB view details)

Uploaded Python 3

File details

Details for the file fluxatlas-0.1.0.tar.gz.

File metadata

  • Download URL: fluxatlas-0.1.0.tar.gz
  • Upload date:
  • Size: 9.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fluxatlas-0.1.0.tar.gz
Algorithm Hash digest
SHA256 37179809b61c6429d8ba5c170bc1a54185a2885059eda2cd1364b6aef3d73abc
MD5 f7ec1a39d66c631babfad09c98989fa2
BLAKE2b-256 d48edd9af5162836cec2bba2412c3c88e9acc27e3dda2052710f37baf2f5dc6c

See more details on using hashes here.

File details

Details for the file fluxatlas-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fluxatlas-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 165.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fluxatlas-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 53322d47cd8be62c001151ffcb165771acd829b1dccfa25f5c3eb0669737b459
MD5 d5f2db7d7ade46d8f09391592c8047d8
BLAKE2b-256 625e37379d55a903506c3058ec57a49d696b351226cda7391e7a076ae6bc1770

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.0 This release

2 files

0.0.1

2 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