{"id":20537076,"url":"https://github.com/stanford-navlab/gnss_lib_py","last_synced_at":"2025-05-16T02:03:33.137Z","repository":{"id":50548870,"uuid":"381491888","full_name":"Stanford-NavLab/gnss_lib_py","owner":"Stanford-NavLab","description":"Modular Python tool for parsing, analyzing, and visualizing Global Navigation Satellite Systems (GNSS) data and state estimates","archived":false,"fork":false,"pushed_at":"2024-10-30T04:38:19.000Z","size":46381,"stargazers_count":172,"open_issues_count":6,"forks_count":43,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-01T12:08:39.992Z","etag":null,"topics":["android","ekf","gnss","navigation","position","pseudorange","python","residual","wls"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Stanford-NavLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-29T20:42:49.000Z","updated_at":"2025-03-31T14:49:39.000Z","dependencies_parsed_at":"2024-08-04T22:02:22.842Z","dependency_job_id":"70014a30-04f2-4a06-817f-3b28433d8aa5","html_url":"https://github.com/Stanford-NavLab/gnss_lib_py","commit_stats":{"total_commits":658,"total_committers":5,"mean_commits":131.6,"dds":0.4300911854103343,"last_synced_commit":"374e48490fc8d7992705b5ba29ec50b4d298c0b9"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stanford-NavLab%2Fgnss_lib_py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stanford-NavLab%2Fgnss_lib_py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stanford-NavLab%2Fgnss_lib_py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stanford-NavLab%2Fgnss_lib_py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Stanford-NavLab","download_url":"https://codeload.github.com/Stanford-NavLab/gnss_lib_py/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247847611,"owners_count":21006100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ekf","gnss","navigation","position","pseudorange","python","residual","wls"],"created_at":"2024-11-16T00:38:51.870Z","updated_at":"2025-04-08T13:14:15.878Z","avatar_url":"https://github.com/Stanford-NavLab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build](https://github.com/Stanford-NavLab/gnss_lib_py/actions/workflows/build.yml/badge.svg)](https://github.com/Stanford-NavLab/gnss_lib_py/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/Stanford-NavLab/gnss_lib_py/branch/main/graph/badge.svg?token=1FBGEWRFM6)](https://codecov.io/gh/Stanford-NavLab/gnss_lib_py)\n[![Documentation Status](https://readthedocs.org/projects/gnss_lib_py/badge/?version=latest)](https://gnss-lib-py.readthedocs.io/en/latest/?badge=latest)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1DYfuiM5ipz0B-lgjKYcL1Si-V4jNBEac?usp=sharing)\n\ngnss_lib_py\n===========\n\n`gnss_lib_py` is a modular Python tool for parsing, analyzing, and\nvisualizing Global Navigation Satellite Systems (GNSS) data and state\nestimates.\nIt also provides an intuitive and modular framework which allows users to\nquickly prototype, implement, and visualize GNSS algorithms.\n`gnss_lib_py` is modular in the sense that multiple types of\nalgorithms or datasets can be easily exchanged for each other.\nIt is extendable in facilitating user-specific extensions of existing\nimplementations.\n\n\u003cimg src=\"https://raw.githubusercontent.com/Stanford-NavLab/gnss_lib_py/main/docs/source/img/glp_architecture.svg\" alt=\"Architecture of gnss-lib-py library\" width=\"800\"/\u003e\n\n`gnss_lib_py` contains parsers for common file types used for\nstoring GNSS measurements, benchmark algorithms for processing\nmeasurements into state estimates and visualization tools for measurements\nand state estimates.\nThe modularity of `gnss_lib_py` is made possibly by the unifying\n`NavData` class, with accompanying standard nomenclature, which can be\nfound in the\n[reference page](https://gnss-lib-py.readthedocs.io/en/latest/reference/reference.html).\nThe standard nomenclature ensures cross compatibility between different\ndatasets and algorithms.\n\n`NavData` combines the readability of `pandas.DataFrame` with `numpy.ndarray`\nallowing for easy and fast access of numbers or strings.\nWe also provide functionality to add, remove and modify numeric and\nstring data consistently along with commonly needed supporting\nfunctionality.\n\nDocumentation\n-------------\nFull documentation is available on our [readthedocs website](https://gnss-lib-py.readthedocs.io/en/latest/index.html).\n\n\nCode Organization\n-----------------\n\n`gnss_lib_py` is organized as:\n\n```bash\n\n   ├── data/                          # Location for data files\n      └── unit_test/                  # Data files for unit testing\n   ├── dev/                           # Code users do not wish to commit\n   ├── docs/                          # Documentation files\n   ├── gnss_lib_py/                   # gnss_lib_py source files\n        ├── algorithms/               # Navigation algorithms\n        ├── navdata/                  # NavData data structure\n        ├── parsers/                  # Data parsers\n        ├── utils/                    # GNSS and common utilities\n        ├── visualizations/           # plotting functions\n        └── __init__.py               # Initialize gnss_lib_py\n   ├── notebooks/                     # Interactive Jupyter notebooks\n        ├── tutorials/                # Notebooks with tutorial code\n   ├── results/                       # Location for result images/files\n   ├── tests/                         # Tests for source files\n      ├── algorithms/                 # Tests for files in algorithms\n      ├── navdata/                    # Tests for files in navdata\n      ├── parsers/                    # Tests for files in parsers\n      ├── utils/                      # Tests for files in utils\n      ├── visualizations/             # Tests for files in visualizations\n      └── conftest.py                 # Common methods for tests\n   ├── CONTRIBUTORS.md                # List of contributors\n   ├── build_docs.sh                  # Bash script to build docs\n   ├── poetry.lock                    # Poetry specific Lock file\n   ├── pyproject.toml                 # List of package dependencies\n   └── requirements.txt               # List of packages for pip install\n```\nIn the directory organization above:\n\n  * The `algorithms` directory contains algorithms that\n    work by passing in a `NavData` class. Currently, the following\n    algorithms are implemented in the `algorithms`:\n\n      * Weighted Least Squares\n      * Extended Kalman Filter\n      * Calculating pseudorange residuals\n      * Fault detection and exclusion\n\n  * The `navdata` directory defines the `NavData` class, its methods, and\n    functions that operate on `NavData` instances, like `sort`, `concat`,\n    and others.\n\n  * The data parsers in the `parsers` directory allow for either loading\n    GNSS data into `gnss_lib_py`'s unifying `NavData` class or parsing\n    precise ephemerides data.\n    Currently, the following datasets and types are supported:\n\n      * [2021 Google Android Derived Dataset](https://www.kaggle.com/c/google-smartphone-decimeter-challenge)\n      * [2022 Google Android Derived Dataset](https://www.kaggle.com/competitions/smartphone-decimeter-2022)\n      * [TU Chemnitz smartLoc Dataset](https://www.tu-chemnitz.de/projekt/smartLoc/gnss_dataset.html.en#Datasets)\n      * [NMEA](https://www.sparkfun.com/datasheets/GPS/NMEA%20Reference%20Manual-Rev2.1-Dec07.pdf)\n      * [RINEX .o and .n](https://files.igs.org/pub/data/format/rinex305.pdf)\n      * [SP3 precise orbits](https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/orbit_products.html)\n      * [CLK clock products](https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/clock_products.html)\n\n  * The `utils` directory contains utilities used to handle\n    GNSS measurements, time conversions, coordinate transformations,\n    visualizations, calculating multi-GNSS satellite PVT information,\n    satellite simulation, file operations, etc.\n\n  * The `visualizations` directory contains methods for plotting quantities\n    in `NavData`. It includes methods to plot metrics, positions on maps,\n    and skyplots of satellites visible from the receiver position.\n\nInstallation\n------------\n\n`gnss_lib_py` is available through `pip` installation with:\n\n```\npip install gnss-lib-py\n```\n\nFor directions on how to install an editable or developer installation of `gnss_lib_py` on Linux, MacOS, and Windows, please\nsee the [install instructions](https://gnss-lib-py.readthedocs.io/en/latest/install.html).\n\nTutorials\n---------\nWe have a range of tutorials on how to easily use this project. They can\nall be found in the [tutorials section](https://gnss-lib-py.readthedocs.io/en/latest/tutorials/tutorials.html).\n\nReference\n---------\nReferences on the package contents, explanation of the benefits of our\ncustom NavData class, and function-level documentation can all be\nfound in the [reference section](https://gnss-lib-py.readthedocs.io/en/latest/reference/reference.html).\n\nContributing\n------------\nIf you have a bug report or would like to contribute to our repository,\nplease follow the guide on the [contributing page](https://gnss-lib-py.readthedocs.io/en/latest/contributing/contributing.html).\n\nTroubleshooting\n---------------\nAnswers to common questions can be found in the [troubleshooting section](https://gnss-lib-py.readthedocs.io/en/latest/troubleshooting.html).\n\nAttribution\n-----------\nThis project is a product of the [Stanford NAV Lab](https://navlab.stanford.edu/)\nand currently maintained by Daniel Neamati (dneamati [at] stanford [dot] edu)\nand Derek Knowles. If using\nthis project in your own work please cite the following:\n\n```\n\n   @inproceedings{knowles_glp_2024,\n      title = {gnss_lib_py: Analyzing GNSS data with Python},\n      author = {Knowles, Derek and Kanhere, Ashwin Vivek and Neamati, Daniel and Gao, Grace},\n      journal = {SoftwareX},\n      volume = {27},\n      year = {2024},\n      publisher = {Elsevier},\n      url = {https://github.com/Stanford-NavLab/gnss_lib_py},\n      doi = {10.1016/j.softx.2024.101811},\n   }\n```\n\nAdditionally, we would like to thank [all contributors](https://github.com/Stanford-NavLab/gnss_lib_py/blob/main/CONTRIBUTORS.md) to this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstanford-navlab%2Fgnss_lib_py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstanford-navlab%2Fgnss_lib_py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstanford-navlab%2Fgnss_lib_py/lists"}