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.2.2.tar.gz (93.6 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.2.2-py3-none-any.whl (110.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for canvodpy-0.2.2.tar.gz
Algorithm Hash digest
SHA256 73c0957d1a911997b0fbdcb5a880a829f03929fd347c075fdd8741c63dea3059
MD5 1b534799abb59080f4e327f0f4591628
BLAKE2b-256 975380d818fdc996537d7c8b7ba659d63ef879154f058bffa13867056d3f3292

See more details on using hashes here.

Provenance

The following attestation bundles were made for canvodpy-0.2.2.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.2.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for canvodpy-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f660874d2584b496c1efbbc10729d01c407d6df79b373e8ca2408bfe2ff515be
MD5 f86f019be917bc638a8baac445f275f5
BLAKE2b-256 f26f8ee9a253cacf427c38c3cce4ae52b3a882e8d629f40167ac4e2cdd23da76

See more details on using hashes here.

Provenance

The following attestation bundles were made for canvodpy-0.2.2-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