Skip to main content

build codecov Documentation Status Open In Colab

gnss_lib_py

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:

   ├── data/                          # Location for data files
      └── unit_test/                  # Data files for unit testing
   ├── dev/                           # Code users do not wish to commit
   ├── docs/                          # Documentation files
   ├── gnss_lib_py/                   # gnss_lib_py source files
        ├── algorithms/               # Navigation algorithms
        ├── navdata/                  # NavData data structure
        ├── parsers/                  # Data parsers
        ├── utils/                    # GNSS and common utilities
        ├── visualizations/           # plotting functions
        └── __init__.py               # Initialize gnss_lib_py
   ├── 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
   ├── build_docs.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:


   @article{knowles_glp_2024,
      title = {gnss_lib_py: 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/gnss_lib_py},
      doi = {10.1016/j.softx.2024.101811},
   }

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gnss_lib_py-1.1.0.tar.gz (100.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gnss_lib_py-1.1.0-py3-none-any.whl (117.1 kB view details)

Uploaded Python 3

File details

Details for the file gnss_lib_py-1.1.0.tar.gz.

File metadata

  • Download URL: gnss_lib_py-1.1.0.tar.gz
  • Upload date:
  • Size: 100.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gnss_lib_py-1.1.0.tar.gz
Algorithm Hash digest
SHA256 af8635752184481deceafd7c94fb2dc720c5a60839ecca683e8ac19eec35f001
MD5 aefcf37ec8bd30e0675516ffb7ddfa99
BLAKE2b-256 24fdf867db9bdf85bc0d99a2af84c51d7342117bd8d3e7de34c188f81bddf0f5

See more details on using hashes here.

File details

Details for the file gnss_lib_py-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: gnss_lib_py-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 117.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for gnss_lib_py-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9af0e9e05e833c2d000eab471dd3345f5792f6812df591ecf91ba81e0fe25ff2
MD5 aa77d38be1df284a8258f535905ae620
BLAKE2b-256 36b94c8dcde2e76ef22e84d1ad2a2dde79070fdf309730395484e4f2e32323f5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page