Skip to main content

Python ecosystem for GNSS-Transmissometry canopy VOD retrievals

Project description

canvodpy

Umbrella package for the canVODpy GNSS-Transmissometry ecosystem.

Part of the canVODpy ecosystem.

Overview

canvodpy is the unified entry point for deriving canopy Vegetation Optical Depth (VOD) from GNSS Signal-to-Noise Ratio (SNR) observations. It orchestrates the full pipeline from raw RINEX/SBF files through ephemeris augmentation, hemispheric gridding, and VOD retrieval via the Tau-Omega radiative transfer model.

Four API levels are available to match your workflow:

Level Style Entry point Use case
L1 Convenience process_date(), Site Quick exploration, notebooks
L2 Fluent FluentWorkflow().read().augment().grid().vod() Scripted pipelines
L3 Low-level Direct subpackage access Full control, custom integrations
L4 Functional read_rinex(), augment_with_ephemeris(), ... Airflow / orchestrators

Installation

# Installs canvodpy + all 11 sub-packages
uv pip install canvodpy

Quick Start

L1: Convenience (fastest path)

from canvodpy import Site

site = Site("Rosalia")
result = site.process_date("2025001")

L2: Fluent workflow

import canvodpy

result = (
    canvodpy.workflow("Rosalia")
    .read("2025001")
    .augment()
    .grid()
    .vod("canopy_01", "reference_01")
    .result()
)

L3: Direct subpackage access

from canvod.readers import Rnxv3Obs
from canvod.auxiliary import AuxDataAugmenter
from canvod.grids import create_hemigrid
from canvod.vod import TauOmegaZerothOrder
from canvod.store import GnssResearchSite

L4: Functional API (Airflow-compatible)

from canvodpy import read_rinex, augment_with_ephemeris, assign_grid_cells

ds = read_rinex("path/to/ROSA01TUW_R_20250010000_01D_01S_AA.rnx")
ds = augment_with_ephemeris(ds, agency="COD")
ds = assign_grid_cells(ds, grid_type="equal_area", resolution=2.0)

Included Packages

Installing canvodpy provides access to all 11 sub-packages:

Package Namespace Role
canvod-readers canvod.readers RINEX v2/v3 and SBF binary readers → xarray.Dataset
canvod-auxiliary canvod.auxiliary Ephemeris augmentation (SP3/CLK and broadcast)
canvod-grids canvod.grids Equal-area hemisphere grid operations
canvod-store canvod.store Icechunk/Zarr versioned storage layer
canvod-store-metadata canvod.store_metadata FAIR/DataCite/ACDD/STAC metadata lifecycle
canvod-vod canvod.vod Tau-Omega VOD retrieval algorithms
canvod-viz canvod.viz 2D polar and 3D interactive visualization
canvod-utils canvod.utils Pydantic configuration models, shared utilities
canvod-ops canvod.ops Composable preprocessing operations pipeline
canvod-virtualiconvname canvod.virtualiconvname Canonical GNSS-T filename parser and validator
canvod-audit canvod.audit Three-tier verification and regression suite

Platform Support

Platform Status Notes
Linux Full support Recommended for production
macOS Full support Fully tested
Windows WSL only Native not supported (reserved aux name)

Configuration

Site and processing configuration lives in YAML files (not committed):

just config-init      # create config/processing.yaml + sites.yaml + sids.yaml
just config-validate  # validate against Pydantic models

Optional NASA CDDIS access (for SP3/CLK ephemeris downloads):

# config/processing.yaml
credentials:
  nasa_earthdata_acc_mail: your.email@example.com

Without credentials, canvodpy uses ESA GSSC (no authentication required).

Documentation

Full documentation: nfb2021.github.io/canvodpy

Development

See the main repository for workspace development setup.

uv sync                    # install all workspace deps
just check                 # lint + format
just test                  # run all tests

License

Apache License 2.0

Project details


Download files

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

Source Distribution

canvodpy-0.3.0.tar.gz (94.5 kB view details)

Uploaded Source

Built Distribution

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

canvodpy-0.3.0-py3-none-any.whl (111.7 kB view details)

Uploaded Python 3

File details

Details for the file canvodpy-0.3.0.tar.gz.

File metadata

  • Download URL: canvodpy-0.3.0.tar.gz
  • Upload date:
  • Size: 94.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for canvodpy-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b1885f25201209ea2f5e800393f8f286cf4eb821de72822d3edfaa32cd52beeb
MD5 ea0f90db8bb871c7f61c117bc3e85bdb
BLAKE2b-256 4826378b4bd1603e46b71db01d66db9d6ce68276d9be78788efa9fa95092cb45

See more details on using hashes here.

Provenance

The following attestation bundles were made for canvodpy-0.3.0.tar.gz:

Publisher: publish_pypi.yml on nfb2021/canvodpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file canvodpy-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: canvodpy-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 111.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for canvodpy-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd623c31f8262b956db2ce43f8c36d8deb3986abe6ad82b3c9fcc72ee8c20a8e
MD5 7a1999dd7e81e6112b539a6ac52174a4
BLAKE2b-256 f212cf0d59a20f35a3320dc289729c6ab3da8acc38ea6f6e1e7c191de0c7fb6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for canvodpy-0.3.0-py3-none-any.whl:

Publisher: publish_pypi.yml on nfb2021/canvodpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page