pgamit


Namepgamit JSON
Version 1.2.29 PyPI version JSON
download
home_pagehttps://github.com/demiangomez/Parallel.GAMIT
SummaryA Python wrapper to parallelize GAMIT executions
upload_time2025-07-10 15:24:06
maintainerNone
docs_urlNone
authorDemián D. Gómez
requires_python>=3.10
licenseBSD 3-Clause License Copyright (c) 2024, Demian Gomez Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords gamit
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Parallel.GAMIT
## A Python wrapper to manage GNSS data and metadata and parallelize GAMIT executions
### Author: Demián D. Gómez

Parallel.GAMIT (PGAMIT) is a Python software solution for parallel GNSS processing of large regional or global networks. It incorporates a metadata and RINEX data management tool that guarantees a consistent archive. It relies on Postgres SQL (https://www.postgresql.org/) to store station metadata and the GPSPACE Precise-Point-Positioning (PPP) software (see installation instructions) to obtain reliable daily a-priori coordinates for GAMIT.

The software can be installed as a Python package (see `INSTALL.md`) allowing to import modules to perform time series analysis and extraction of trajectory parameters from the database.

PGAMIT also includes a backend (see branch web-ui-backend) and web frontend (see branch web-ui-frontend) that can be easily deployed to edit station related metadata (such as observation files and pictures) and processing metadata. The backend was developed in django and the frontend was developed using node.js.

PGAMIT uses dispy (https://github.com/pgiri/dispy) to create Python pickles that are sent to local or remote nodes for execution. PGAMIT has the ability to split a network of GNSS stations into subnetworks for processing in GAMIT (when the network is larger than 50 stations, depending on PGAMIT's configuration). The parallel execution is performed per day-subnetwork. In other words, a GAMIT pickle is built for each subnetwork-day being processed and sent to the available nodes. At the end of each PGAMIT run, the subnetworks are combined with GLOBK and inserted as records in the Postgres database for later use. Some routines (such as the SINEX parser) are modified versions of the code from @softwarespartan (https://github.com/softwarespartan).

Some of the tasks that PGAMIT can perform include:

- Scan a directory structure containing RINEX files and add them to the Postgres database.
- Manage station metadata in GAMIT's station info format with consistency check of the records.
- Add new RINEX data to the database by geolocation, i.e. the data is incorporated not by station name but by running PPP and finding the corresponding station in the DB. This avoids problems with duplicate station codes and misidentified RINEX files.
- Handle ocean loading coefficients to correct the PPP and GAMIT coordinates.
- Plot PPP time series using Bevis and Brown's (2014) extended trajectory model.
- Manage (i.e. add, merge, delete) GNSS stations.
- Parse zenith tropospheric delays and store them in the database.
- Stack the GAMIT solutions to produce regional or global reference frames following Bevis and Brown's (2014) and Gómez et al (2022).
- Station name duplicate-tolerance by using a three-letter network code. Although this is not supported by GAMIT, PGAMIT converts duplicate station codes (stored in different networks) to unique IDs that are used during processing, which are later converted back to the original names after the GLOBK combination of the subnetworks.
- Because all the information is stored in a relational database, PGAMIT can handle very large datasets easily (it has been tested with ~ 14M station-days but Postgres can easily handle more than 100 million records). Also, the relational database guarantees then consistency of the data and does not allow accidental duplicates in metadata.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/demiangomez/Parallel.GAMIT",
    "name": "pgamit",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "\"Demi\u00e1n D. G\u00f3mez\" <demiang@gmail.com>, \"Shane Grigsby (espg)\" <refuge@rocktalus.com>",
    "keywords": "GAMIT",
    "author": "Demi\u00e1n D. G\u00f3mez",
    "author_email": "\"Demi\u00e1n D. G\u00f3mez\" <demiang@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/2b/09/0f538246cf3792a35fedbdf8f39f2ba2a33a413f296b72b505969a26d352/pgamit-1.2.29.tar.gz",
    "platform": null,
    "description": "# Parallel.GAMIT\n## A Python wrapper to manage GNSS data and metadata and parallelize GAMIT executions\n### Author: Demi\u00e1n D. G\u00f3mez\n\nParallel.GAMIT (PGAMIT) is a Python software solution for parallel GNSS processing of large regional or global networks. It incorporates a metadata and RINEX data management tool that guarantees a consistent archive. It relies on Postgres SQL (https://www.postgresql.org/) to store station metadata and the GPSPACE Precise-Point-Positioning (PPP) software (see installation instructions) to obtain reliable daily a-priori coordinates for GAMIT.\n\nThe software can be installed as a Python package (see `INSTALL.md`) allowing to import modules to perform time series analysis and extraction of trajectory parameters from the database.\n\nPGAMIT also includes a backend (see branch web-ui-backend) and web frontend (see branch web-ui-frontend) that can be easily deployed to edit station related metadata (such as observation files and pictures) and processing metadata. The backend was developed in django and the frontend was developed using node.js.\n\nPGAMIT uses dispy (https://github.com/pgiri/dispy) to create Python pickles that are sent to local or remote nodes for execution. PGAMIT has the ability to split a network of GNSS stations into subnetworks for processing in GAMIT (when the network is larger than 50 stations, depending on PGAMIT's configuration). The parallel execution is performed per day-subnetwork. In other words, a GAMIT pickle is built for each subnetwork-day being processed and sent to the available nodes. At the end of each PGAMIT run, the subnetworks are combined with GLOBK and inserted as records in the Postgres database for later use. Some routines (such as the SINEX parser) are modified versions of the code from @softwarespartan (https://github.com/softwarespartan).\n\nSome of the tasks that PGAMIT can perform include:\n\n- Scan a directory structure containing RINEX files and add them to the Postgres database.\n- Manage station metadata in GAMIT's station info format with consistency check of the records.\n- Add new RINEX data to the database by geolocation, i.e. the data is incorporated not by station name but by running PPP and finding the corresponding station in the DB. This avoids problems with duplicate station codes and misidentified RINEX files.\n- Handle ocean loading coefficients to correct the PPP and GAMIT coordinates.\n- Plot PPP time series using Bevis and Brown's (2014) extended trajectory model.\n- Manage (i.e. add, merge, delete) GNSS stations.\n- Parse zenith tropospheric delays and store them in the database.\n- Stack the GAMIT solutions to produce regional or global reference frames following Bevis and Brown's (2014) and G\u00f3mez et al (2022).\n- Station name duplicate-tolerance by using a three-letter network code. Although this is not supported by GAMIT, PGAMIT converts duplicate station codes (stored in different networks) to unique IDs that are used during processing, which are later converted back to the original names after the GLOBK combination of the subnetworks.\n- Because all the information is stored in a relational database, PGAMIT can handle very large datasets easily (it has been tested with ~ 14M station-days but Postgres can easily handle more than 100 million records). Also, the relational database guarantees then consistency of the data and does not allow accidental duplicates in metadata.\n\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License\n        \n        Copyright (c) 2024, Demian Gomez\n        \n        Redistribution and use in source and binary forms, with or without\n        modification, are permitted provided that the following conditions are met:\n        \n        1. Redistributions of source code must retain the above copyright notice, this\n           list of conditions and the following disclaimer.\n        \n        2. Redistributions in binary form must reproduce the above copyright notice,\n           this list of conditions and the following disclaimer in the documentation\n           and/or other materials provided with the distribution.\n        \n        3. Neither the name of the copyright holder nor the names of its\n           contributors may be used to endorse or promote products derived from\n           this software without specific prior written permission.\n        \n        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n        AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n        DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n        FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n        DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n        SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n        ",
    "summary": "A Python wrapper to parallelize GAMIT executions",
    "version": "1.2.29",
    "project_urls": {
        "Bug Tracker": "https://github.com/demiangomez/Parallel.GAMIT/issues",
        "Homepage": "https://github.com/demiangomez/Parallel.GAMIT"
    },
    "split_keywords": [
        "gamit"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5db67375b9276e7b73da6db68a74c86d9fdfd25729ccbae3315e4a466c0ff4df",
                "md5": "da3c41a2f516d36a7e6dbf5793b503e4",
                "sha256": "c0bb56f9a977261ca63438ce177387f6a5a4083b735f91be60ef86dfb79a504f"
            },
            "downloads": -1,
            "filename": "pgamit-1.2.29-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "da3c41a2f516d36a7e6dbf5793b503e4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 382227,
            "upload_time": "2025-07-10T15:24:04",
            "upload_time_iso_8601": "2025-07-10T15:24:04.619909Z",
            "url": "https://files.pythonhosted.org/packages/5d/b6/7375b9276e7b73da6db68a74c86d9fdfd25729ccbae3315e4a466c0ff4df/pgamit-1.2.29-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2b090f538246cf3792a35fedbdf8f39f2ba2a33a413f296b72b505969a26d352",
                "md5": "3028a51d8038022683c584ed81f4f2ed",
                "sha256": "6ce65233ca46e41abd705684b1f337fc990802cc4e32d302723936a9e13ef942"
            },
            "downloads": -1,
            "filename": "pgamit-1.2.29.tar.gz",
            "has_sig": false,
            "md5_digest": "3028a51d8038022683c584ed81f4f2ed",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 3959184,
            "upload_time": "2025-07-10T15:24:06",
            "upload_time_iso_8601": "2025-07-10T15:24:06.373601Z",
            "url": "https://files.pythonhosted.org/packages/2b/09/0f538246cf3792a35fedbdf8f39f2ba2a33a413f296b72b505969a26d352/pgamit-1.2.29.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-10 15:24:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "demiangomez",
    "github_project": "Parallel.GAMIT",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pgamit"
}
        
Elapsed time: 1.32374s