{"id":188916,"name":"saleos","description":"Sustainability Analytics for Low Earth Orbit Satellites.","url":"https://github.com/bonface-osoro/saleos","last_synced_at":"2026-05-27T21:00:25.332Z","repository":{"id":45373792,"uuid":"513583561","full_name":"Bonface-Osoro/saleos","owner":"Bonface-Osoro","description":"Sustainability Analytics for Low Earth Orbit Satellites","archived":false,"fork":false,"pushed_at":"2026-04-29T18:21:51.000Z","size":196096,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-08T19:50:26.067Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bonface-Osoro.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,"zenodo":null}},"created_at":"2022-07-13T15:54:26.000Z","updated_at":"2026-04-29T18:21:56.000Z","dependencies_parsed_at":"2024-01-15T21:01:43.050Z","dependency_job_id":"ef3a9243-f2f2-4420-a88e-0d4d4ccd154a","html_url":"https://github.com/Bonface-Osoro/saleos","commit_stats":{"total_commits":341,"total_committers":6,"mean_commits":"56.833333333333336","dds":"0.29032258064516125","last_synced_commit":"42fc69bdbdbef97284acc9f540dddc3e684d895f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Bonface-Osoro/saleos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonface-Osoro%2Fsaleos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonface-Osoro%2Fsaleos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonface-Osoro%2Fsaleos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonface-Osoro%2Fsaleos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bonface-Osoro","download_url":"https://codeload.github.com/Bonface-Osoro/saleos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bonface-Osoro%2Fsaleos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33408490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T18:09:33.147Z","status":"ssl_error","status_checked_at":"2026-05-23T18:09:31.380Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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"}},"owner":{"login":"Bonface-Osoro","name":"Bonface Osoro","uuid":"47190585","kind":"user","description":"PhD Earth Systems and Geoinformation Sciences Student.","email":"","website":null,"location":"Fairfax","twitter":null,"company":"George Mason University","icon_url":"https://avatars.githubusercontent.com/u/47190585?u=78d560b656934da7e3d6530c14eda7d61c64affe\u0026v=4","repositories_count":3,"last_synced_at":"2023-03-11T20:11:01.739Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Bonface-Osoro","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-15T05:20:28.332Z","updated_at":"2023-03-11T20:11:01.746Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bonface-Osoro","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bonface-Osoro/repositories"},"packages":[],"commits":{"id":1543509,"full_name":"bonface-osoro/saleos","default_branch":"main","total_commits":359,"total_committers":5,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":71.8,"dds":0.2701949860724234,"past_year_total_commits":1,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":1.0,"past_year_dds":0.0,"last_synced_at":"2026-05-25T20:01:18.761Z","last_synced_commit":"af243e4cd80d69501d761db1a37e1284bc3d3e4a","created_at":"2024-03-05T00:12:09.042Z","updated_at":"2026-05-25T20:01:14.020Z","committers":[{"name":"Bonface-Osoro","email":"bonfaceosoro@gmail.com","login":"Bonface-Osoro","count":262},{"name":"edwardoughton","email":"edward.oughton@gmail.com","login":"edwardoughton","count":66},{"name":"dkbor","email":"borkiprono@gmail.com","login":"denniesbor","count":23},{"name":"Bonface Osoro","email":"bosoro@macbook-pro.fios-router.home","login":null,"count":6},{"name":"Rushil Kukreja","email":"rushilkukreja@gmail.com","login":"rushilkukreja","count":2}],"past_year_committers":[{"name":"Bonface Osoro","email":"47190585+Bonface-Osoro","login":"Bonface-Osoro","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonface-osoro%2Fsaleos/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-27T00:00:12.503Z","repositories_count":6243264,"commits_count":883276259,"contributors_count":34944657,"owners_count":1158268,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"bonface-osoro/saleos","html_url":"https://github.com/bonface-osoro/saleos","last_synced_at":"2026-05-15T15:01:28.936Z","status":"error","issues_count":0,"pull_requests_count":136,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":53137.529411764706,"issues_closed_count":0,"pull_requests_closed_count":136,"pull_request_authors_count":3,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.022058823529411766,"merged_pull_requests_count":133,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":20,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":6.35,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":20,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.05,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":20,"created_at":"2024-03-05T00:12:27.855Z","updated_at":"2026-05-15T15:01:28.936Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonface-osoro%2Fsaleos","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonface-osoro%2Fsaleos/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"OWNER":1},"pull_request_author_associations_count":{"OWNER":192,"COLLABORATOR":21,"CONTRIBUTOR":6,"NONE":1},"issue_authors":{"Bonface-Osoro":1},"pull_request_authors":{"Bonface-Osoro":192,"edwardoughton":21,"rushilkukreja":7},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-23T00:00:30.079Z","repositories_count":14677630,"issues_count":34098301,"pull_requests_count":111617090,"authors_count":11271398,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"Bonface-Osoro","count":193,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Bonface-Osoro"},{"login":"edwardoughton","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/edwardoughton"}],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":29,"WatchEvent":3,"IssueCommentEvent":1,"PushEvent":27,"CreateEvent":2},"last_year":{}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-09-01T18:44:47.128Z","updated_at":"2022-09-01T18:44:47.128Z","repository_link":"https://github.com/Bonface-Osoro/saleos/blob/main/setup.py","dependencies":[{"id":3539541248,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.16.4","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-11-30T16:50:48.488Z","updated_at":"2023-11-30T16:50:48.488Z","repository_link":"https://github.com/Bonface-Osoro/saleos/blob/main/requirements.txt","dependencies":[{"id":14822678833,"package_name":"shapely","ecosystem":"pypi","requirements":"\u003e=1.6","direct":true,"kind":"runtime","optional":false},{"id":14822678834,"package_name":"fiona","ecosystem":"pypi","requirements":"\u003e=1.8.11","direct":true,"kind":"runtime","optional":false},{"id":14822678835,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.22.0","direct":true,"kind":"runtime","optional":false},{"id":14822678836,"package_name":"geopandas","ecosystem":"pypi","requirements":"==0.7.0","direct":true,"kind":"runtime","optional":false},{"id":14822678837,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.1.2","direct":true,"kind":"runtime","optional":false},{"id":14822678838,"package_name":"networkx","ecosystem":"pypi","requirements":"==2.4","direct":true,"kind":"runtime","optional":false},{"id":14822678839,"package_name":"pandas","ecosystem":"pypi","requirements":"==0.25.3","direct":true,"kind":"runtime","optional":false}]}],"score":4.007333185232471,"created_at":"2024-03-05T00:07:33.054Z","updated_at":"2026-05-27T21:00:25.335Z","avatar_url":"https://github.com/Bonface-Osoro.png","language":"Python","category":"Industrial Ecology","sub_category":"Life Cycle Assessment","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Sustainability Analytics for Low Earth Orbit Satellites (saleos)\n\nWelcome to the Sustainability Analytics for Low Earth Orbit Satellites \n(`saleos`) repository.\n\nPaper Citation\n--------------\n- Ogutu, O. B., Oughton, E. J., Wilson, A. R, \u0026 Rao, A. (2023). Sustainability \nassessment of Low Earth Orbit (LEO) satellite broadband mega-constellations. \nhttps://arxiv.org/abs/2309.02338\n\n\nThere is increasing concern about adverse environmental impacts produced by \nLow Earth Orbit (LEO) megaconstellations. The `saleos` codebase provides an \nopen-source integrated assessment model capable of concurrently estimating \nenvironmental emissions, broadband capacity, and social and financial costs \nfor different LEO satellite networks.\n\nWe focus on evaluating Amazon's Kuiper, Eutelsat's OneWeb and SpaceX's Starlink,\nwith these three LEO constellations visualized in `Figure 1`. The `saleos` \ncodebase allows you to compare these LEO constellations against a representative\nGeostationary Earth Orbit (GEO) operator.  \n\n#### Figure 1 Three key LEO constellations: Kuiper, OneWeb and Starlink (Details as of December 2023).\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/docs/a_fig_1.png\" /\u003e\n\u003c/p\u003e\n\nEmissions produced during the launching of satellites depend on the \nutilized rocket vehicle. Most operators planning or launching LEO broadband \nsatellites have used (or intend to use) SpaceX’s Falcon-9 or Falcon-Heavy, \nthe European Space Agency’s Ariane rocket system, or prior to Spring 2022, \nRussia’s Soyuz-FG rocket, as detailed in `Figure 2`. \n\n#### Figure 2 Details of launch rocket systems.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/docs/b_fig_2.png\" /\u003e\n\u003c/p\u003e\n\n\n## Sustainability metrics\n\nThe `saleos` codebase is capable of estimating a range of sustainability \nmetrics. `Figure 3` illustrates a selection of these including the estimated \nannual emissions per subscriber (subplot b), potential mean peak capacity per \nsubscriber (subplot c), and the financial costs per subscriber (subplot e/f).\n\n#### Figure 3 Aggregate sustainability metrics for Kuiper, OneWeb, Starlink and a hypothetical GEO operator.\n\u003cp align = 'center'\u003e\n  \u003cimg src= '/docs/c_aggregate_metrics.png' /\u003e\n\u003c/p\u003e\n\n## Method\n\nThe method is based on (i) a Life Cycle Assessment (LCA) model of environmental \nemissions and other impacts,(ii) a stochastic engineering simulation model \nestimating constellation capacity using the Friss Transmission Equation, (iii) \npotential traffic demand based on different adoption scenarios, and (iv) a \ntechno-economic model of the associated social and financial costs. `Figure 4` \nillustrates the integrated assessment approach.\n\n#### Figure 4 Integrated assessment modeling approach.\n\u003cp align = 'center'\u003e\n  \u003cimg src= '/docs/method_box_diagram.png' /\u003e\n\u003c/p\u003e\n\n## Required data\n\nTo use `saleos` the following model input datasets are required from `data/raw`: \n1. `life_cycle_data.xlsx`: This dataset contains estimated emissions and \nother environmental impacts per launch for major rocket vehicles. \n2. `scenarios.csv` : This file contains the past and future launch information\nfor different constellations, including hydrocarbon (HYC) versus hydrogen (HYD) \nfuel-based rockets. \n\nUsing conda\n-----------\nThe recommended installation method is to use conda, which handles packages \nand virtual environments, along with the conda-forge channel which has a host \nof pre-built libraries and packages.\n\nCreate a conda environment called saleos:\n\n  `conda create --name saleos python=3.7 gdal`\n\nActivate it (run this each time you switch projects):\n\n  `conda activate saleos`\n\nAlternatively, to install a conda environment capable of running the model, \nyou can utilize the following code:\n\n  `conda env create -f saleos.yml`\n\nThe `saleos.yml` file represents an existing virtual environment with a \nvariety of packages, necessary for running the model (e.g., pandas, numpy etc.).\n\nFirst, to run `saleos` you need to generate uncertain capacity and cost \nparameters since they are not deterministic.\n\nSo navigate to the `scripts` folder and run `preprocess.py`. This will produce \ntwo capacity and cost.csv files named `uq_parameters_capacity.csv` and \n`uq_parameters_cost.csv` stored in the path `data/processed`.\n\nSecondly, run the whole integrated model to produce capacity, emission and \ncost results by running the simulation script (`run.py`). It should first \nproduce the following intermediate results stored in the folder \n`data/processed`:\n\n1. `interim_results_capacity.csv`\n2. `interim_results_cost.csv`\n\nNext, you can inspect the model outputs stored in the `results` folder:\n\n1. `individual_emissions.csv`\n2. `final_capacity_results.csv`\n3. `final_capacity_cost.csv`\n\nLastly, to visualize the results, you will navigate into the `vis` folder \nand run the following `r` scripts in any order.\n\n1. `aggregate_metrics.r`\n2. `emissions.r`\n3. `capacity.r`\n4. `social_cost.r`\n5. `cost.r`\n\nQuick start\n-----------\nTo quick start, execute the `setup.py` file.\n\n  `pip install .`\n\nThen run the scripts in the order defined in the previous section (`Using conda`).\n\nBackground and funding\n----------------------\n\n**saleos** has been developed by researchers at George Mason University, \nUniversity of Strathclyde and Middlebury College.\n\n## Team\n- Bonface Osoro, George Mason University (Model development).\n- Edward Oughton, George Mason University (Project lead and corresponding \nauthor).\n- Andrew Wilson, University of Strathclyde / Glasgow Caledonian University \n(LCIA modeling).\n- Akhil Rao, Middlebury College (Policy and economics).\n\nAcknowledgement\n---------------\nEO would like to thank Geography and Geoinformation Sciences at George Mason \nUniversity for providing start-up funding for the project. Additionall, the \nauthors thank Nils Pacher and Dr. Inigo del Portillo for providing code for \nmodeling the orbit of the three LEO constellations, as well as Dr. Whitney \nLohmeyer for providing advice on the satellite capacity model. ","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/188916","html_url":"https://ost.ecosyste.ms/projects/188916"}