gnss-lib-py

Modular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates

https://github.com/stanford-navlab/gnss_lib_py

Science Score: 75.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    1 of 9 committers (11.1%) from academic institutions
  • Institutional organization owner
    Organization stanford-navlab has institutional domain (navlab.stanford.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.7%) to scientific vocabulary

Keywords

android ekf gnss navigation position pseudorange python residual wls
Last synced: 6 months ago · JSON representation ·

Repository

Modular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates

Basic Info
  • Host: GitHub
  • Owner: Stanford-NavLab
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 44.3 MB
Statistics
  • Stars: 212
  • Watchers: 10
  • Forks: 47
  • Open Issues: 3
  • Releases: 17
Topics
android ekf gnss navigation position pseudorange python residual wls
Created over 4 years ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

README.md

build codecov Documentation Status Open In Colab

gnsslibpy

gnss_lib_py is a modular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates. It also provides an intuitive and modular framework which allows users to quickly prototype, implement, and visualize GNSS algorithms. gnss_lib_py is modular in the sense that multiple types of algorithms or datasets can be easily exchanged for each other. It is extendable in facilitating user-specific extensions of existing implementations.

Architecture of gnss-lib-py library

gnss_lib_py contains parsers for common file types used for storing GNSS measurements, benchmark algorithms for processing measurements into state estimates and visualization tools for measurements and state estimates. The modularity of gnss_lib_py is made possibly by the unifying NavData class, with accompanying standard nomenclature, which can be found in the reference page. The standard nomenclature ensures cross compatibility between different datasets and algorithms.

NavData combines the readability of pandas.DataFrame with numpy.ndarray allowing for easy and fast access of numbers or strings. We also provide functionality to add, remove and modify numeric and string data consistently along with commonly needed supporting functionality.

Documentation

Full documentation is available on our readthedocs website.

Code Organization

gnss_lib_py is organized as:

```bash

├── data/ # Location for data files └── unittest/ # Data files for unit testing ├── dev/ # Code users do not wish to commit ├── docs/ # Documentation files ├── gnsslibpy/ # gnsslibpy source files ├── algorithms/ # Navigation algorithms ├── navdata/ # NavData data structure ├── parsers/ # Data parsers ├── utils/ # GNSS and common utilities ├── visualizations/ # plotting functions └── _init_.py # Initialize gnsslibpy ├── notebooks/ # Interactive Jupyter notebooks ├── tutorials/ # Notebooks with tutorial code ├── results/ # Location for result images/files ├── tests/ # Tests for source files ├── algorithms/ # Tests for files in algorithms ├── navdata/ # Tests for files in navdata ├── parsers/ # Tests for files in parsers ├── utils/ # Tests for files in utils ├── visualizations/ # Tests for files in visualizations └── conftest.py # Common methods for tests ├── CONTRIBUTORS.md # List of contributors ├── builddocs.sh # Bash script to build docs ├── poetry.lock # Poetry specific Lock file ├── pyproject.toml # List of package dependencies └── requirements.txt # List of packages for pip install ``` In the directory organization above:

  • The algorithms directory contains algorithms that work by passing in a NavData class. Currently, the following algorithms are implemented in the algorithms:

    • Weighted Least Squares
    • Extended Kalman Filter
    • Calculating pseudorange residuals
    • Fault detection and exclusion
  • The navdata directory defines the NavData class, its methods, and functions that operate on NavData instances, like sort, concat, and others.

  • The data parsers in the parsers directory allow for either loading GNSS data into gnss_lib_py's unifying NavData class or parsing precise ephemerides data. Currently, the following datasets and types are supported:

  • The utils directory contains utilities used to handle GNSS measurements, time conversions, coordinate transformations, visualizations, calculating multi-GNSS satellite PVT information, satellite simulation, file operations, etc.

  • The visualizations directory contains methods for plotting quantities in NavData. It includes methods to plot metrics, positions on maps, and skyplots of satellites visible from the receiver position.

Installation

gnss_lib_py is available through pip installation with:

pip install gnss-lib-py

For directions on how to install an editable or developer installation of gnss_lib_py on Linux, MacOS, and Windows, please see the install instructions.

Tutorials

We have a range of tutorials on how to easily use this project. They can all be found in the tutorials section.

Reference

References on the package contents, explanation of the benefits of our custom NavData class, and function-level documentation can all be found in the reference section.

Contributing

If you have a bug report or would like to contribute to our repository, please follow the guide on the contributing page.

Troubleshooting

Answers to common questions can be found in the troubleshooting section.

Attribution

This project is a product of the Stanford NAV Lab and currently maintained by Daniel Neamati (dneamati [at] stanford [dot] edu) and Derek Knowles. If using this project in your own work please cite the following:

```

@inproceedings{knowlesglp2024, title = {gnsslibpy: Analyzing GNSS data with Python}, author = {Knowles, Derek and Kanhere, Ashwin Vivek and Neamati, Daniel and Gao, Grace}, journal = {SoftwareX}, volume = {27}, year = {2024}, publisher = {Elsevier}, url = {https://github.com/Stanford-NavLab/gnsslibpy}, doi = {10.1016/j.softx.2024.101811}, } ```

Additionally, we would like to thank all contributors to this project.

Owner

  • Name: Stanford NAV Lab
  • Login: Stanford-NavLab
  • Kind: organization

Citation (CITATION.bib)

@inproceedings{knowlesmodular2022,
   title = {A Modular and Extendable GNSS Python Library},
   author={Knowles, Derek and Kanhere, Ashwin V and Bhamidipati, Sriramya and Gao, Grace},
   booktitle={Proceedings of the 35th International Technical Meeting of the Satellite Division of The Institute of Navigation (ION GNSS+ 2022)},
   institution = {Stanford University},
   year = {2022 [Online]},
   url = {https://github.com/Stanford-NavLab/gnss_lib_py},
}

GitHub Events

Total
  • Create event: 4
  • Release event: 1
  • Issues event: 9
  • Watch event: 63
  • Delete event: 4
  • Issue comment event: 16
  • Push event: 8
  • Pull request review comment event: 4
  • Pull request event: 14
  • Pull request review event: 10
  • Fork event: 15
Last Year
  • Create event: 4
  • Release event: 1
  • Issues event: 9
  • Watch event: 63
  • Delete event: 4
  • Issue comment event: 16
  • Push event: 8
  • Pull request review comment event: 4
  • Pull request event: 14
  • Pull request review event: 10
  • Fork event: 15

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,188
  • Total Committers: 9
  • Avg Commits per committer: 132.0
  • Development Distribution Score (DDS): 0.408
Past Year
  • Commits: 26
  • Committers: 3
  • Avg Commits per committer: 8.667
  • Development Distribution Score (DDS): 0.154
Top Committers
Name Email Commits
betaBison k****k@g****m 703
kanhereashwin k****n 398
Daniel Neamati d****i@g****m 31
Sriramya Bhamidipati s****b@g****m 23
Bradley b****o@s****u 21
Dalton Vega d****7@g****m 6
shivam9 s****7@g****m 4
Shubh Gupta s****6@g****m 1
Klarer Sandro s****r@n****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 36
  • Total pull requests: 148
  • Average time to close issues: 3 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 16
  • Total pull request authors: 12
  • Average comments per issue: 1.5
  • Average comments per pull request: 0.76
  • Merged pull requests: 134
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 5
  • Pull requests: 15
  • Average time to close issues: about 18 hours
  • Average time to close pull requests: 21 days
  • Issue authors: 5
  • Pull request authors: 4
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.87
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • betaBison (9)
  • kanhereashwin (9)
  • mikehb (3)
  • shubhg1996 (2)
  • MrBourriz (2)
  • ctwillson (1)
  • cntaylor (1)
  • danineamati (1)
  • plutonheaven (1)
  • honglei (1)
  • jake9wi (1)
  • roberttully95 (1)
  • james-can (1)
  • calvinarraylabs (1)
  • dolgae03 (1)
Pull Request Authors
  • betaBison (94)
  • kanhereashwin (35)
  • danineamati (6)
  • sriramyab (2)
  • sandroklarer-pingpong (2)
  • inuex35 (2)
  • bcollico (2)
  • ssoni9 (1)
  • dependabot[bot] (1)
  • zachwitz (1)
  • shubhg1996 (1)
  • daltonv297 (1)
Top Labels
Issue Labels
bug (16) enhancement (8) improvement (3) good first issue (2) documentation (2) help wanted (2) dependencies (1) question (1)
Pull Request Labels
dependencies (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 593 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 18
  • Total maintainers: 3
pypi.org: gnss-lib-py

Modular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates

  • Versions: 18
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 593 Last month
Rankings
Dependent packages count: 6.6%
Forks count: 9.5%
Stargazers count: 10.5%
Average: 15.4%
Downloads: 19.5%
Dependent repos count: 30.6%
Last synced: 6 months ago

Dependencies

docs/source/requirements.txt pypi
  • alabaster ==0.7.12
  • appnope ==0.1.3
  • argon2-cffi ==21.3.0
  • argon2-cffi-bindings ==21.2.0
  • astroid ==2.11.7
  • asttokens ==2.0.7
  • atomicwrites ==1.4.1
  • attrs ==22.1.0
  • babel ==2.10.3
  • backcall ==0.2.0
  • beautifulsoup4 ==4.11.1
  • bleach ==5.0.1
  • certifi ==2022.6.15
  • cffi ==1.15.1
  • charset-normalizer ==2.1.0
  • colorama ==0.4.5
  • coverage ==6.4.3
  • cycler ==0.11.0
  • datetime ==4.5
  • debugpy ==1.6.2
  • decorator ==5.1.1
  • defusedxml ==0.7.1
  • dill ==0.3.5.1
  • docutils ==0.16
  • entrypoints ==0.4
  • executing ==0.9.1
  • fastjsonschema ==2.16.1
  • fonttools ==4.34.4
  • georinex ==1.16.1
  • hatanaka ==2.8.0
  • idna ==3.3
  • imagesize ==1.4.1
  • importlib-metadata ==4.12.0
  • importlib-resources ==5.9.0
  • iniconfig ==1.1.1
  • ipykernel ==6.15.1
  • ipython ==8.4.0
  • ipython-genutils ==0.2.0
  • ipywidgets ==7.7.1
  • isort ==5.10.1
  • jedi ==0.18.1
  • jinja2 ==3.1.2
  • jsonschema ==4.9.1
  • jupyter ==1.0.0
  • jupyter-client ==7.3.4
  • jupyter-console ==6.4.4
  • jupyter-core ==4.11.1
  • jupyterlab-pygments ==0.2.2
  • jupyterlab-widgets ==1.1.1
  • kiwisolver ==1.4.4
  • lazy-object-proxy ==1.7.1
  • markupsafe ==2.1.1
  • matplotlib ==3.5.2
  • matplotlib-inline ==0.1.3
  • mccabe ==0.7.0
  • mistune ==0.8.4
  • nbclient ==0.6.6
  • nbconvert ==6.5.0
  • nbformat ==5.4.0
  • nbsphinx ==0.8.9
  • nbsphinx-link ==1.3.0
  • ncompress ==1.0.0
  • nest-asyncio ==1.5.5
  • notebook ==6.4.12
  • numpy ==1.23.1
  • packaging ==21.3
  • pandas ==1.4.3
  • pandocfilters ==1.5.0
  • parso ==0.8.3
  • pexpect ==4.8.0
  • pickleshare ==0.7.5
  • pillow ==9.2.0
  • pkgutil-resolve-name ==1.3.10
  • platformdirs ==2.5.2
  • plotly ==5.9.0
  • pluggy ==1.0.0
  • pockets ==0.9.1
  • prometheus-client ==0.14.1
  • prompt-toolkit ==3.0.30
  • psutil ==5.9.1
  • ptyprocess ==0.7.0
  • pure-eval ==0.2.2
  • py ==1.11.0
  • pycparser ==2.21
  • pygments ==2.12.0
  • pylint ==2.14.5
  • pylint-exit ==1.2.0
  • pynmea2 ==1.18.0
  • pyparsing ==3.0.9
  • pyproj ==3.3.1
  • pyrsistent ==0.18.1
  • pytest ==6.2.5
  • pytest-cov ==3.0.0
  • pytest-lazy-fixture ==0.6.3
  • python-dateutil ==2.8.2
  • pytz ==2022.1
  • pywin32 ==304
  • pywinpty ==2.0.7
  • pyzmq ==23.2.0
  • qtconsole ==5.3.1
  • qtpy ==2.1.0
  • reindent ==3.5.1
  • requests ==2.28.1
  • scipy ==1.9.0
  • send2trash ==1.8.0
  • setuptools-scm ==7.0.5
  • six ==1.16.0
  • snowballstemmer ==2.2.0
  • soupsieve ==2.3.2.post1
  • sphinx ==4.5.0
  • sphinx-rtd-theme ==0.5.2
  • sphinxcontrib-applehelp ==1.0.2
  • sphinxcontrib-devhelp ==1.0.2
  • sphinxcontrib-htmlhelp ==2.0.0
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-napoleon ==0.7
  • sphinxcontrib-qthelp ==1.0.3
  • sphinxcontrib-serializinghtml ==1.1.5
  • stack-data ==0.3.0
  • tenacity ==8.0.1
  • terminado ==0.15.0
  • tinycss2 ==1.1.1
  • toml ==0.10.2
  • tomli ==2.0.1
  • tomlkit ==0.11.2
  • tornado ==6.2
  • traitlets ==5.3.0
  • typing-extensions ==4.3.0
  • unlzw3 ==0.2.1
  • urllib3 ==1.26.11
  • wcwidth ==0.2.5
  • webencodings ==0.5.1
  • widgetsnbextension ==3.6.1
  • wrapt ==1.14.1
  • xarray ==2022.6.0
  • zipp ==3.8.1
  • zope.interface ==5.4.0
poetry.lock pypi
  • 137 dependencies
pyproject.toml pypi
  • Sphinx ^4.1.1 develop
  • ipykernel ^6.0.3 develop
  • jupyter ^1.0.0 develop
  • nbsphinx ^0.8.9 develop
  • nbsphinx-link ^1.3.0 develop
  • notebook ^6.4.2 develop
  • pylint-exit ^1.2.0 develop
  • pyproj ^3.1.0 develop
  • sphinx-rtd-theme ^0.5.2 develop
  • sphinxcontrib-napoleon ^0.7 develop
  • DateTime ^4.3
  • georinex ^1.15.0
  • jupyter ^1.0.0
  • matplotlib ^3.5.1
  • numpy ^1.21.0
  • pandas ^1.3.0
  • plotly ^5.8.0
  • pylint ^2.11.1
  • pynmea2 ^1.18.0
  • pytest ^6.2.5
  • pytest-cov ^3.0.0
  • pytest-lazy-fixture ^0.6.3
  • python >=3.8, < 3.11
  • reindent ^3.5.1
  • scipy ^1.7.3
  • unlzw3 ^0.2.1
requirements.txt pypi
  • appnope ==0.1.3
  • argon2-cffi ==21.3.0
  • argon2-cffi-bindings ==21.2.0
  • astroid ==2.11.7
  • asttokens ==2.0.7
  • atomicwrites ==1.4.1
  • attrs ==22.1.0
  • backcall ==0.2.0
  • beautifulsoup4 ==4.11.1
  • bleach ==5.0.1
  • cffi ==1.15.1
  • colorama ==0.4.5
  • coverage ==6.4.3
  • cycler ==0.11.0
  • datetime ==4.5
  • debugpy ==1.6.2
  • decorator ==5.1.1
  • defusedxml ==0.7.1
  • dill ==0.3.5.1
  • entrypoints ==0.4
  • executing ==0.9.1
  • fastjsonschema ==2.16.1
  • fonttools ==4.34.4
  • georinex ==1.16.1
  • hatanaka ==2.8.0
  • importlib-resources ==5.9.0
  • iniconfig ==1.1.1
  • ipykernel ==6.15.1
  • ipython ==8.4.0
  • ipython-genutils ==0.2.0
  • ipywidgets ==7.7.1
  • isort ==5.10.1
  • jedi ==0.18.1
  • jinja2 ==3.1.2
  • jsonschema ==4.9.1
  • jupyter ==1.0.0
  • jupyter-client ==7.3.4
  • jupyter-console ==6.4.4
  • jupyter-core ==4.11.1
  • jupyterlab-pygments ==0.2.2
  • jupyterlab-widgets ==1.1.1
  • kiwisolver ==1.4.4
  • lazy-object-proxy ==1.7.1
  • markupsafe ==2.1.1
  • matplotlib ==3.5.2
  • matplotlib-inline ==0.1.3
  • mccabe ==0.7.0
  • mistune ==0.8.4
  • nbclient ==0.6.6
  • nbconvert ==6.5.0
  • nbformat ==5.4.0
  • ncompress ==1.0.0
  • nest-asyncio ==1.5.5
  • notebook ==6.4.12
  • numpy ==1.23.1
  • packaging ==21.3
  • pandas ==1.4.3
  • pandocfilters ==1.5.0
  • parso ==0.8.3
  • pexpect ==4.8.0
  • pickleshare ==0.7.5
  • pillow ==9.2.0
  • pkgutil-resolve-name ==1.3.10
  • platformdirs ==2.5.2
  • plotly ==5.9.0
  • pluggy ==1.0.0
  • prometheus-client ==0.14.1
  • prompt-toolkit ==3.0.30
  • psutil ==5.9.1
  • ptyprocess ==0.7.0
  • pure-eval ==0.2.2
  • py ==1.11.0
  • pycparser ==2.21
  • pygments ==2.12.0
  • pylint ==2.14.5
  • pynmea2 ==1.18.0
  • pyparsing ==3.0.9
  • pyrsistent ==0.18.1
  • pytest ==6.2.5
  • pytest-cov ==3.0.0
  • pytest-lazy-fixture ==0.6.3
  • python-dateutil ==2.8.2
  • pytz ==2022.1
  • pywin32 ==304
  • pywinpty ==2.0.7
  • pyzmq ==23.2.0
  • qtconsole ==5.3.1
  • qtpy ==2.1.0
  • reindent ==3.5.1
  • scipy ==1.9.0
  • send2trash ==1.8.0
  • setuptools-scm ==7.0.5
  • six ==1.16.0
  • soupsieve ==2.3.2.post1
  • stack-data ==0.3.0
  • tenacity ==8.0.1
  • terminado ==0.15.0
  • tinycss2 ==1.1.1
  • toml ==0.10.2
  • tomli ==2.0.1
  • tomlkit ==0.11.2
  • tornado ==6.2
  • traitlets ==5.3.0
  • typing-extensions ==4.3.0
  • unlzw3 ==0.2.1
  • wcwidth ==0.2.5
  • webencodings ==0.5.1
  • widgetsnbextension ==3.6.1
  • wrapt ==1.14.1
  • xarray ==2022.6.0
  • zipp ==3.8.1
  • zope.interface ==5.4.0
.github/workflows/build.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
  • snok/install-poetry v1 composite
  • tj-actions/changed-files v34 composite
.github/workflows/pip-install.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v2 composite
.github/workflows/pylint.yml actions
  • actions/cache v2 composite
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • snok/install-poetry v1 composite
.github/workflows/pypi-release.yml actions
  • actions/checkout master composite
  • actions/setup-python v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite