Skip to main content

Auxiliary data augmentation for GNSS VOD analysis

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

# From PyPI (when published)
pip install canvod-auxiliary

# Development install
cd canvodpy/packages/canvod-auxiliary
uv pip install -e .

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

Centralized 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.0.tar.gz (54.0 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.0-py3-none-any.whl (71.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: canvod_auxiliary-0.2.0.tar.gz
  • Upload date:
  • Size: 54.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for canvod_auxiliary-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3c47940be56e74bb0a8405e7a7d50a23329a5ee1624f7f253e86647d885aac07
MD5 9b0d62625e47617c1efbb8e3e5f3be49
BLAKE2b-256 ba0ff78fc2b8a00638244ca3b1aa2183df8f33d47d3fa52197d591dbc9b778bd

See more details on using hashes here.

File details

Details for the file canvod_auxiliary-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for canvod_auxiliary-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1e43f5289baa11f436fb15337d263e2cbcbc7465c7d6a74262bae73f88a1f92
MD5 d0430085ca35a2c406499a57779d1d3a
BLAKE2b-256 fb7144587656d7f493ad781d4ca02f580f769c1e2144ee7988a6ebfb20ca821d

See more details on using hashes here.

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