Skip to main content

Ephemeris and auxiliary data handling for GNSS-Transmissometry

Project description

canvod-auxiliary

Auxiliary data augmentation for GNSS VOD analysis

Part of the canVODpy ecosystem.

Overview

canvod-auxiliary provides tools for downloading, parsing, and interpolating auxiliary GNSS data files including:

  • SP3 ephemerides - Satellite orbit positions and velocities
  • CLK corrections - Satellite clock corrections
  • Interpolation strategies - Hermite and linear interpolation for temporal alignment
  • Augmentation framework - Pluggable system for enriching RINEX datasets

Features

SP3 File Handling

  • Download from ESA or NASA CDDIS servers
  • Parse SP3 format (positions + velocities)
  • Cubic Hermite interpolation using velocities
  • Fallback to linear interpolation

Clock Corrections

  • CLK file download and parsing
  • Jump-aware interpolation
  • Segment-based processing

Flexible Pipeline

  • Automatic file discovery and caching
  • Thread-safe downloading
  • Configurable FTP servers and agencies

Augmentation System

  • Spherical coordinate calculation (φ, θ, r)
  • Clock correction application
  • Extensible via ABC pattern

Installation

uv pip install canvod-auxiliary

Quick Start

Basic SP3 Usage

from pathlib import Path
from canvod.auxiliary import Sp3File

# Load SP3 ephemeris file
sp3 = Sp3File.from_file(Path("COD0MGXFIN_20240150000_01D_05M_ORB.SP3"))

# Access data as xarray Dataset
data = sp3.data
print(data)  # Coordinates: epoch, sid | Variables: X, Y, Z, Vx, Vy, Vz

# Get interpolation strategy
strategy = sp3.get_interpolation_strategy()
print(strategy.config)  # Sp3Config(use_velocities=True)

Pipeline Usage

from canvod.auxiliary import AuxDataPipeline
from pathlib import Path

# Create pipeline
pipeline = AuxDataPipeline(
    agency="COD",
    product_type="final",
    ftp_server="ftp://gssc.esa.int/gnss",
    aux_file_path=Path("aux_data")
)

# Get augmented data for specific date
augmented_ds = pipeline.get_or_create_aux_data(
    yyyydoy="2024015",
    target_epochs=my_rinex_epochs
)

Custom Interpolation

from canvod.auxiliary import Sp3Config, Sp3InterpolationStrategy
import numpy as np

# Configure interpolation
config = Sp3Config(use_velocities=True, fallback_method='cubic')
strategy = Sp3InterpolationStrategy(config=config)

# Interpolate to new epochs
target_epochs = np.array([...])  # Your target timestamps
interpolated = strategy.interpolate(sp3_dataset, target_epochs)

Documentation

Full documentation

Package Structure

canvod-auxiliary/
├── src/canvod/aux/
│   ├── __init__.py              # Public API
│   ├── _internal/               # Internal utilities
│   │   ├── units.py             # UREG unit registry
│   │   ├── date_utils.py        # YYYYDOY, GPS week utils
│   │   └── logger.py            # Logging utilities
│   ├── reader.py                # AuxFile ABC
│   ├── container.py             # FTP downloader
│   ├── interpolation.py         # Interpolation strategies
│   ├── sp3.py                   # SP3 handler
│   ├── clk.py                   # CLK handler
│   ├── pipeline.py              # AuxDataPipeline
│   └── augmentation.py          # Augmentation framework
├── tests/                       # 65 tests, 100% core coverage
├── docs/                        # MyST documentation
└── pyproject.toml

Development

Setup

# Clone repository
git clone https://github.com/nfb2021/canvodpy.git
cd canvodpy/packages/canvod-auxiliary

# Install dependencies
uv sync

# Install pre-commit hooks
pre-commit install

Commands

# Run tests
pytest

# With coverage
pytest --cov=canvod.auxiliary --cov-report=html

# Lint and format
ruff check .
ruff format .

# Type check
ty check src/

Project Tasks (Just)

If you have Just installed:

just test          # Run tests
just check         # Lint + format check
just fix           # Auto-fix linting issues
just docs          # Build documentation

Dependencies

Core:

  • scipy ≥1.15.0
  • numpy ≥1.24.0
  • xarray ≥2023.12.0
  • pydantic ≥2.5.0
  • pint ≥0.23

Network:

  • requests ≥2.31.0

  • retrying ≥1.3.4

  • beautifulsoup4 ≥4.12.0

  • lxml ≥5.3.0

Development:

  • pytest ≥8.0
  • pytest-cov ≥5.0
  • ruff ≥0.14
  • ty ≥0.0.9

Contributing

Contributions welcome! Please see the main repository for contribution guidelines.

License

Apache License 2.0 - See LICENSE file

Related Packages

Part of the canVODpy ecosystem:

Citation

If you use canvod-auxiliary in your research, please cite:

@software{canvodpy2026,
  author = {Bader, Nicolas F.},
  title = {canVODpy: GNSS Transmissometry Analysis},
  year = {2026},
  publisher = {TU Wien},
  url = {https://github.com/nfb2021/canvodpy}
}

Author & Affiliation

Nicolas François Bader Climate and Environmental Remote Sensing Research Unit (CLIMERS) Department of Geodesy and Geoinformation TU Wien (Vienna University of Technology) Email: nicolas.bader@geo.tuwien.ac.at https://www.tuwien.at/en/mg/geo/climers

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

canvod_auxiliary-0.2.2.tar.gz (53.2 kB view details)

Uploaded Source

Built Distribution

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

canvod_auxiliary-0.2.2-py3-none-any.whl (70.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for canvod_auxiliary-0.2.2.tar.gz
Algorithm Hash digest
SHA256 049810364efee8b1a8fcb631833a22a5a38c32849b2eecf828245db3c9fac52d
MD5 4cee60fbeaf4f24b6d68089d39931ce3
BLAKE2b-256 1a98ecc9614234babd2ff43ab0d3e16a72ceb3a76582b2e79faa2f2f7319dfaa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for canvod_auxiliary-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 80f4a9312392cf01c6e6ec5c9ec70cf53848c69922093c60dc974a05a56657e8
MD5 6e9936733df972a50a537c1b7f8049f0
BLAKE2b-256 9bb01ea88908ecf071f970919802cfc5c08390702442a5b831c3a9e19bee4f5f

See more details on using hashes here.

Provenance

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