canvod-auxiliary 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- canvod_auxiliary-0.2.0/PKG-INFO +270 -0
- canvod_auxiliary-0.2.0/README.md +238 -0
- canvod_auxiliary-0.2.0/pyproject.toml +85 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/.DS_Store +0 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/__init__.py +141 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/_internal/__init__.py +24 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/_internal/logger.py +31 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/_internal/units.py +19 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/augmentation.py +771 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/__init__.py +25 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/parser.py +153 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/reader.py +212 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/validator.py +101 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/container.py +57 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/core/__init__.py +10 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/core/base.py +342 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/core/downloader.py +387 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/__init__.py +24 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/parser.py +226 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/provider.py +409 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/reader.py +283 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/validator.py +88 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/interpolation/__init__.py +21 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/interpolation/interpolator.py +438 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/interpolation.py +378 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/matching/__init__.py +5 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/matching/dataset_matcher.py +251 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/pipeline.py +460 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/position/__init__.py +20 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/position/position.py +158 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/position/spherical_coords.py +276 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/preprocessing.py +546 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/.DS_Store +0 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/__init__.py +35 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/models.py +247 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/products.toml +773 -0
- canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/registry_config.py +256 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: canvod-auxiliary
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Auxiliary data augmentation for GNSS VOD analysis
|
|
5
|
+
Keywords: GNSS,VOD,auxiliary,SP3,CLK,ephemeris,clock
|
|
6
|
+
Author: Nicolas François Bader
|
|
7
|
+
Author-email: Nicolas François Bader <nicolas.bader@geo.tuwien.ac.at>
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Science/Research
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Dist: canvod-readers>=0.1.0
|
|
14
|
+
Requires-Dist: scipy>=1.15.0
|
|
15
|
+
Requires-Dist: numpy>=1.24.0
|
|
16
|
+
Requires-Dist: xarray>=2023.12.0
|
|
17
|
+
Requires-Dist: pydantic>=2.5.0
|
|
18
|
+
Requires-Dist: requests>=2.31.0
|
|
19
|
+
Requires-Dist: retrying>=1.3.4
|
|
20
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
21
|
+
Requires-Dist: lxml>=5.3.0
|
|
22
|
+
Requires-Dist: pint>=0.23
|
|
23
|
+
Requires-Dist: pymap3d>=3.0.0
|
|
24
|
+
Requires-Dist: tqdm>=4.67.1
|
|
25
|
+
Requires-Dist: hvplot>=0.12.2
|
|
26
|
+
Requires-Dist: plotly>=6.5.1
|
|
27
|
+
Requires-Dist: mcp>=1.25.0
|
|
28
|
+
Maintainer: Climate and Environmental Remote Sensing (CLIMERS)
|
|
29
|
+
Maintainer-email: Climate and Environmental Remote Sensing (CLIMERS) <nicolas.bader@geo.tuwien.ac.at>
|
|
30
|
+
Requires-Python: >=3.14
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
# canvod-auxiliary
|
|
34
|
+
|
|
35
|
+
**Auxiliary data augmentation for GNSS VOD analysis**
|
|
36
|
+
|
|
37
|
+
Part of the [canVODpy](https://github.com/nfb2021/canvodpy) ecosystem.
|
|
38
|
+
|
|
39
|
+
## Overview
|
|
40
|
+
|
|
41
|
+
`canvod-auxiliary` provides tools for downloading, parsing, and interpolating auxiliary GNSS data files including:
|
|
42
|
+
|
|
43
|
+
- **SP3 ephemerides** - Satellite orbit positions and velocities
|
|
44
|
+
- **CLK corrections** - Satellite clock corrections
|
|
45
|
+
- **Interpolation strategies** - Hermite and linear interpolation for temporal alignment
|
|
46
|
+
- **Augmentation framework** - Pluggable system for enriching RINEX datasets
|
|
47
|
+
|
|
48
|
+
## Features
|
|
49
|
+
|
|
50
|
+
**SP3 File Handling**
|
|
51
|
+
- Download from ESA or NASA CDDIS servers
|
|
52
|
+
- Parse SP3 format (positions + velocities)
|
|
53
|
+
- Cubic Hermite interpolation using velocities
|
|
54
|
+
- Fallback to linear interpolation
|
|
55
|
+
|
|
56
|
+
**Clock Corrections**
|
|
57
|
+
- CLK file download and parsing
|
|
58
|
+
- Jump-aware interpolation
|
|
59
|
+
- Segment-based processing
|
|
60
|
+
|
|
61
|
+
**Flexible Pipeline**
|
|
62
|
+
- Automatic file discovery and caching
|
|
63
|
+
- Thread-safe downloading
|
|
64
|
+
- Configurable FTP servers and agencies
|
|
65
|
+
|
|
66
|
+
**Augmentation System**
|
|
67
|
+
- Spherical coordinate calculation (φ, θ, r)
|
|
68
|
+
- Clock correction application
|
|
69
|
+
- Extensible via ABC pattern
|
|
70
|
+
|
|
71
|
+
## Installation
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# From PyPI (when published)
|
|
75
|
+
pip install canvod-auxiliary
|
|
76
|
+
|
|
77
|
+
# Development install
|
|
78
|
+
cd canvodpy/packages/canvod-auxiliary
|
|
79
|
+
uv pip install -e .
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Quick Start
|
|
83
|
+
|
|
84
|
+
### Basic SP3 Usage
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
from pathlib import Path
|
|
88
|
+
from canvod.auxiliary import Sp3File
|
|
89
|
+
|
|
90
|
+
# Load SP3 ephemeris file
|
|
91
|
+
sp3 = Sp3File.from_file(Path("COD0MGXFIN_20240150000_01D_05M_ORB.SP3"))
|
|
92
|
+
|
|
93
|
+
# Access data as xarray Dataset
|
|
94
|
+
data = sp3.data
|
|
95
|
+
print(data) # Coordinates: epoch, sid | Variables: X, Y, Z, Vx, Vy, Vz
|
|
96
|
+
|
|
97
|
+
# Get interpolation strategy
|
|
98
|
+
strategy = sp3.get_interpolation_strategy()
|
|
99
|
+
print(strategy.config) # Sp3Config(use_velocities=True)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Pipeline Usage
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
from canvod.auxiliary import AuxDataPipeline
|
|
106
|
+
from pathlib import Path
|
|
107
|
+
|
|
108
|
+
# Create pipeline
|
|
109
|
+
pipeline = AuxDataPipeline(
|
|
110
|
+
agency="COD",
|
|
111
|
+
product_type="final",
|
|
112
|
+
ftp_server="ftp://gssc.esa.int/gnss",
|
|
113
|
+
aux_file_path=Path("aux_data")
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# Get augmented data for specific date
|
|
117
|
+
augmented_ds = pipeline.get_or_create_aux_data(
|
|
118
|
+
yyyydoy="2024015",
|
|
119
|
+
target_epochs=my_rinex_epochs
|
|
120
|
+
)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Custom Interpolation
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
from canvod.auxiliary import Sp3Config, Sp3InterpolationStrategy
|
|
127
|
+
import numpy as np
|
|
128
|
+
|
|
129
|
+
# Configure interpolation
|
|
130
|
+
config = Sp3Config(use_velocities=True, fallback_method='cubic')
|
|
131
|
+
strategy = Sp3InterpolationStrategy(config=config)
|
|
132
|
+
|
|
133
|
+
# Interpolate to new epochs
|
|
134
|
+
target_epochs = np.array([...]) # Your target timestamps
|
|
135
|
+
interpolated = strategy.interpolate(sp3_dataset, target_epochs)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Documentation
|
|
139
|
+
|
|
140
|
+
[Centralized documentation](../../docs/packages/auxiliary/overview.md)
|
|
141
|
+
|
|
142
|
+
## Package Structure
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
canvod-auxiliary/
|
|
146
|
+
├── src/canvod/aux/
|
|
147
|
+
│ ├── __init__.py # Public API
|
|
148
|
+
│ ├── _internal/ # Internal utilities
|
|
149
|
+
│ │ ├── units.py # UREG unit registry
|
|
150
|
+
│ │ ├── date_utils.py # YYYYDOY, GPS week utils
|
|
151
|
+
│ │ └── logger.py # Logging utilities
|
|
152
|
+
│ ├── reader.py # AuxFile ABC
|
|
153
|
+
│ ├── container.py # FTP downloader
|
|
154
|
+
│ ├── interpolation.py # Interpolation strategies
|
|
155
|
+
│ ├── sp3.py # SP3 handler
|
|
156
|
+
│ ├── clk.py # CLK handler
|
|
157
|
+
│ ├── pipeline.py # AuxDataPipeline
|
|
158
|
+
│ └── augmentation.py # Augmentation framework
|
|
159
|
+
├── tests/ # 65 tests, 100% core coverage
|
|
160
|
+
├── docs/ # MyST documentation
|
|
161
|
+
└── pyproject.toml
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Development
|
|
165
|
+
|
|
166
|
+
### Setup
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Clone repository
|
|
170
|
+
git clone https://github.com/nfb2021/canvodpy.git
|
|
171
|
+
cd canvodpy/packages/canvod-auxiliary
|
|
172
|
+
|
|
173
|
+
# Install dependencies
|
|
174
|
+
uv sync
|
|
175
|
+
|
|
176
|
+
# Install pre-commit hooks
|
|
177
|
+
pre-commit install
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Commands
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
# Run tests
|
|
184
|
+
pytest
|
|
185
|
+
|
|
186
|
+
# With coverage
|
|
187
|
+
pytest --cov=canvod.auxiliary --cov-report=html
|
|
188
|
+
|
|
189
|
+
# Lint and format
|
|
190
|
+
ruff check .
|
|
191
|
+
ruff format .
|
|
192
|
+
|
|
193
|
+
# Type check
|
|
194
|
+
ty check src/
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Project Tasks (Just)
|
|
198
|
+
|
|
199
|
+
If you have [Just](https://github.com/casey/just) installed:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
just test # Run tests
|
|
203
|
+
just check # Lint + format check
|
|
204
|
+
just fix # Auto-fix linting issues
|
|
205
|
+
just docs # Build documentation
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Dependencies
|
|
209
|
+
|
|
210
|
+
**Core:**
|
|
211
|
+
- scipy ≥1.15.0
|
|
212
|
+
- numpy ≥1.24.0
|
|
213
|
+
- xarray ≥2023.12.0
|
|
214
|
+
- pydantic ≥2.5.0
|
|
215
|
+
- pint ≥0.23
|
|
216
|
+
|
|
217
|
+
**Network:**
|
|
218
|
+
- requests ≥2.31.0
|
|
219
|
+
|
|
220
|
+
- retrying ≥1.3.4
|
|
221
|
+
- beautifulsoup4 ≥4.12.0
|
|
222
|
+
- lxml ≥5.3.0
|
|
223
|
+
|
|
224
|
+
**Development:**
|
|
225
|
+
- pytest ≥8.0
|
|
226
|
+
- pytest-cov ≥5.0
|
|
227
|
+
- ruff ≥0.14
|
|
228
|
+
- ty ≥0.0.9
|
|
229
|
+
|
|
230
|
+
## Contributing
|
|
231
|
+
|
|
232
|
+
Contributions welcome! Please see the [main repository](https://github.com/nfb2021/canvodpy) for contribution guidelines.
|
|
233
|
+
|
|
234
|
+
## License
|
|
235
|
+
|
|
236
|
+
Apache License 2.0 - See LICENSE file
|
|
237
|
+
|
|
238
|
+
## Related Packages
|
|
239
|
+
|
|
240
|
+
Part of the canVODpy ecosystem:
|
|
241
|
+
|
|
242
|
+
- **[canvod-readers](../canvod-readers/)** - RINEX data readers
|
|
243
|
+
- **[canvod-grids](../canvod-grids/)** - Hemisphere grids
|
|
244
|
+
- **[canvod-vod](../canvod-vod/)** - VOD calculations
|
|
245
|
+
- **[canvod-store](../canvod-store/)** - Icechunk storage
|
|
246
|
+
- **[canvod-viz](../canvod-viz/)** - Visualization
|
|
247
|
+
- **[canvodpy](../../canvodpy/)** - Umbrella package
|
|
248
|
+
|
|
249
|
+
## Citation
|
|
250
|
+
|
|
251
|
+
If you use canvod-auxiliary in your research, please cite:
|
|
252
|
+
|
|
253
|
+
```bibtex
|
|
254
|
+
@software{canvodpy2026,
|
|
255
|
+
author = {Bader, Nicolas F.},
|
|
256
|
+
title = {canVODpy: GNSS Transmissometry Analysis},
|
|
257
|
+
year = {2026},
|
|
258
|
+
publisher = {TU Wien},
|
|
259
|
+
url = {https://github.com/nfb2021/canvodpy}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Author & Affiliation
|
|
264
|
+
|
|
265
|
+
**Nicolas François Bader**
|
|
266
|
+
Climate and Environmental Remote Sensing Research Unit (CLIMERS)
|
|
267
|
+
Department of Geodesy and Geoinformation
|
|
268
|
+
TU Wien (Vienna University of Technology)
|
|
269
|
+
Email: nicolas.bader@geo.tuwien.ac.at
|
|
270
|
+
[https://www.tuwien.at/en/mg/geo/climers](https://www.tuwien.at/en/mg/geo/climers)
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# canvod-auxiliary
|
|
2
|
+
|
|
3
|
+
**Auxiliary data augmentation for GNSS VOD analysis**
|
|
4
|
+
|
|
5
|
+
Part of the [canVODpy](https://github.com/nfb2021/canvodpy) ecosystem.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
`canvod-auxiliary` provides tools for downloading, parsing, and interpolating auxiliary GNSS data files including:
|
|
10
|
+
|
|
11
|
+
- **SP3 ephemerides** - Satellite orbit positions and velocities
|
|
12
|
+
- **CLK corrections** - Satellite clock corrections
|
|
13
|
+
- **Interpolation strategies** - Hermite and linear interpolation for temporal alignment
|
|
14
|
+
- **Augmentation framework** - Pluggable system for enriching RINEX datasets
|
|
15
|
+
|
|
16
|
+
## Features
|
|
17
|
+
|
|
18
|
+
**SP3 File Handling**
|
|
19
|
+
- Download from ESA or NASA CDDIS servers
|
|
20
|
+
- Parse SP3 format (positions + velocities)
|
|
21
|
+
- Cubic Hermite interpolation using velocities
|
|
22
|
+
- Fallback to linear interpolation
|
|
23
|
+
|
|
24
|
+
**Clock Corrections**
|
|
25
|
+
- CLK file download and parsing
|
|
26
|
+
- Jump-aware interpolation
|
|
27
|
+
- Segment-based processing
|
|
28
|
+
|
|
29
|
+
**Flexible Pipeline**
|
|
30
|
+
- Automatic file discovery and caching
|
|
31
|
+
- Thread-safe downloading
|
|
32
|
+
- Configurable FTP servers and agencies
|
|
33
|
+
|
|
34
|
+
**Augmentation System**
|
|
35
|
+
- Spherical coordinate calculation (φ, θ, r)
|
|
36
|
+
- Clock correction application
|
|
37
|
+
- Extensible via ABC pattern
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# From PyPI (when published)
|
|
43
|
+
pip install canvod-auxiliary
|
|
44
|
+
|
|
45
|
+
# Development install
|
|
46
|
+
cd canvodpy/packages/canvod-auxiliary
|
|
47
|
+
uv pip install -e .
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Quick Start
|
|
51
|
+
|
|
52
|
+
### Basic SP3 Usage
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
from pathlib import Path
|
|
56
|
+
from canvod.auxiliary import Sp3File
|
|
57
|
+
|
|
58
|
+
# Load SP3 ephemeris file
|
|
59
|
+
sp3 = Sp3File.from_file(Path("COD0MGXFIN_20240150000_01D_05M_ORB.SP3"))
|
|
60
|
+
|
|
61
|
+
# Access data as xarray Dataset
|
|
62
|
+
data = sp3.data
|
|
63
|
+
print(data) # Coordinates: epoch, sid | Variables: X, Y, Z, Vx, Vy, Vz
|
|
64
|
+
|
|
65
|
+
# Get interpolation strategy
|
|
66
|
+
strategy = sp3.get_interpolation_strategy()
|
|
67
|
+
print(strategy.config) # Sp3Config(use_velocities=True)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Pipeline Usage
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
from canvod.auxiliary import AuxDataPipeline
|
|
74
|
+
from pathlib import Path
|
|
75
|
+
|
|
76
|
+
# Create pipeline
|
|
77
|
+
pipeline = AuxDataPipeline(
|
|
78
|
+
agency="COD",
|
|
79
|
+
product_type="final",
|
|
80
|
+
ftp_server="ftp://gssc.esa.int/gnss",
|
|
81
|
+
aux_file_path=Path("aux_data")
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
# Get augmented data for specific date
|
|
85
|
+
augmented_ds = pipeline.get_or_create_aux_data(
|
|
86
|
+
yyyydoy="2024015",
|
|
87
|
+
target_epochs=my_rinex_epochs
|
|
88
|
+
)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Custom Interpolation
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from canvod.auxiliary import Sp3Config, Sp3InterpolationStrategy
|
|
95
|
+
import numpy as np
|
|
96
|
+
|
|
97
|
+
# Configure interpolation
|
|
98
|
+
config = Sp3Config(use_velocities=True, fallback_method='cubic')
|
|
99
|
+
strategy = Sp3InterpolationStrategy(config=config)
|
|
100
|
+
|
|
101
|
+
# Interpolate to new epochs
|
|
102
|
+
target_epochs = np.array([...]) # Your target timestamps
|
|
103
|
+
interpolated = strategy.interpolate(sp3_dataset, target_epochs)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Documentation
|
|
107
|
+
|
|
108
|
+
[Centralized documentation](../../docs/packages/auxiliary/overview.md)
|
|
109
|
+
|
|
110
|
+
## Package Structure
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
canvod-auxiliary/
|
|
114
|
+
├── src/canvod/aux/
|
|
115
|
+
│ ├── __init__.py # Public API
|
|
116
|
+
│ ├── _internal/ # Internal utilities
|
|
117
|
+
│ │ ├── units.py # UREG unit registry
|
|
118
|
+
│ │ ├── date_utils.py # YYYYDOY, GPS week utils
|
|
119
|
+
│ │ └── logger.py # Logging utilities
|
|
120
|
+
│ ├── reader.py # AuxFile ABC
|
|
121
|
+
│ ├── container.py # FTP downloader
|
|
122
|
+
│ ├── interpolation.py # Interpolation strategies
|
|
123
|
+
│ ├── sp3.py # SP3 handler
|
|
124
|
+
│ ├── clk.py # CLK handler
|
|
125
|
+
│ ├── pipeline.py # AuxDataPipeline
|
|
126
|
+
│ └── augmentation.py # Augmentation framework
|
|
127
|
+
├── tests/ # 65 tests, 100% core coverage
|
|
128
|
+
├── docs/ # MyST documentation
|
|
129
|
+
└── pyproject.toml
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Development
|
|
133
|
+
|
|
134
|
+
### Setup
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Clone repository
|
|
138
|
+
git clone https://github.com/nfb2021/canvodpy.git
|
|
139
|
+
cd canvodpy/packages/canvod-auxiliary
|
|
140
|
+
|
|
141
|
+
# Install dependencies
|
|
142
|
+
uv sync
|
|
143
|
+
|
|
144
|
+
# Install pre-commit hooks
|
|
145
|
+
pre-commit install
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Commands
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Run tests
|
|
152
|
+
pytest
|
|
153
|
+
|
|
154
|
+
# With coverage
|
|
155
|
+
pytest --cov=canvod.auxiliary --cov-report=html
|
|
156
|
+
|
|
157
|
+
# Lint and format
|
|
158
|
+
ruff check .
|
|
159
|
+
ruff format .
|
|
160
|
+
|
|
161
|
+
# Type check
|
|
162
|
+
ty check src/
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Project Tasks (Just)
|
|
166
|
+
|
|
167
|
+
If you have [Just](https://github.com/casey/just) installed:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
just test # Run tests
|
|
171
|
+
just check # Lint + format check
|
|
172
|
+
just fix # Auto-fix linting issues
|
|
173
|
+
just docs # Build documentation
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Dependencies
|
|
177
|
+
|
|
178
|
+
**Core:**
|
|
179
|
+
- scipy ≥1.15.0
|
|
180
|
+
- numpy ≥1.24.0
|
|
181
|
+
- xarray ≥2023.12.0
|
|
182
|
+
- pydantic ≥2.5.0
|
|
183
|
+
- pint ≥0.23
|
|
184
|
+
|
|
185
|
+
**Network:**
|
|
186
|
+
- requests ≥2.31.0
|
|
187
|
+
|
|
188
|
+
- retrying ≥1.3.4
|
|
189
|
+
- beautifulsoup4 ≥4.12.0
|
|
190
|
+
- lxml ≥5.3.0
|
|
191
|
+
|
|
192
|
+
**Development:**
|
|
193
|
+
- pytest ≥8.0
|
|
194
|
+
- pytest-cov ≥5.0
|
|
195
|
+
- ruff ≥0.14
|
|
196
|
+
- ty ≥0.0.9
|
|
197
|
+
|
|
198
|
+
## Contributing
|
|
199
|
+
|
|
200
|
+
Contributions welcome! Please see the [main repository](https://github.com/nfb2021/canvodpy) for contribution guidelines.
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
Apache License 2.0 - See LICENSE file
|
|
205
|
+
|
|
206
|
+
## Related Packages
|
|
207
|
+
|
|
208
|
+
Part of the canVODpy ecosystem:
|
|
209
|
+
|
|
210
|
+
- **[canvod-readers](../canvod-readers/)** - RINEX data readers
|
|
211
|
+
- **[canvod-grids](../canvod-grids/)** - Hemisphere grids
|
|
212
|
+
- **[canvod-vod](../canvod-vod/)** - VOD calculations
|
|
213
|
+
- **[canvod-store](../canvod-store/)** - Icechunk storage
|
|
214
|
+
- **[canvod-viz](../canvod-viz/)** - Visualization
|
|
215
|
+
- **[canvodpy](../../canvodpy/)** - Umbrella package
|
|
216
|
+
|
|
217
|
+
## Citation
|
|
218
|
+
|
|
219
|
+
If you use canvod-auxiliary in your research, please cite:
|
|
220
|
+
|
|
221
|
+
```bibtex
|
|
222
|
+
@software{canvodpy2026,
|
|
223
|
+
author = {Bader, Nicolas F.},
|
|
224
|
+
title = {canVODpy: GNSS Transmissometry Analysis},
|
|
225
|
+
year = {2026},
|
|
226
|
+
publisher = {TU Wien},
|
|
227
|
+
url = {https://github.com/nfb2021/canvodpy}
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Author & Affiliation
|
|
232
|
+
|
|
233
|
+
**Nicolas François Bader**
|
|
234
|
+
Climate and Environmental Remote Sensing Research Unit (CLIMERS)
|
|
235
|
+
Department of Geodesy and Geoinformation
|
|
236
|
+
TU Wien (Vienna University of Technology)
|
|
237
|
+
Email: nicolas.bader@geo.tuwien.ac.at
|
|
238
|
+
[https://www.tuwien.at/en/mg/geo/climers](https://www.tuwien.at/en/mg/geo/climers)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "canvod-auxiliary"
|
|
3
|
+
version = "0.2.0"
|
|
4
|
+
description = "Auxiliary data augmentation for GNSS VOD analysis"
|
|
5
|
+
authors = [
|
|
6
|
+
{name = "Nicolas François Bader", email = "nicolas.bader@geo.tuwien.ac.at"}
|
|
7
|
+
]
|
|
8
|
+
maintainers = [
|
|
9
|
+
{name = "Climate and Environmental Remote Sensing (CLIMERS)", email = "nicolas.bader@geo.tuwien.ac.at"}
|
|
10
|
+
]
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
requires-python = ">=3.14"
|
|
13
|
+
keywords = ["GNSS", "VOD", "auxiliary", "SP3", "CLK", "ephemeris", "clock"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Science/Research",
|
|
17
|
+
"License :: OSI Approved :: Apache Software License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.14",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
dependencies = [
|
|
23
|
+
"canvod-readers>=0.1.0",
|
|
24
|
+
"scipy>=1.15.0",
|
|
25
|
+
"numpy>=1.24.0",
|
|
26
|
+
"xarray>=2023.12.0",
|
|
27
|
+
"pydantic>=2.5.0",
|
|
28
|
+
"requests>=2.31.0",
|
|
29
|
+
|
|
30
|
+
"retrying>=1.3.4",
|
|
31
|
+
"beautifulsoup4>=4.12.0",
|
|
32
|
+
"lxml>=5.3.0",
|
|
33
|
+
"pint>=0.23",
|
|
34
|
+
"pymap3d>=3.0.0",
|
|
35
|
+
"tqdm>=4.67.1",
|
|
36
|
+
"hvplot>=0.12.2",
|
|
37
|
+
"plotly>=6.5.1",
|
|
38
|
+
"mcp>=1.25.0",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[dependency-groups]
|
|
42
|
+
dev = [
|
|
43
|
+
"pytest>=8.0",
|
|
44
|
+
"pytest-cov>=5.0",
|
|
45
|
+
"ruff>=0.14",
|
|
46
|
+
"ty>=0.0.9",
|
|
47
|
+
"marimo>=0.9.0",
|
|
48
|
+
"matplotlib>=3.8.0",
|
|
49
|
+
"polars>=1.0.0",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[tool.uv.sources]
|
|
53
|
+
canvod-readers = { workspace = true }
|
|
54
|
+
|
|
55
|
+
[build-system]
|
|
56
|
+
requires = ["uv_build>=0.9.17,<0.10.0"]
|
|
57
|
+
build-backend = "uv_build"
|
|
58
|
+
|
|
59
|
+
[tool.uv.build-backend]
|
|
60
|
+
module-name = "canvod.auxiliary"
|
|
61
|
+
|
|
62
|
+
[tool.ruff]
|
|
63
|
+
line-length = 88
|
|
64
|
+
target-version = "py314"
|
|
65
|
+
|
|
66
|
+
[tool.ruff.lint]
|
|
67
|
+
select = ["E", "F", "I", "N", "W", "UP"]
|
|
68
|
+
ignore = []
|
|
69
|
+
|
|
70
|
+
[tool.pytest.ini_options]
|
|
71
|
+
testpaths = ["tests"]
|
|
72
|
+
python_files = ["test_*.py"]
|
|
73
|
+
python_classes = ["Test*"]
|
|
74
|
+
python_functions = ["test_*"]
|
|
75
|
+
addopts = [
|
|
76
|
+
"-v",
|
|
77
|
+
"--strict-markers",
|
|
78
|
+
"--tb=short",
|
|
79
|
+
"--disable-warnings",
|
|
80
|
+
]
|
|
81
|
+
markers = [
|
|
82
|
+
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
83
|
+
"integration: marks tests as integration tests",
|
|
84
|
+
"network: marks tests that require network access",
|
|
85
|
+
]
|
|
Binary file
|