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.3.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.3-py3-none-any.whl (70.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for canvod_auxiliary-0.2.3.tar.gz
Algorithm Hash digest
SHA256 61fea7252a0d0b2d82b32a9b59a8e19013af37531c434efbd53e2ca3d2e7ff80
MD5 c34cdfb4942416eebdc6782eaef9ad44
BLAKE2b-256 659d3b6cc78ca2dee4680cab14c8220e7c8778c50e4b68e5968a2e8a7a6ef71c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for canvod_auxiliary-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b3ad13fd6dab8dc93038947ef952afec71fda494c00285d8fdd7d93662dd5525
MD5 16b4bdc2925323683de1de129fd85ab7
BLAKE2b-256 b0cbada34bfd0d3973fc3dfa221f5223a1d92516cfb4e6e11371849b2667ebc3

See more details on using hashes here.

Provenance

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