{"id":20220,"name":"oco2peak","description":"The goal of our project is to localize CO2 emissions on Earth based on the carbon concentration data measured by the OCO-2 Satellite from NASA.","url":"https://github.com/dataforgoodfr/batch7_satellite_ges","last_synced_at":"2026-04-05T17:00:30.130Z","repository":{"id":39866566,"uuid":"244871572","full_name":"dataforgoodfr/batch7_satellite_ges","owner":"dataforgoodfr","description":null,"archived":false,"fork":false,"pushed_at":"2023-04-12T06:09:38.000Z","size":382150,"stargazers_count":19,"open_issues_count":2,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-03-25T11:15:49.000Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","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/dataforgoodfr.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}},"created_at":"2020-03-04T10:28:31.000Z","updated_at":"2025-04-09T09:06:43.000Z","dependencies_parsed_at":"2023-09-21T19:57:13.751Z","dependency_job_id":null,"html_url":"https://github.com/dataforgoodfr/batch7_satellite_ges","commit_stats":{"total_commits":326,"total_committers":15,"mean_commits":"21.733333333333334","dds":0.6809815950920246,"last_synced_commit":"58982da9e4a81bcf5fb122118c6f148719c1267d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dataforgoodfr/batch7_satellite_ges","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr","download_url":"https://codeload.github.com/dataforgoodfr/batch7_satellite_ges/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/sbom","scorecard":{"id":324422,"data":{"date":"2025-08-11","repo":{"name":"github.com/dataforgoodfr/batch7_satellite_ges","commit":"58982da9e4a81bcf5fb122118c6f148719c1267d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"53 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-j6gc-792m-qgm2","Warn: Project is vulnerable to: GHSA-pj73-v5mw-pm9j","Warn: Project is vulnerable to: GHSA-48wp-p9qv-4j64","Warn: Project is vulnerable to: GHSA-4qw4-jpp4-8gvp","Warn: Project is vulnerable to: GHSA-636f-xm5j-pj9m","Warn: Project is vulnerable to: GHSA-7vh7-fw88-wj87","Warn: Project is vulnerable to: GHSA-fmx4-26r3-wxpf","Warn: Project is vulnerable to: GHSA-52p9-v744-mwjj","Warn: Project is vulnerable to: GHSA-mqm2-cgpr-p4m6","Warn: Project is vulnerable to: GHSA-2qc6-mcvw-92cw","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-pxvg-2qj5-37jq","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-xc9x-jj77-9p9j","Warn: Project is vulnerable to: GHSA-xh29-r2w5-wx8m","Warn: Project is vulnerable to: GHSA-5cm2-9h8c-rvfx","Warn: Project is vulnerable to: PYSEC-2024-35 / GHSA-547x-748v-vp6p","Warn: Project is vulnerable to: PYSEC-2018-55 / GHSA-32pc-xphx-q4f6","Warn: Project is vulnerable to: GHSA-hc5x-x2vx-497g","Warn: Project is vulnerable to: GHSA-w3h3-4rj7-4ph4","Warn: Project is vulnerable to: GHSA-44cc-43rp-5947","Warn: Project is vulnerable to: PYSEC-2021-130 / GHSA-4952-p58q-6crx","Warn: Project is vulnerable to: GHSA-9q39-rmj3-p4r2","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2014-69 / GHSA-4rrr-j7ff-r844","Warn: Project is vulnerable to: PYSEC-2014-71 / GHSA-7f2c-vp52-gmfw","Warn: Project is vulnerable to: PYSEC-2013-24 / GHSA-8q2m-pwxf-jc7g","Warn: Project is vulnerable to: PYSEC-2014-70 / GHSA-gwvq-rgqf-993f","Warn: Project is vulnerable to: PYSEC-2015-31 / GHSA-p9wq-mjh8-q72m","Warn: Project is vulnerable to: GHSA-pxxv-rv32-2qgv","Warn: Project is vulnerable to: GHSA-qh2x-hpf9-cf2g","Warn: Project is vulnerable to: GHSA-3pww-qvr8-6mhp","Warn: Project is vulnerable to: GHSA-6cxr-8q3m-jwrr","Warn: Project is vulnerable to: GHSA-h3xg-wv58-5p43","Warn: Project is vulnerable to: PYSEC-2025-23 / GHSA-w4rh-fgx7-q63m","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.7.0 to python:3.7.0@sha256:10608fb357a18383f792efbf7472ec6d2e166dad62efc0d7c409ef2777aaafd0","Warn: containerImage not pinned by hash: Dockerfile-dev:1: pin your Docker image by updating python:3.8.0 to python:3.8.0@sha256:adb48bf76e44cd7d74607db157bba756368af42196aaea945e2114d957cb5558","Warn: pipCommand not pinned by hash: Dockerfile:3","Warn: pipCommand not pinned by hash: Dockerfile:14","Warn: pipCommand not pinned by hash: Dockerfile-dev:3","Warn: pipCommand not pinned by hash: Dockerfile-dev:7","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-18T02:07:53.408Z","repository_id":39866566,"created_at":"2025-08-18T02:07:53.408Z","updated_at":"2025-08-18T02:07:53.408Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31100298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-28T12:33:51.386Z","status":"ssl_error","status_checked_at":"2026-03-28T12:33:49.792Z","response_time":79,"last_error":"SSL_read: 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":"dataforgoodfr","name":"Data For Good France","uuid":"11797105","kind":"organization","description":"","email":"hellodataforgood@gmail.com","website":"http://www.dataforgood.fr","location":"France","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11797105?v=4","repositories_count":119,"last_synced_at":"2024-04-24T05:37:38.645Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dataforgoodfr","funding_links":[],"total_stars":338,"followers":241,"following":0,"created_at":"2022-11-12T03:41:41.220Z","updated_at":"2024-04-24T05:38:16.432Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr/repositories"},"packages":[{"id":2824348,"name":"oco2peak","ecosystem":"pypi","description":"OCO-2 Satellite CO2 peak detector.","homepage":"https://github.com/dataforgoodfr/batch7_satellite_ges/tree/master/","licenses":"Apache Software License 2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/dataforgoodfr/batch7_satellite_ges","keywords_array":["CO2","satellite"],"namespace":null,"versions_count":4,"first_release_published_at":"2020-06-01T06:41:22.000Z","latest_release_published_at":"2022-05-08T04:57:23.000Z","latest_release_number":"0.0.4","last_synced_at":"2026-04-03T16:00:45.386Z","created_at":"2022-04-10T11:47:52.793Z","updated_at":"2026-04-03T16:00:45.386Z","registry_url":"https://pypi.org/project/oco2peak/","install_command":"pip install oco2peak --index-url https://pypi.org/simple","documentation_url":"https://oco2peak.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Natural Language :: English","Programming Language :: Python :: 3.7","Programming Language :: Python :: 3.8"],"normalized_name":"oco2peak","project_status":null},"repo_metadata":{"id":39866566,"uuid":"244871572","full_name":"dataforgoodfr/batch7_satellite_ges","owner":"dataforgoodfr","description":null,"archived":false,"fork":false,"pushed_at":"2023-04-12T06:09:38.000Z","size":382150,"stargazers_count":18,"open_issues_count":2,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-09-04T11:19:35.139Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","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/dataforgoodfr.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}},"created_at":"2020-03-04T10:28:31.000Z","updated_at":"2024-04-03T10:36:07.000Z","dependencies_parsed_at":"2023-09-21T19:57:13.751Z","dependency_job_id":null,"html_url":"https://github.com/dataforgoodfr/batch7_satellite_ges","commit_stats":{"total_commits":326,"total_committers":15,"mean_commits":"21.733333333333334","dds":0.6809815950920246,"last_synced_commit":"58982da9e4a81bcf5fb122118c6f148719c1267d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr","download_url":"https://codeload.github.com/dataforgoodfr/batch7_satellite_ges/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217597574,"owners_count":16201788,"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"},"owner_record":{"login":"dataforgoodfr","name":"Data For Good France","uuid":"11797105","kind":"organization","description":"","email":"hellodataforgood@gmail.com","website":"http://www.dataforgood.fr","location":"France","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11797105?v=4","repositories_count":119,"last_synced_at":"2024-04-24T05:37:38.645Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dataforgoodfr","funding_links":[],"total_stars":338,"followers":241,"following":0,"created_at":"2022-11-12T03:41:41.220Z","updated_at":"2024-04-24T05:38:16.432Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr/repositories"},"tags":[]},"repo_metadata_updated_at":"2024-09-06T17:41:21.075Z","dependent_packages_count":0,"downloads":35,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":52.604952846349775,"dependent_repos_count":22.087784936889527,"dependent_packages_count":7.31012528119255,"stargazers_count":13.91644494564164,"forks_count":11.463403173956795,"docker_downloads_count":null,"average":21.476542236806058},"purl":"pkg:pypi/oco2peak","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/oco2peak","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/oco2peak","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/oco2peak/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-09-06T17:37:05.764Z","issues_count":0,"pull_requests_count":42,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1616319.7,"issues_closed_count":0,"pull_requests_closed_count":40,"pull_request_authors_count":6,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.16666666666666666,"merged_pull_requests_count":33,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/issues","maintainers":[{"login":"benoit-cty","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/benoit-cty"},{"login":"quentin-kamenda","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/quentin-kamenda"},{"login":"charlottedgt","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/charlottedgt"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oco2peak/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oco2peak/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oco2peak/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oco2peak/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/oco2peak/codemeta","maintainers":[{"uuid":"Benoit_Courty","login":"Benoit_Courty","name":null,"email":null,"url":null,"packages_count":6,"html_url":"https://pypi.org/user/Benoit_Courty/","role":null,"created_at":"2023-02-24T20:11:03.166Z","updated_at":"2023-02-24T20:11:03.166Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/Benoit_Courty/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":832718,"maintainers_count":355482,"namespaces_count":0,"keywords_count":270194,"github":"pypi","metadata":{"funded_packages_count":53084},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-04-05T05:05:39.368Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":621120,"full_name":"dataforgoodfr/batch7_satellite_ges","default_branch":"master","total_commits":326,"total_committers":15,"total_bot_commits":2,"total_bot_committers":1,"mean_commits":21.733333333333334,"dds":0.6809815950920246,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-01T15:02:08.074Z","last_synced_commit":"58982da9e4a81bcf5fb122118c6f148719c1267d","created_at":"2023-03-09T07:57:27.412Z","updated_at":"2026-04-01T15:01:10.060Z","committers":[{"name":"eliottrabin2","email":"63367920+eliottrabin2","login":"eliottrabin2","count":104},{"name":"trancept","email":"ben@benemie.fr","login":"benoit-cty","count":99},{"name":"ameliedubourg","email":"61688979+ameliedubourg","login":"ameliedubourg","count":39},{"name":"Quentin Kamenda","email":"qkamenda@gmail.com","login":"quentin-kamenda","count":34},{"name":"raphaeleadjerad","email":"raphaele.adjerad@gmail.com","login":"raphaeleadjerad","count":18},{"name":"charlottedgt","email":"61786776+charlottedgt","login":"charlottedgt","count":10},{"name":"trancept","email":"benoit@nowhere.com","login":null,"count":7},{"name":"unknown","email":"christian.marechal@dataforyou.fr","login":null,"count":3},{"name":"charlotte degot","email":"degot.charlotte@bcg.com","login":null,"count":3},{"name":"martin1tab","email":"61795801+martin1tab","login":"martin1tab","count":2},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Benoit","email":"benoit@test.com","login":null,"count":2},{"name":"portematthieu","email":"matthieu.porte@yahoo.fr","login":"portematthieu","count":1},{"name":"Quentin Kamenda","email":"quentin.kamenda@isen.yncrea.fr","login":"QuentinKamenda","count":1},{"name":"Arthur Imbert","email":"arthur.imbert.pro@gmail.com","login":"Henley13","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-03T00:00:08.542Z","repositories_count":6210805,"commits_count":927099953,"contributors_count":35798318,"owners_count":1145135,"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":"dataforgoodfr/batch7_satellite_ges","html_url":"https://github.com/dataforgoodfr/batch7_satellite_ges","last_synced_at":"2026-03-30T14:00:29.714Z","status":"error","issues_count":0,"pull_requests_count":42,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1616319.7,"issues_closed_count":0,"pull_requests_closed_count":40,"pull_request_authors_count":6,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.16666666666666666,"merged_pull_requests_count":33,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:37:04.878Z","updated_at":"2026-03-30T14:00:29.714Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2Fbatch7_satellite_ges/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":9},"issue_author_associations_count":{},"pull_request_author_associations_count":{"COLLABORATOR":26,"CONTRIBUTOR":13,"NONE":3},"issue_authors":{},"pull_request_authors":{"benoit-cty":19,"dependabot[bot]":9,"quentin-kamenda":5,"raphaeleadjerad":4,"christianmarechal":3,"charlottedgt":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-01T00:00:08.271Z","repositories_count":14037064,"issues_count":34584035,"pull_requests_count":113175312,"authors_count":11213073,"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":"benoit-cty","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/benoit-cty"},{"login":"quentin-kamenda","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/quentin-kamenda"},{"login":"charlottedgt","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/charlottedgt"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":1},"last_year":{"WatchEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:12.478Z","updated_at":"2023-09-21T19:57:12.478Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/Dockerfile","dependencies":[{"id":13857064557,"package_name":"python","ecosystem":"docker","requirements":"3.7.0","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose-dev.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:12.628Z","updated_at":"2023-09-21T19:57:12.628Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/docker-compose-dev.yml","dependencies":[]},{"ecosystem":"docker","filepath":"docker-compose.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:12.721Z","updated_at":"2023-09-21T19:57:12.721Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/docker-compose.yml","dependencies":[]},{"ecosystem":"pypi","filepath":"requirements-dev.txt","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:12.815Z","updated_at":"2023-09-21T19:57:12.815Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/requirements-dev.txt","dependencies":[{"id":13857064558,"package_name":"jupyterlab","ecosystem":"pypi","requirements":"\u003e=3","direct":true,"kind":"development","optional":false},{"id":13857064559,"package_name":"ipywidgets","ecosystem":"pypi","requirements":"\u003e=7.6","direct":true,"kind":"development","optional":false},{"id":13857064560,"package_name":"jupyter-dash","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064561,"package_name":"ray","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064562,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064563,"package_name":"twine","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064564,"package_name":"rtree","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064565,"package_name":"bs4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064566,"package_name":"dash","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064567,"package_name":"dash_bootstrap_components","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064568,"package_name":"dash_dangerously_set_inner_html","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064569,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064570,"package_name":"sklearn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064571,"package_name":"geopandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064572,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064573,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064574,"package_name":"folium","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064575,"package_name":"geopy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064576,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064577,"package_name":"shapely","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064578,"package_name":"python-swiftclient","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064579,"package_name":"python-keystoneclient","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064580,"package_name":"nbdev","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064581,"package_name":"fastprogress","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064582,"package_name":"gunicorn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":13857064583,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:12.997Z","updated_at":"2023-09-21T19:57:12.997Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/requirements.txt","dependencies":[{"id":13857064584,"package_name":"dash","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064585,"package_name":"dash_bootstrap_components","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064586,"package_name":"dash_dangerously_set_inner_html","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064587,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064588,"package_name":"sklearn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064589,"package_name":"geopandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064590,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064591,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064592,"package_name":"folium","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064593,"package_name":"geopy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064594,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064595,"package_name":"shapely","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064596,"package_name":"python-swiftclient","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064597,"package_name":"python-keystoneclient","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":13857064598,"package_name":"fastprogress","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:13.150Z","updated_at":"2023-09-21T19:57:13.150Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/setup.py","dependencies":[]},{"ecosystem":"rubygems","filepath":"docs/Gemfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:57:13.234Z","updated_at":"2023-09-21T19:57:13.234Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/docs/Gemfile","dependencies":[{"id":13857064599,"package_name":"github-pages","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13857064600,"package_name":"jekyll","ecosystem":"rubygems","requirements":"~\u003e 3.7","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"docs/Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2023-09-21T19:57:13.488Z","updated_at":"2023-09-21T19:57:13.488Z","repository_link":"https://github.com/dataforgoodfr/batch7_satellite_ges/blob/master/docs/Gemfile.lock","dependencies":[{"id":13857064601,"package_name":"activesupport","ecosystem":"rubygems","requirements":"4.2.11.1","direct":false,"kind":"runtime","optional":false},{"id":13857064602,"package_name":"addressable","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":13857064603,"package_name":"coffee-script","ecosystem":"rubygems","requirements":"2.4.1","direct":false,"kind":"runtime","optional":false},{"id":13857064604,"package_name":"coffee-script-source","ecosystem":"rubygems","requirements":"1.11.1","direct":false,"kind":"runtime","optional":false},{"id":13857064605,"package_name":"colorator","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":13857064606,"package_name":"commonmarker","ecosystem":"rubygems","requirements":"0.17.13","direct":false,"kind":"runtime","optional":false},{"id":13857064607,"package_name":"concurrent-ruby","ecosystem":"rubygems","requirements":"1.1.5","direct":false,"kind":"runtime","optional":false},{"id":13857064608,"package_name":"dnsruby","ecosystem":"rubygems","requirements":"1.61.3","direct":false,"kind":"runtime","optional":false},{"id":13857064609,"package_name":"em-websocket","ecosystem":"rubygems","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":13857064610,"package_name":"ethon","ecosystem":"rubygems","requirements":"0.12.0","direct":false,"kind":"runtime","optional":false},{"id":13857064611,"package_name":"eventmachine","ecosystem":"rubygems","requirements":"1.2.7","direct":false,"kind":"runtime","optional":false},{"id":13857064612,"package_name":"execjs","ecosystem":"rubygems","requirements":"2.7.0","direct":false,"kind":"runtime","optional":false},{"id":13857064613,"package_name":"faraday","ecosystem":"rubygems","requirements":"0.17.0","direct":false,"kind":"runtime","optional":false},{"id":13857064614,"package_name":"ffi","ecosystem":"rubygems","requirements":"1.11.3","direct":false,"kind":"runtime","optional":false},{"id":13857064615,"package_name":"forwardable-extended","ecosystem":"rubygems","requirements":"2.6.0","direct":false,"kind":"runtime","optional":false},{"id":13857064616,"package_name":"gemoji","ecosystem":"rubygems","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":13857064617,"package_name":"github-pages","ecosystem":"rubygems","requirements":"202","direct":false,"kind":"runtime","optional":false},{"id":13857064618,"package_name":"github-pages-health-check","ecosystem":"rubygems","requirements":"1.16.1","direct":false,"kind":"runtime","optional":false},{"id":13857064619,"package_name":"html-pipeline","ecosystem":"rubygems","requirements":"2.12.2","direct":false,"kind":"runtime","optional":false},{"id":13857064620,"package_name":"http_parser.rb","ecosystem":"rubygems","requirements":"0.6.0","direct":false,"kind":"runtime","optional":false},{"id":13857064621,"package_name":"i18n","ecosystem":"rubygems","requirements":"0.9.5","direct":false,"kind":"runtime","optional":false},{"id":13857064622,"package_name":"jekyll","ecosystem":"rubygems","requirements":"3.8.5","direct":false,"kind":"runtime","optional":false},{"id":13857064623,"package_name":"jekyll-avatar","ecosystem":"rubygems","requirements":"0.6.0","direct":false,"kind":"runtime","optional":false},{"id":13857064624,"package_name":"jekyll-coffeescript","ecosystem":"rubygems","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064625,"package_name":"jekyll-commonmark","ecosystem":"rubygems","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":13857064626,"package_name":"jekyll-commonmark-ghpages","ecosystem":"rubygems","requirements":"0.1.6","direct":false,"kind":"runtime","optional":false},{"id":13857064627,"package_name":"jekyll-default-layout","ecosystem":"rubygems","requirements":"0.1.4","direct":false,"kind":"runtime","optional":false},{"id":13857064628,"package_name":"jekyll-feed","ecosystem":"rubygems","requirements":"0.11.0","direct":false,"kind":"runtime","optional":false},{"id":13857064629,"package_name":"jekyll-gist","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":13857064630,"package_name":"jekyll-github-metadata","ecosystem":"rubygems","requirements":"2.12.1","direct":false,"kind":"runtime","optional":false},{"id":13857064631,"package_name":"jekyll-mentions","ecosystem":"rubygems","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":13857064632,"package_name":"jekyll-optional-front-matter","ecosystem":"rubygems","requirements":"0.3.0","direct":false,"kind":"runtime","optional":false},{"id":13857064633,"package_name":"jekyll-paginate","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":13857064634,"package_name":"jekyll-readme-index","ecosystem":"rubygems","requirements":"0.2.0","direct":false,"kind":"runtime","optional":false},{"id":13857064635,"package_name":"jekyll-redirect-from","ecosystem":"rubygems","requirements":"0.14.0","direct":false,"kind":"runtime","optional":false},{"id":13857064636,"package_name":"jekyll-relative-links","ecosystem":"rubygems","requirements":"0.6.0","direct":false,"kind":"runtime","optional":false},{"id":13857064637,"package_name":"jekyll-remote-theme","ecosystem":"rubygems","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":13857064638,"package_name":"jekyll-sass-converter","ecosystem":"rubygems","requirements":"1.5.2","direct":false,"kind":"runtime","optional":false},{"id":13857064639,"package_name":"jekyll-seo-tag","ecosystem":"rubygems","requirements":"2.5.0","direct":false,"kind":"runtime","optional":false},{"id":13857064640,"package_name":"jekyll-sitemap","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":13857064641,"package_name":"jekyll-swiss","ecosystem":"rubygems","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":13857064642,"package_name":"jekyll-theme-architect","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064643,"package_name":"jekyll-theme-cayman","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064644,"package_name":"jekyll-theme-dinky","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064645,"package_name":"jekyll-theme-hacker","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064646,"package_name":"jekyll-theme-leap-day","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064647,"package_name":"jekyll-theme-merlot","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064648,"package_name":"jekyll-theme-midnight","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064649,"package_name":"jekyll-theme-minimal","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064650,"package_name":"jekyll-theme-modernist","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064651,"package_name":"jekyll-theme-primer","ecosystem":"rubygems","requirements":"0.5.3","direct":false,"kind":"runtime","optional":false},{"id":13857064652,"package_name":"jekyll-theme-slate","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064653,"package_name":"jekyll-theme-tactile","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064654,"package_name":"jekyll-theme-time-machine","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064655,"package_name":"jekyll-titles-from-headings","ecosystem":"rubygems","requirements":"0.5.1","direct":false,"kind":"runtime","optional":false},{"id":13857064656,"package_name":"jekyll-watch","ecosystem":"rubygems","requirements":"2.2.1","direct":false,"kind":"runtime","optional":false},{"id":13857064657,"package_name":"jemoji","ecosystem":"rubygems","requirements":"0.10.2","direct":false,"kind":"runtime","optional":false},{"id":13857064658,"package_name":"kramdown","ecosystem":"rubygems","requirements":"1.17.0","direct":false,"kind":"runtime","optional":false},{"id":13857064659,"package_name":"liquid","ecosystem":"rubygems","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":13857064660,"package_name":"listen","ecosystem":"rubygems","requirements":"3.1.5","direct":false,"kind":"runtime","optional":false},{"id":13857064661,"package_name":"mercenary","ecosystem":"rubygems","requirements":"0.3.6","direct":false,"kind":"runtime","optional":false},{"id":13857064662,"package_name":"mini_portile2","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":13857064663,"package_name":"minima","ecosystem":"rubygems","requirements":"2.5.0","direct":false,"kind":"runtime","optional":false},{"id":13857064664,"package_name":"minitest","ecosystem":"rubygems","requirements":"5.13.0","direct":false,"kind":"runtime","optional":false},{"id":13857064665,"package_name":"multipart-post","ecosystem":"rubygems","requirements":"2.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064666,"package_name":"nokogiri","ecosystem":"rubygems","requirements":"1.13.5","direct":false,"kind":"runtime","optional":false},{"id":13857064667,"package_name":"octokit","ecosystem":"rubygems","requirements":"4.14.0","direct":false,"kind":"runtime","optional":false},{"id":13857064668,"package_name":"pathutil","ecosystem":"rubygems","requirements":"0.16.2","direct":false,"kind":"runtime","optional":false},{"id":13857064669,"package_name":"public_suffix","ecosystem":"rubygems","requirements":"3.1.1","direct":false,"kind":"runtime","optional":false},{"id":13857064670,"package_name":"racc","ecosystem":"rubygems","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":13857064671,"package_name":"rb-fsevent","ecosystem":"rubygems","requirements":"0.10.3","direct":false,"kind":"runtime","optional":false},{"id":13857064672,"package_name":"rb-inotify","ecosystem":"rubygems","requirements":"0.10.0","direct":false,"kind":"runtime","optional":false},{"id":13857064673,"package_name":"rouge","ecosystem":"rubygems","requirements":"3.11.0","direct":false,"kind":"runtime","optional":false},{"id":13857064674,"package_name":"ruby-enum","ecosystem":"rubygems","requirements":"0.7.2","direct":false,"kind":"runtime","optional":false},{"id":13857064675,"package_name":"ruby_dep","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":13857064676,"package_name":"rubyzip","ecosystem":"rubygems","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":13857064677,"package_name":"safe_yaml","ecosystem":"rubygems","requirements":"1.0.5","direct":false,"kind":"runtime","optional":false},{"id":13857064678,"package_name":"sass","ecosystem":"rubygems","requirements":"3.7.4","direct":false,"kind":"runtime","optional":false},{"id":13857064679,"package_name":"sass-listen","ecosystem":"rubygems","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":13857064680,"package_name":"sawyer","ecosystem":"rubygems","requirements":"0.8.2","direct":false,"kind":"runtime","optional":false},{"id":13857064681,"package_name":"terminal-table","ecosystem":"rubygems","requirements":"1.8.0","direct":false,"kind":"runtime","optional":false},{"id":13857064682,"package_name":"thread_safe","ecosystem":"rubygems","requirements":"0.3.6","direct":false,"kind":"runtime","optional":false},{"id":13857064683,"package_name":"typhoeus","ecosystem":"rubygems","requirements":"1.3.1","direct":false,"kind":"runtime","optional":false},{"id":13857064684,"package_name":"tzinfo","ecosystem":"rubygems","requirements":"1.2.5","direct":false,"kind":"runtime","optional":false},{"id":13857064685,"package_name":"unicode-display_width","ecosystem":"rubygems","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":13857064686,"package_name":"bundler","ecosystem":"rubygems","requirements":"2.0.2","direct":false,"kind":"runtime","optional":false}]}],"score":9.363490551469857,"created_at":"2023-09-11T14:52:10.923Z","updated_at":"2026-04-05T17:00:30.139Z","avatar_url":"https://github.com/dataforgoodfr.png","language":"Jupyter Notebook","category":"Emissions","sub_category":"Emission Observation and Modeling","monthly_downloads":35,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"# OCO-2 CO\u003csub\u003e2\u003c/sub\u003e peak detector\n\n\n\n## General presentation\n\u003e The goal of our project is to localize CO\u003csub\u003e2\u003c/sub\u003e emissions on Earth based on the the carbon concentration data measured by the OCO-2 Satellite from the NASA. \n\nWe are working with:- Matthieu Porte, from IGN who submit the projet- Marie Heckmann, from the French Ministry of Ecology\n- Frederic Chevallier, from IPSL, one of the author of [Observing  carbon  dioxide  emissions over  China’s  cities with  the Orbiting Carbon Observatory-2](https://www.atmos-chem-phys-discuss.net/acp-2020-123/acp-2020-123.pdf)\n\n## What we have as input\n\n**1/ OCO-2 Satellite data**\n\n\n\nThe OCO-2 Satellite (Orbiting Carbon Observatory) from the NASA orbits around Earth and measures the CO\u003csub\u003e2\u003c/sub\u003e concentration in the atmosphere.  \n\nHere is a visualisation of the CO\u003csub\u003e2\u003c/sub\u003e concentration mesured by the OCO-2 satellite in December 2019. \n![CO2_ concentration_OCO2](notebooks/assets/CO2_emissions_Edgar_2018.png)\n\nThe satellite uses spectrometers to detect CO\u003csub\u003e2\u003c/sub\u003e in the atmosphere, as shown in the image bellow.\n\n![OCO2 spectrometers](https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Artist_rendition_of_the_CO2_column_that_OCO-2_will_see.jpg/321px-Artist_rendition_of_the_CO2_column_that_OCO-2_will_see.jpg)\n\n[source](https://commons.wikimedia.org/wiki/File:Artist_rendition_of_the_CO2_column_that_OCO-2_will_see.jpg)\n\nMore info here : \u003chttps://oco.jpl.nasa.gov/instrument/\u003e\n\nThere are some limitations to the satellite measurement of the CO\u003csub\u003e2\u003c/sub\u003e concentration:\n- The satellite can not see through clouds or fog;\n- It does not work the same over ground or water;\n- The swath of the satellite is quite narrow (only 10km), as shown in the image bellow; \n- As the satellite orbits the Earth, the coverage is partial.\n\n![OCO2 spectrometers](https://scx1.b-cdn.net/csz/news/800/2020/3-nasasatellit.jpg)\n!!\n\nMore info on the mission on \u003chttps://earth.esa.int/web/eoportal/satellite-missions/o/oco-2\u003e.\n\nThe NASA made a global CO\u003csub\u003e2\u003c/sub\u003e image (see bellow), however this is an extrapolation of the data, and not what the satellite really see.\n\n![NASA Global CO\u003csub\u003e2\u003c/sub\u003e](https://www.jpl.nasa.gov/images/oco/20090219/sinks-browse.jpg)\n\n**2/ Data on known CO\u003csub\u003e2\u003c/sub\u003e emissions**\n\n- The Emissions Database for Global Atmospheric Research (EDGAR) on CO\u003csub\u003e2\u003c/sub\u003e emissions. For the energy related sectors the activity data is mainly based on the energy balance statistics of IEA (2017), whereas the activity data for the agricultural sectors originates mainly from FAO (2018). The spatial allocation of emissions on the grid is made based on spatial proxy datasets with the location of energy and manufacturing facilities, road networks, shipping routes, human and animal population density and agricultural land use, that vary over time. \nSource : https://edgar.jrc.ec.europa.eu/overview.php?v=50_GHG\n\n![CO2_emissions_Edgar_2018](https://user-images.githubusercontent.com/61688979/79775474-9637d180-8334-11ea-9712-274a11356aea.PNG)\n\n- The World Resource Institute provides a list of power plants producing electricity based on different primary energies. We filtered this list to keep only the fossil primary energies (gas, oil and coal), that release CO\u003csub\u003e2\u003c/sub\u003e during their combustion.\nSource: http://datasets.wri.org/dataset/globalpowerplantdatabase\n\n![power_plant_emissions_2017](notebooks/assets/power_plant_emissions_2017.png)\n\n- Other sources of CO\u003csub\u003e2\u003c/sub\u003e emissions are under study. \n\n## What we do\n\n\nFirst approach: peak detection from O-CO2 \u0026 inference from inventory data\n\n- Detect peak in O-CO2 data, 2 step methodology\n\t- Step 1: Identification of local ‘peaks’ through Gaussian fits (curve_fit) ; Taking into account intrinsic complexity of O-CO2 data, notably: High variance across ‘background’ CO\u003csub\u003e2\u003c/sub\u003e level across the globe, narrowness \u0026 incompleteness of plumes observations (due to clouds / fogs / …), ...\n\t- Step 2: Elimination of irrelevant peaks to keep only ‘true’ anomalies: So far, through a quite drastic \u0026 manual methodology, with rules to keep only clear Gaussians ; Objective to improve this part with algo-based anomaly detection \n\n- Aggregate known sources of CO\u003csub\u003e2\u003c/sub\u003e from inventory data: Using EDGAR \u0026 World Resource Institute\n\n- Find nearest inventory from peak position, using the wind vector.\n\n- Compare peak to known sources emissions and confirm them\n\nSecond approach: supervised model to learn to detect peaks from inventory data [not started]\n- Use areas where inventory data are complete to let a supervised model learn peaks in OCO2 data\n\nOn top: dynamic visualization of data\n- Display the result on a comprehensive map, crossing satellite \u0026 inventory data\n\n## What we have achieved\n\n - Gather data from EDGAR and World Resource Institute and plotted them on a map.\n - Get raw satellite data from NASA and merge the to monthly dataset with the data we need.\n - Compute a Gaussian curve fit over each orbit and save the results.\n - Interactive dasboard to share our work on the web.\n \nHere is a sample of a peak witth the gaussian found :\n\n![Gaussian Peak](notebooks/assets/gaussian_peak.png)\n\nAnd the result on the website :\n\n![OCO2 Peak app](notebooks/assets/screen-shot.png)\n\n\n\n## We need help\n\n- Better peak detection: So far, we are fitting Gaussian curves to detect relevant peaks. 2 issues:\n    - We use SciKit Learn curve_fit. Do you know a better algorithme or how to tune parameters of curve_fit ?\n    - We are looking at other methodologies to detect anomalies (our 'peaks') in the concentrations  - any idea? \n- Wind modeling to estimate emission from detected concentration - any idea? (inverting the Gaussian plume model)\n\n\n## Git directories structure\n* /dataset contains a sample of OCO-2 data and inventory data; _**Important**_ : The whole datas are in a shared Open Stack Storage, not in the Github.\n* /notebooks contains the notebooks made by the team;\n* /pipeline contains the scripts used to process the NASA's data.\n* /oco2peak containts the modules\n\n**Warning** : The project use NBDev so the doc (including this README !) and the modules ar generated from Notebooks. So you have only to edit the Notebooks.\n\n## Open Stack directories structure\n\nWe do not store the original OCO-2 files from NASA.\n\n* /emissions/ contains all the potential source of emissions : factories, power plants, cities...\n* /soudings/ contains CSV of the raw features extracted from NASA NC4 files.\n* /peaks-detected/ contains all the peak found in the satellite orbit datas.\n* /peaks-detected-details/ contains one JSON file of the full data for all detected peak\n\n## Install\n\n### Python Package Only\nIf you are interested to use only our modules for your own project :\n`pip install oco2peak`\n\n### With Docker\n\n#### For use only\n`\ndocker-compose up\n`\n\nFront on http://localhost:7901\n\n#### For dev\n\n`docker-compose -f docker-compose-dev.yml up`\n\n- Front on http://localhost:7901\n- Jupyter Lab on http://localhost:7988\n\n### Dataset access\n\nYou need a config.json with token to your OpenStack:\n```json\n{\n    \"swift_storage\": {\n        \"user\":\"B..r\",\n        \"key\":\"ep..ca\",\n        \"auth_url\":\"https://auth.cloud.ovh.net/v3/\",\n        \"tenant_name\":\"8..8\",\n        \"auth_version\":\"3\",\n        \"options\" : {\n            \"region_name\": \"GRA\"\n        },\n        \"base_url\" : \"https://storage.gra.cloud.ovh.net/v1/AUTH_2...d/oco2/\"\n    }\n}\n```\n\n```python\nconfig = '../configs/config.json'\ndatasets = Datasets(config)\ndatasets.get_files_urls(prefix=\"/datasets/oco-2/peaks-and-invent/\", pattern='1908')\n```\n\n\n\n\n    ['https://storage.gra.cloud.ovh.net/v1/AUTH_2aaacef8e88a4ca897bb93b984bd04dd/oco2//datasets/oco-2/peaks-and-invent/peaks_and_invent_1908.csv']\n\n\n\n```python\ndatasets.get_files_urls(prefix=\"/map/peaks_map/\", pattern='1908')\n```\n\n\n\n\n    ['https://storage.gra.cloud.ovh.net/v1/AUTH_2aaacef8e88a4ca897bb93b984bd04dd/oco2//map/peaks_map/peaks_capture_map_1908.html']\n\n\n\n### Upload a file\n\n```python\ndatasets.upload(mask='../*.md', prefix=\"/Trash/\",content_type='text/text')\n```\n\n\n\n\u003cdiv\u003e\n    \u003cstyle\u003e\n        /* Turns off some styling */\n        progress {\n            /* gets rid of default border in Firefox and Opera. */\n            border: none;\n            /* Needs to be in here for Safari polyfill so background images work as expected. */\n            background-size: auto;\n        }\n        .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n            background: #F44336;\n        }\n    \u003c/style\u003e\n  \u003cprogress value='1' class='' max='1', style='width:300px; height:20px; vertical-align: middle;'\u003e\u003c/progress\u003e\n  100.00% [1/1 00:00\u003c00:00]\n\u003c/div\u003e\n\n\n\n\u003cdiv\u003e\n    \u003cstyle\u003e\n        /* Turns off some styling */\n        progress {\n            /* gets rid of default border in Firefox and Opera. */\n            border: none;\n            /* Needs to be in here for Safari polyfill so background images work as expected. */\n            background-size: auto;\n        }\n        .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n            background: #F44336;\n        }\n    \u003c/style\u003e\n  \u003cprogress value='3' class='' max='3', style='width:300px; height:20px; vertical-align: middle;'\u003e\u003c/progress\u003e\n  100.00% [3/3 00:01\u003c00:00]\n\u003c/div\u003e\n\n\n\n## Build docs and modules\n\n`make all`\n\nOr if you are using Docker:\n\n`docker exec -it batch7_satellite_ges_oco2-dev_1 make all`\n\n\n# Process NASA Files\n\nIn `docker-compose-dev.yml` change `source: /media/NAS-Divers/dev/datasets/` to the path to you NC4 files.\n\nThen run :\n`docker-compose -f docker-compose-dev.yml up`\n\nIn another terminal, run:\n\n```bash\ndocker exec -it batch7_satellite_ges_oco2-dev_1 /bin/bash\npython pipeline/01_extract_nc4_to_csv.py\npython pipeline/02_find_peak_in_all_files.py\npython pipeline/03_upload_json_to_the_cloud.py\n```\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","measur","archiving","transforms","animals","observation","conversion","compose","projection","generic"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20220","html_url":"https://ost.ecosyste.ms/projects/20220"}