pygnss 2.1.2__cp314-cp314t-macosx_11_0_arm64.whl
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.
- pygnss/__init__.py +1 -0
- pygnss/_c_ext/src/constants.c +36 -0
- pygnss/_c_ext/src/hatanaka.c +94 -0
- pygnss/_c_ext/src/helpers.c +17 -0
- pygnss/_c_ext/src/klobuchar.c +313 -0
- pygnss/_c_ext/src/mtable_init.c +50 -0
- pygnss/_c_ext.cpython-314t-darwin.so +0 -0
- pygnss/cl.py +148 -0
- pygnss/constants.py +4 -0
- pygnss/decorator.py +47 -0
- pygnss/file.py +36 -0
- pygnss/filter/__init__.py +77 -0
- pygnss/filter/ekf.py +80 -0
- pygnss/filter/models.py +74 -0
- pygnss/filter/particle.py +484 -0
- pygnss/filter/ukf.py +322 -0
- pygnss/geodetic.py +1177 -0
- pygnss/gnss/__init__.py +0 -0
- pygnss/gnss/edit.py +66 -0
- pygnss/gnss/observables.py +43 -0
- pygnss/gnss/residuals.py +43 -0
- pygnss/gnss/types.py +359 -0
- pygnss/hatanaka.py +70 -0
- pygnss/ionex.py +410 -0
- pygnss/iono/__init__.py +47 -0
- pygnss/iono/chapman.py +35 -0
- pygnss/iono/gim.py +131 -0
- pygnss/logger.py +70 -0
- pygnss/nequick.py +57 -0
- pygnss/orbit/__init__.py +0 -0
- pygnss/orbit/kepler.py +63 -0
- pygnss/orbit/tle.py +186 -0
- pygnss/parsers/rtklib/stats.py +166 -0
- pygnss/rinex.py +2161 -0
- pygnss/sinex.py +121 -0
- pygnss/stats.py +75 -0
- pygnss/tensorial.py +50 -0
- pygnss/time.py +350 -0
- pygnss-2.1.2.dist-info/METADATA +129 -0
- pygnss-2.1.2.dist-info/RECORD +44 -0
- pygnss-2.1.2.dist-info/WHEEL +6 -0
- pygnss-2.1.2.dist-info/entry_points.txt +8 -0
- pygnss-2.1.2.dist-info/licenses/LICENSE +21 -0
- pygnss-2.1.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pygnss
|
|
3
|
+
Version: 2.1.2
|
|
4
|
+
Summary: Package with utilities and tools for GNSS data processing
|
|
5
|
+
Author-email: Miquel Garcia-Fernandez <miquel@mgfernan.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/mgfernan/pygnss
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: nequick>=0.2.0
|
|
12
|
+
Requires-Dist: numpy
|
|
13
|
+
Requires-Dist: pandas>=2.2
|
|
14
|
+
Requires-Dist: pyarrow>=18.0.0
|
|
15
|
+
Provides-Extra: test
|
|
16
|
+
Requires-Dist: pytest>=8.3.4; extra == "test"
|
|
17
|
+
Requires-Dist: pytest-env>=1.1.5; extra == "test"
|
|
18
|
+
Requires-Dist: pytest-mocha>=0.4.0; extra == "test"
|
|
19
|
+
Requires-Dist: flake8>=7.0.0; extra == "test"
|
|
20
|
+
Requires-Dist: pnt-datasets>=0.2.2; extra == "test"
|
|
21
|
+
Requires-Dist: package-name>=0.1; extra == "test"
|
|
22
|
+
Provides-Extra: release
|
|
23
|
+
Requires-Dist: python-semantic-release>=9.4.0; extra == "release"
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
# pygnss — GNSS utilities and tools
|
|
27
|
+
|
|
28
|
+
pygnss is a lightweight collection of utilities for GNSS data processing:
|
|
29
|
+
|
|
30
|
+
- parsers for Hatanaka (CRX) and RINEX formats,
|
|
31
|
+
- IONEX (GIM) utilities and exporters,
|
|
32
|
+
- small geodetic and ionospheric helpers, and
|
|
33
|
+
- a few filtering tools (particle filter, EKF/UKF helpers) used in demos and tests.
|
|
34
|
+
|
|
35
|
+
This README gives a short overview for users and contributors: installation,
|
|
36
|
+
development (building the compiled extension), available CLI scripts and
|
|
37
|
+
examples of the most used APIs.
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
Stable release from PyPI (no compiled extension required for pure-Python
|
|
42
|
+
features):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install pygnss
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Developer / editable install (builds the C extension declared in
|
|
49
|
+
`pyproject.toml`). This is the recommended setup when working on the
|
|
50
|
+
repository locally because some features (Hatanaka/CRX parsing) rely on a
|
|
51
|
+
compiled extension for speed.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# create and activate a venv
|
|
55
|
+
python -m venv .venv
|
|
56
|
+
source .venv/bin/activate
|
|
57
|
+
# install the package and test/dev extras
|
|
58
|
+
python -m pip install --upgrade pip
|
|
59
|
+
python -m pip install -e '.[test]'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Notes on the compiled extension
|
|
63
|
+
|
|
64
|
+
- The extension module `pygnss._c_ext` is built from the sources listed in
|
|
65
|
+
`pyproject.toml` (under [[tool.setuptools.ext-modules]]). Building the
|
|
66
|
+
package with `pip install .` or `python -m build` will compile it. On CI
|
|
67
|
+
the workflow provided in `.github/workflows/python-package.yml` creates a
|
|
68
|
+
virtualenv and runs `pip install -e '.[test]'` to ensure the entry points
|
|
69
|
+
and compiled modules are available for tests.
|
|
70
|
+
|
|
71
|
+
## CLI entry points (installed as console scripts)
|
|
72
|
+
|
|
73
|
+
The package declares several console scripts (see `pyproject.toml`):
|
|
74
|
+
|
|
75
|
+
- `ionex_diff` — compare IONEX files or compare an IONEX to NeQuick output
|
|
76
|
+
- `compute_cdf` — utility to compute CDF from data (used by examples)
|
|
77
|
+
- `rinex_from_file`, `rinex_to_parquet`, `merge_rinex_nav` — helpers for
|
|
78
|
+
RINEX conversions
|
|
79
|
+
|
|
80
|
+
After installing the package into a venv these commands are available on
|
|
81
|
+
`$PATH` (from `.venv/bin`). Tests rely on the entry points being discoverable
|
|
82
|
+
via PATH in CI, so the workflow prepends `.venv/bin` to PATH before running
|
|
83
|
+
tests.
|
|
84
|
+
|
|
85
|
+
## Quick usage examples
|
|
86
|
+
|
|
87
|
+
1. Hatanaka (CRX) -> pandas DataFrame
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
from pygnss import hatanaka
|
|
91
|
+
|
|
92
|
+
df = hatanaka.to_dataframe('station.crx.gz', station='MYST')
|
|
93
|
+
print(df.head())
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
If the compiled extension is not available the function raises an ImportError
|
|
97
|
+
with instructions to build/install the package (see "Developer" section).
|
|
98
|
+
|
|
99
|
+
1. Read and diff IONEX maps (programmatic)
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from pygnss import ionex
|
|
103
|
+
from pygnss.iono import gim
|
|
104
|
+
|
|
105
|
+
# load an ionex and collect VTEC maps
|
|
106
|
+
handler = gim.GimHandlerArray()
|
|
107
|
+
ionex.load('sample.ionex', gim_handler=handler)
|
|
108
|
+
print(len(handler.vtec_gims))
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Running tests locally
|
|
112
|
+
|
|
113
|
+
With the venv active and the test extras installed the canonical way to run
|
|
114
|
+
the test-suite is:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# inside the project root with .venv activated
|
|
118
|
+
python -m pytest -v
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
If tests call console scripts (such as `ionex_diff`) the venv `bin` directory
|
|
122
|
+
must be on `PATH` so subprocesses can find the entry points. The CI workflow
|
|
123
|
+
prepares the environment accordingly.
|
|
124
|
+
|
|
125
|
+
## Where to look next
|
|
126
|
+
|
|
127
|
+
- `pygnss/hatanaka.py` — Hatanaka/CRX parsing wrapper (uses compiled helper)
|
|
128
|
+
- `pygnss/ionex.py` — IONEX loader/writer and CLI glue
|
|
129
|
+
- `pygnss/filter/` — particle filter, EKF/UKF helpers and demos
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
pygnss/hatanaka.py,sha256=JHRYWanz0ZtJ14WzNUq88tbhG8ksSRTXzzoIstm78Pw,2928
|
|
2
|
+
pygnss/time.py,sha256=YdMNs2xA43LrSgEOgB7jpEq0dCWv89fUBF5syDLjbu0,11178
|
|
3
|
+
pygnss/ionex.py,sha256=WcY6PVwjzATjqyC0Htc5Jh_cv2a7yz4TZIcD723TpsY,14325
|
|
4
|
+
pygnss/nequick.py,sha256=tSsUw3FoRWS-TBKKVb0_c90DFz_2jUTkUvNPsGQOLA8,1722
|
|
5
|
+
pygnss/sinex.py,sha256=nErOmGCFFmGSnmWGNTJhaj3yZ6IIB8GgtW5WPypJc6U,3057
|
|
6
|
+
pygnss/tensorial.py,sha256=aA0-0WK2MXhDUg0_8HMbECOt9cXmp3EnKFQXjdYMBXA,1598
|
|
7
|
+
pygnss/decorator.py,sha256=qB-0jl2GTEHJdvmDruNll5X3RrdySssv94u9Hok5-lA,1438
|
|
8
|
+
pygnss/constants.py,sha256=1hF6K92X6E6Ofo0rAuCBCgrwln9jxio26RV2a6vyURk,133
|
|
9
|
+
pygnss/__init__.py,sha256=UiuBcRXPtXxPUBDdp0ZDvWl0U9Db1kMNfT3oAfhxqLg,22
|
|
10
|
+
pygnss/cl.py,sha256=ISmd2RjikUMmj3nLPN0VSjvQLG5rLizp2X2ajeBkoDE,4509
|
|
11
|
+
pygnss/logger.py,sha256=4kvcTWXPoiG-MlyP6B330l4Fu7MfCuDjuIlIiLA8f1Y,1479
|
|
12
|
+
pygnss/geodetic.py,sha256=RCXD4_RlzQR2DxNIFGS4iODwZZcnxklMsCw9mohYcBg,33948
|
|
13
|
+
pygnss/_c_ext.cpython-314t-darwin.so,sha256=RqydGDiLmoan0EgC9asFaShTDiG7Avi7DEYAbCffLT8,73920
|
|
14
|
+
pygnss/file.py,sha256=kkMBWjoTPkxJD1UgH0mXJT2fxnhU8u7_l2Ph5Xz2-hY,933
|
|
15
|
+
pygnss/rinex.py,sha256=7pUmnMe8KYMxGEeqYvQI1m8kvoTvLPbKXfxhcwxYfH8,68792
|
|
16
|
+
pygnss/stats.py,sha256=GYZfcyDvbM9xamWIyVlqyN5-DPJzTLJrybRrcNV6Z6o,1912
|
|
17
|
+
pygnss/orbit/kepler.py,sha256=QORTgg5yBtsQXxLWSzoZ1pmh-CwPiZlFdIYqhQhv1a0,1745
|
|
18
|
+
pygnss/orbit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
pygnss/orbit/tle.py,sha256=6CIEielPgui3DXNv46XxOGlig31ROIwjH42xLGaeE5M,5905
|
|
20
|
+
pygnss/parsers/rtklib/stats.py,sha256=YV6yadxMeQMQYZvsUCaSf4ZTpK8Bbv3f2xgu0l4PekA,5449
|
|
21
|
+
pygnss/_c_ext/src/constants.c,sha256=-DCFy5gQR_UHmsW94f0f5yu6aVen4OUb5FdYBrlOoss,1809
|
|
22
|
+
pygnss/_c_ext/src/mtable_init.c,sha256=n8jU39bA6sjVHG7U0OUIDTGMpddMytJf7TIjdQHjMA4,1315
|
|
23
|
+
pygnss/_c_ext/src/hatanaka.c,sha256=zqqH4JrC09qbFzLUiHunNGA-ut9HxEQ8Fmy5QR5XeGs,2511
|
|
24
|
+
pygnss/_c_ext/src/klobuchar.c,sha256=YqH1i8SbIR424nAiCHozV4fsSf22365EA5gav3v982o,9956
|
|
25
|
+
pygnss/_c_ext/src/helpers.c,sha256=gINr73ktRgox_S7fYdFR58lLqAUACRpJfog4M5BW1-Q,364
|
|
26
|
+
pygnss/gnss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
+
pygnss/gnss/edit.py,sha256=T1r0WbJmt8tLJpG_IIsy4Atej6cy0IStBaSGxw0S5ho,1884
|
|
28
|
+
pygnss/gnss/types.py,sha256=lmL15KRckRiTwVkYvGzF4c1BrojnQlegrYCXSz1hGaI,10377
|
|
29
|
+
pygnss/gnss/residuals.py,sha256=8qKGNOYkrqxHGOSjIfH21K82PAqEh2068kf78j5usL8,1244
|
|
30
|
+
pygnss/gnss/observables.py,sha256=0x0NLkTjxf8cO9F_f_Q1b-1hEeoNjWB2x-53ecUEv0M,1656
|
|
31
|
+
pygnss/iono/gim.py,sha256=khKzClxLf46mVO6BCDk9u9DgS_50d-sbWEyoUQu7Jng,3543
|
|
32
|
+
pygnss/iono/chapman.py,sha256=eyq2RaCkLpQJRzuHt_DSNaLjto1w_W1PdT_ys8A3Bjc,1388
|
|
33
|
+
pygnss/iono/__init__.py,sha256=xuewp1KSVsRQhyXyCCZxIrhNiIc3DluW-YqUZqXhhFs,1538
|
|
34
|
+
pygnss/filter/ukf.py,sha256=ps2itLh8QqNpZ7Y_JeKRs2AqU7zEUvJq4IrfV5bVPEI,10672
|
|
35
|
+
pygnss/filter/models.py,sha256=Cy9rE1JwNJDB5VhZzFhMHuuwSOIO-PR4JKDgQF9CVOw,2339
|
|
36
|
+
pygnss/filter/__init__.py,sha256=vEF_51C-aROGDNpDVGGu9BUPWxCo-P6H9QpFSjqf4c0,2249
|
|
37
|
+
pygnss/filter/ekf.py,sha256=FnI5I98dmmR0ZmSVxXEHuWAMG-dIVzN1j-1sOHYbnJE,2043
|
|
38
|
+
pygnss/filter/particle.py,sha256=HZr_FD9zA0cpX0Gk5bM3icWBW91vOl8vXeKfhTxrMbA,18075
|
|
39
|
+
pygnss-2.1.2.dist-info/RECORD,,
|
|
40
|
+
pygnss-2.1.2.dist-info/WHEEL,sha256=26nyvDx4qlf6NyRSh1NSNrXJDCQeX0hnJ7EH1bB1egM,137
|
|
41
|
+
pygnss-2.1.2.dist-info/entry_points.txt,sha256=awWUCMfX3uMIAPPZqZfSUuw7Kd7defip8L7GtthKqgg,292
|
|
42
|
+
pygnss-2.1.2.dist-info/top_level.txt,sha256=oZRSR-qOv98VW2PRRMGCVNCJmewcJjyJYmxzxfeimtg,7
|
|
43
|
+
pygnss-2.1.2.dist-info/METADATA,sha256=F6V_LtnUEWP2iSR8XVznXpg3Ip0T0y3Usp8DNTAjPzo,4262
|
|
44
|
+
pygnss-2.1.2.dist-info/licenses/LICENSE,sha256=Wwany6RAAZ9vVHjFLA9KBJ0HE77d52s2NOUA1CPAEug,1067
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
cl = pygnss.cl:entry_point
|
|
3
|
+
compute_cdf = pygnss.stats:cdf_cli
|
|
4
|
+
ionex_diff = pygnss.ionex:cli
|
|
5
|
+
merge_rinex_nav = pygnss.rinex:merge_nav_cli
|
|
6
|
+
rinex_from_file = pygnss.rinex:rinex_from_file
|
|
7
|
+
rinex_to_parquet = pygnss.rinex:rinex_to_parquet
|
|
8
|
+
tensorial = pygnss.tensorial:entry_point
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) [2022] [Rokubun]
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pygnss
|