Skip to main content

canVODpy

Platform Tests Code Coverage PyPI Python Platforms DOI License fair-software.eu OpenSSF Best Practices CLIMERS @ TU Wien VODnet

An Open Python Ecosystem for GNSS-Transmissometry Canopy VOD Retrievals

canVODpy aims to be the central community-driven software suite for deriving canopy Vegetation Optical Depth (VOD) from the signal-to-noise ratio of the same GNSS signal, received at the same time by one receiver below the canopy and one with an unobstructed view of the sky.

Try it

Open in molab

The speedrun notebook goes through the whole pipeline on real test data, from receiver files to VOD, in your browser. All 21 notebooks are at canvodpy.eu/notebooks, each with its results and a link to open it in molab.

To run a notebook on your own machine instead, install uv and run:

uvx marimo edit --sandbox https://raw.githubusercontent.com/TUW-GEO/canvodpy-demo/main/03_convenience_speedrun.py

The notebooks download their test data on first use (about 350 MB).

Install

uv add canvodpy

canVODpy requires Python 3.14. It is tested on Linux, macOS (Apple silicon), and Windows.

Quick start

Create the settings file, check it, and process a week:

canvodpy config init --interactive     # asks for your site and folders
canvodpy config validate --site MySite # lists what a run would process
canvodpy run --site MySite --start 2025001 --end 2025007

Days are given as YYYYDDD (year and day of year). The same from Python:

from canvodpy import Site

site = Site("MySite")
with site.pipeline() as pipeline:
    for date_key, datasets in pipeline.process_range("2025001", "2025007"):
        site.vod.compute_day(datasets, "canopy_01_vs_reference_01")

Start here walks through the first run step by step.

Packages

canvodpy installs all of them. Each can also be installed on its own.

Package What it does
canvodpy The command line, the Site API and the processing pipeline
canvod-readers Readers for RINEX, SBF, and NMEA files
canvod-auxiliary Orbit and clock products, satellite angles
canvod-store Icechunk stores for observations and VOD
canvod-store-metadata Store metadata (DataCite, ACDD, STAC) and the STAC catalog
canvod-vod VOD retrieval
canvod-grids Hemispheric grids
canvod-viz 2D and 3D plots
canvod-ops Preprocessing: temporal aggregation, grid cell assignment
canvod-config The settings file and its checks
canvod-preflight The canVOD file name convention
canvod-utils Shared utilities

Optional extensions, such as canvod-filemap for file names that don't follow the convention, are in canvodpy-extensions.

Development

Development needs uv and just.

git clone --recurse-submodules https://github.com/TUW-GEO/canvodpy.git
cd canvodpy
just check-dev-tools   # checks that the tools are installed
uv sync
just hooks             # installs the pre-commit hooks
just test
just check             # lint, format, type check

just --list shows every command. The contributor setup has the details.

Documentation

All documentation is at canvodpy.eu:

Contributing

Contributions of all kinds are welcome. See CONTRIBUTING.md. First-time contributors: add yourself to CONTRIBUTORS.md in your pull request.

How to cite

If you use canVODpy, please cite it with its DOI, 10.5281/zenodo.18496233. This DOI always leads to the newest version, and Zenodo also lists a DOI for each version. CITATION.cff has the full citation, and GitHub shows it in the "Cite this repository" menu.

License

Licensed under the Apache License 2.0.

This software is provided "as is" without warranty of any kind. See the Impressum for the full legal notice and AI disclosure.

Affiliation

Climate and Environmental Remote Sensing Research Unit (CLIMERS) Department of Geodesy and Geoinformation, TU Wien

Contact: support@canvodpy.eu

Metadata

Release files for canvodpy 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for canvodpy 1.0.0
File Size Uploaded Provenance
canvodpy-1.0.0.tar.gz 290.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for canvodpy 1.0.0
File Interpreter ABI Platform
canvodpy-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 608.8 kB

Release files / canvodpy-1.0.0.tar.gz

Download URL canvodpy-1.0.0.tar.gz
Size 290.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ad54d2c2406523767d7a6506840ff7ff97ede78290ecf8cdcac6598f61e9b97b
BLAKE2b-256 checksum
How to use checksums
cdf4c1f62a361c27dd756a6dbfc935c0eca8cdc07f7d678e15c009626d6f915f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / canvodpy-1.0.0-py3-none-any.whl

Download URL canvodpy-1.0.0-py3-none-any.whl
Size 318.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2081c7cfd9428b992e0b8b9da0424b3e6c13945068d719b16c921bd6e7df9f23
BLAKE2b-256 checksum
How to use checksums
2324b4a1cbe20cd971da7a02cf2c5dee1ae9741e9907d6a8d3481824db81df9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for canvodpy 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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