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
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:
- canvod-readers - GNSS data readers (RINEX/SBF)
- canvod-grids - Equal-area hemisphere grids
- canvod-vod - VOD calculations
- canvod-store - Icechunk storage
- canvod-viz - Visualization
- canvodpy - Umbrella package
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61fea7252a0d0b2d82b32a9b59a8e19013af37531c434efbd53e2ca3d2e7ff80
|
|
| MD5 |
c34cdfb4942416eebdc6782eaef9ad44
|
|
| BLAKE2b-256 |
659d3b6cc78ca2dee4680cab14c8220e7c8778c50e4b68e5968a2e8a7a6ef71c
|
Provenance
The following attestation bundles were made for canvod_auxiliary-0.2.3.tar.gz:
Publisher:
publish_pypi.yml on nfb2021/canvodpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
canvod_auxiliary-0.2.3.tar.gz -
Subject digest:
61fea7252a0d0b2d82b32a9b59a8e19013af37531c434efbd53e2ca3d2e7ff80 - Sigstore transparency entry: 1409469119
- Sigstore integration time:
-
Permalink:
nfb2021/canvodpy@a88fc381cc7865c65de1ff74218139ea7a3954f7 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/nfb2021
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_pypi.yml@a88fc381cc7865c65de1ff74218139ea7a3954f7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file canvod_auxiliary-0.2.3-py3-none-any.whl.
File metadata
- Download URL: canvod_auxiliary-0.2.3-py3-none-any.whl
- Upload date:
- Size: 70.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3ad13fd6dab8dc93038947ef952afec71fda494c00285d8fdd7d93662dd5525
|
|
| MD5 |
16b4bdc2925323683de1de129fd85ab7
|
|
| BLAKE2b-256 |
b0cbada34bfd0d3973fc3dfa221f5223a1d92516cfb4e6e11371849b2667ebc3
|
Provenance
The following attestation bundles were made for canvod_auxiliary-0.2.3-py3-none-any.whl:
Publisher:
publish_pypi.yml on nfb2021/canvodpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
canvod_auxiliary-0.2.3-py3-none-any.whl -
Subject digest:
b3ad13fd6dab8dc93038947ef952afec71fda494c00285d8fdd7d93662dd5525 - Sigstore transparency entry: 1409469395
- Sigstore integration time:
-
Permalink:
nfb2021/canvodpy@a88fc381cc7865c65de1ff74218139ea7a3954f7 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/nfb2021
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_pypi.yml@a88fc381cc7865c65de1ff74218139ea7a3954f7 -
Trigger Event:
push
-
Statement type: