{"id":18818923,"url":"https://github.com/geoscienceaustralia/rocs","last_synced_at":"2025-09-02T20:31:30.160Z","repository":{"id":259811054,"uuid":"874560883","full_name":"GeoscienceAustralia/ROCS","owner":"GeoscienceAustralia","description":"Robust Orbit Combination Software","archived":false,"fork":false,"pushed_at":"2024-11-23T13:24:39.000Z","size":13029,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-23T14:24:41.725Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GeoscienceAustralia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-18T03:54:26.000Z","updated_at":"2024-11-23T13:24:42.000Z","dependencies_parsed_at":"2024-10-28T05:29:56.026Z","dependency_job_id":"5b7a11b8-1f8c-47ca-8a26-c2c92f5e38f1","html_url":"https://github.com/GeoscienceAustralia/ROCS","commit_stats":null,"previous_names":["geoscienceaustralia/rocs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2FROCS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2FROCS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2FROCS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2FROCS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GeoscienceAustralia","download_url":"https://codeload.github.com/GeoscienceAustralia/ROCS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231807396,"owners_count":18429519,"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":[],"created_at":"2024-11-08T00:19:26.949Z","updated_at":"2024-12-30T02:46:44.215Z","avatar_url":"https://github.com/GeoscienceAustralia.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ROCS: Robust Orbit Combination Software\n#### ROCS version 1.0\n\n## Overview\n\nThe *Robust Orbit Combination Software - ROCS* is a GNSS processing package developed in Python 3 to combine orbits (and in future clocks) from different International GNSS Service (IGS) analysis centres [https://igs.org/acc/]. The algorithm used by the software is mainly based on the legacy version of the IGS Analysis Centre Coordinator (ACC) combination software which was developed in Fortran with Perl and Shell Scripts by the Astronomical Institute, University of Bern, Delft University of Technology, and Geodetic Survey of Canada, NRCan (see Beutler, Kouba and Springer: Combining the orbits of the IGS Analysis Centers; Bulletin Geodesique; 1995).\n\nThis modern implementation of the combination software enables the combination of multi-GNSS orbits, and incorporates more complex techniques for weighting of the Analysis Centre solutions for different constellations/blocks/satellites. For details of the processing algorithms, please refer to: Zajdel, R., Masoumi, S., Sośnica, K. et al. Combination and SLR validation of IGS Repro3 orbits for ITRF2020. J Geod 97, 87 (2023). https://doi.org/10.1007/s00190-023-01777-3.\n\n\n## How to run\nMost of the configurations can be controlled by a YAML file. Examples of config.yaml files are provided in the ```inp/``` directory. \n\n## Directory structure\n\nThe tree structure of the modules is as below:\n\n```\n+-- rocs\n|   +-- __main__.py --\u003e main module executed when package is run\n|   +-- combine_orbits.py --\u003e main module to execute orbit combination\n|   +-- orbits.py --\u003e orbit comibnation module\n|   +-- helmert.py --\u003e forward and inverse helmert transformation\n|   +-- checkutils.py --\u003e consistency checks for sizes and types\n|   +-- coordinates.py --\u003e coordinate transformations\n|   +-- eclipse.py --\u003e satellite eclipse calculations\n|   +-- formatters.py --\u003e cutsom formatters for logging\n|   +-- gpscal.py --\u003e time conversions\n|   +-- iau.py --\u003e International Astronomical Union models\n|   +-- io_data.py --\u003e input/output of data files\n|   +-- planets.py --\u003e planetary position calculations\n|   +-- report.py --\u003e reporting and creating summary files\n|   +-- rotation.py --\u003e calculation of rotation matrix and its derivative\n|   +-- settings.py --\u003e settings and configurations\n|   +-- setup_logging.py --\u003e setup logging information\n+-- inp --\u003e directory including examples of configuration YAML files\n+-- README.md --\u003e this readme file\n+-- requirements.txt --\u003e list of software dependencies\n+-- setup.py --\u003e package and distribution management\n+-- logging.yaml --\u003e YAML file for logging\n+-- LICENSE --\u003e software license\n```\n\n## How to install\nTo install the software in Linux, simply navigate to where you would like to install the software on your machine, and clone the repository:\n\n```\ngit clone https://github.com/GeoscienceAustralia/ROCS.git\ncd ROCS\n```\n\nThen install the required packages:\n\n```\npip3 install -r requirements.txt\n```\n\nTo be able to run the software from anywhere on your system, add the package to your ```$PYTHONPATH```:\n\n```\nexport PYTHONPATH=/path/to/your/ROCS/:$PYTHONPATH\n```\n\nIt is recommended that you add the above line to your shell initialization file (```~/.bashrc```, ```~/.cshrc```, etc.) so you do not need to run this every time you start up the sell.\n\n\n## How to run\n\nAfter installing the software, you need to prepare your campaign before running the combination. To do this, follow the below steps:\n\n- Create a configuration YAML file. You can choose the name and location of this file whatever you would like as you will need to point to it in the command that you will run. Examples of the configuration YAML file are given in the ```inp``` directory. Use one of these examples, and modify it to suit your preferences and environment (i.e. directory and file locations).\n- Create a directory for the submissions, and copy all the individual (Analysis Centre) solutions there. The path to the directory should be indicated in the configuration YAML file created above in the ```subm_rootdir``` entry.\n- Ensure the metadata and other required files indicated in the configuration YAML file exist in the indicated locations. These may include, e.g., satellite metadata file, EOP file, and NANU summary file\n- Ensure that the ```prod_rootdir``` entry given in the configuration file exists and is where you would like the products to be written to. Previous file in that location may be overwritten by the output files from running the software.\n\nOnce you have prepared the campaign, you can run the program by simply executing the command below:\n\n```\npython3 -m rocs \u003cWWWW\u003e \u003cD\u003e \u003cH\u003e -c \u003c/path/to/your/config.yaml\u003e\n```\n\nwhere ```\u003cWWWW\u003e``` is GPS week, ```\u003cD\u003e``` is day of week (for the starting epoch of the combination), ```\u003cH\u003e``` is hour of the day (optional, only required for ultra-rapid combination), and ```\u003c/path/to/your/config.yaml\u003e``` is the full path to your configuration YAML file.\n\nRunning the package with the ```--help``` argument will show a simple help option:\n\n```\npython3 -m rocs --help\n\nusage: rocs [-h] [-c CONFIG_YAML] gpsweek dow [hr]\n\nRobust combination of orbit solutions\n\npositional arguments:\n  gpsweek               GPS week for processing\n  dow                   Day of week for processing\n  hr                    Starting hour for ultra-rapid combination (default:\n                        None)\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c CONFIG_YAML, --config CONFIG_YAML\n                        YAML file containing configurations for combination\n                        (default: None)\n```\n\n## Example scenarios\n\nIn the ```examples``` directory, there are two different scenario examples, one for a final orbit combination and one for an ultra-rapid orbit combination. Each of these directories include the required input files as well as the expected outputs in the ```products_expected``` directory. You may want to use these examples to ensure you retrieve the expected outcomes.\n\nFor the final orbit combination example, run the below commands:\n\n```\ncd examples/final/\npython3 -m rocs 2332 4 -c ./inp/config_example_final.yaml\n```\n\nSimilarly, for the ultra-rapid example, run:\n\n```\ncd examples/ultra/\npython3 -m rocs 2332 4 18 -c ./inp/config_example_ultra.yaml\n```\n\nAfter the program is completed for each of the above examples, the combined orbits and summary files are written into the ```products``` directory. These products should be identical to the pre-combined files in the ```products_expected``` directory.\n\nNote that the above are only example scenarios, and that you may want to change the configurations based on your particular needs.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeoscienceaustralia%2Frocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeoscienceaustralia%2Frocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeoscienceaustralia%2Frocs/lists"}