{"id":326385,"name":"Satip","description":"A library for satellite image processing providing all of the functionality necessary for retrieving, and storing EUMETSAT data.","url":"https://github.com/openclimatefix-archives/satip","last_synced_at":"2026-04-06T00:30:15.814Z","repository":{"id":37445490,"uuid":"309434883","full_name":"openclimatefix-archives/Satip","owner":"openclimatefix-archives","description":"Satip contains the code necessary for retrieving, transforming and storing EUMETSAT data","archived":true,"fork":false,"pushed_at":"2025-10-06T17:49:28.000Z","size":489409,"stargazers_count":44,"open_issues_count":1,"forks_count":34,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-02T01:48:36.109Z","etag":null,"topics":["eumetsat","gis","nowcasting","python","satellite-imagery"],"latest_commit_sha":null,"homepage":"https://satip.readthedocs.io/","language":"Jupyter Notebook","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/openclimatefix-archives.png","metadata":{"funding":{"github":["openclimatefix"],"patreon":null,"open_collective":"openclimatefix","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null},"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-02T16:49:59.000Z","updated_at":"2025-10-09T15:58:39.000Z","dependencies_parsed_at":"2024-02-04T07:44:39.866Z","dependency_job_id":"9db6bb3d-b2bb-467d-92b0-d1857ba3e4bf","html_url":"https://github.com/openclimatefix-archives/Satip","commit_stats":{"total_commits":1213,"total_committers":23,"mean_commits":52.73913043478261,"dds":0.7394888705688376,"last_synced_commit":"38854460b47ad34333e5b6c0235f530bf1422119"},"previous_names":["openclimatefix-archives/satip"],"tags_count":355,"template":false,"template_full_name":"fastai/nbdev_template","purl":"pkg:github/openclimatefix-archives/Satip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2FSatip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2FSatip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2FSatip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2FSatip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openclimatefix-archives","download_url":"https://codeload.github.com/openclimatefix-archives/Satip/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2FSatip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30655801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-18T02:48:56.676Z","status":"ssl_error","status_checked_at":"2026-03-18T02:48:55.747Z","response_time":104,"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":"openclimatefix-archives","name":"Open Climate Fix (Archives)","uuid":"237017945","kind":"organization","description":"Archived repositories from the Open Climate Fix organisation","email":"info@openclimatefix.org","website":"https://openclimatefix.org","location":"United Kingdom","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/237017945?v=4","repositories_count":1,"last_synced_at":"2025-10-10T00:33:46.330Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/openclimatefix-archives","funding_links":[],"total_stars":44,"followers":0,"following":0,"created_at":"2025-10-10T00:33:46.352Z","updated_at":"2025-10-10T00:33:46.352Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openclimatefix-archives","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openclimatefix-archives/repositories"},"packages":[],"commits":{"id":11481558,"full_name":"openclimatefix-archives/satip","default_branch":"master","total_commits":1300,"total_committers":24,"total_bot_commits":95,"total_bot_committers":3,"mean_commits":54.166666666666664,"dds":0.7338461538461538,"past_year_total_commits":4,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":2.0,"past_year_dds":0.5,"last_synced_at":"2026-03-24T03:03:34.490Z","last_synced_commit":"3dbd968673446372a0626a48c8730b179136190e","created_at":"2025-10-10T00:31:38.274Z","updated_at":"2026-03-24T03:01:56.907Z","committers":[{"name":"BumpVersion Action","email":"bumpversion@github-actions","login":null,"count":346},{"name":"Jacob Bieker","email":"jacob@bieker.tech","login":"jacobbieker","count":264},{"name":"AyrtonB","email":"AyrtonBourn@Outlook.com","login":"AyrtonB","count":165},{"name":"peterdudfield","email":"peter.dudfield@hotmail.com","login":"peterdudfield","count":161},{"name":"Rabscuttler","email":"laurence.watson@gmail.com","login":"Rabscuttler","count":80},{"name":"Jacqueline James","email":"108654780+Jacqueline-J","login":"Jacqueline-J","count":73},{"name":"pre-commit-ci[bot]","email":"66853113+pre-commit-ci[bot]","login":"pre-commit-ci[bot]","count":57},{"name":"Notger Heinz","email":"notger.heinz@gmail.com","login":"notger","count":34},{"name":"Jack Kelly","email":"jack@openclimatefix.org","login":"JackKelly","count":33},{"name":"allcontributors[bot]","email":"46447321+allcontributors[bot]","login":"allcontributors[bot]","count":27},{"name":"devsjc","email":"47188100+devsjc","login":"devsjc","count":22},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":11},{"name":"Adimanv","email":"adityamsawant07@gmail.com","login":"ADIMANV","count":6},{"name":"peach280","email":"vaishnavibhandari.128@gmail.com","login":"peach280","count":5},{"name":"Zhenbang Feng","email":"jasonfen@usc.edu","login":"JasonFengGit","count":4},{"name":"TomPughe","email":"147526382+TomPughe","login":"TomPughe","count":3},{"name":"Richa","email":"41283476+14Richa","login":"14Richa","count":2},{"name":"Aryan Bhosale","email":"36108149+aryanbhosale","login":"aryanbhosale","count":1},{"name":"Azah Norbline","email":"azahnorbline@gmail.com","login":"norbline","count":1},{"name":"Matthew Duffin","email":"mduffin95","login":"mduffin95","count":1},{"name":"Simon Lemieux","email":"1105380+simlmx","login":"simlmx","count":1},{"name":"Suleman Karigar","email":"37236131+suleman1412","login":"suleman1412","count":1},{"name":"jsbaasi","email":"72830904+jsbaasi","login":"jsbaasi","count":1},{"name":"ludobegins","email":"ludo.beghin@gmail.com","login":"ludobegins","count":1}],"past_year_committers":[{"name":"Peter Dudfield","email":"34686298+peterdudfield","login":"peterdudfield","count":2},{"name":"BumpVersion Action","email":"bumpversion@github-actions","login":null,"count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2Fsatip/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-31T00:00:13.296Z","repositories_count":6205850,"commits_count":927728038,"contributors_count":35814127,"owners_count":1143211,"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":"openclimatefix-archives/satip","html_url":"https://github.com/openclimatefix-archives/satip","last_synced_at":"2025-10-14T02:44:31.302Z","status":"active","issues_count":0,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"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":"2025-10-10T00:31:38.435Z","updated_at":"2025-10-14T02:44:31.302Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2Fsatip","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclimatefix-archives%2Fsatip/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{},"issue_authors":{},"pull_request_authors":{},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-31T00:00:10.865Z","repositories_count":14009506,"issues_count":34536892,"pull_requests_count":112927270,"authors_count":11212570,"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":[],"active_maintainers":[]},"events":{"total":{},"last_year":{}},"keywords":["eumetsat","gis","nowcasting","python","satellite-imagery"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/workflows.yaml","sha":null,"kind":"manifest","created_at":"2023-02-19T11:45:50.462Z","updated_at":"2023-02-19T11:45:50.462Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/.github/workflows/workflows.yaml","dependencies":[{"id":7787106356,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7787106359,"package_name":"iterative/setup-cml","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7787106361,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7787106363,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-02-19T11:45:50.556Z","updated_at":"2023-02-19T11:45:50.556Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/Dockerfile","dependencies":[{"id":7787106789,"package_name":"ubuntu","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-02-19T11:45:50.614Z","updated_at":"2023-02-19T11:45:50.614Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/docs/requirements.txt","dependencies":[{"id":7787107136,"package_name":"readthedocs-custom-steps","ecosystem":"pypi","requirements":"==0.5.1","direct":true,"kind":"runtime","optional":false},{"id":7787107137,"package_name":"jinja2","ecosystem":"pypi","requirements":"\u003c3.1.0","direct":true,"kind":"runtime","optional":false},{"id":7787107139,"package_name":"pydoc-markdown","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-02-19T11:45:50.634Z","updated_at":"2023-02-19T11:45:50.634Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/requirements.txt","dependencies":[{"id":7787107641,"package_name":"bottleneck","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107652,"package_name":"fsspec","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107653,"package_name":"numcodecs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107699,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.23.0","direct":true,"kind":"runtime","optional":false},{"id":7787107703,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.1.4","direct":true,"kind":"runtime","optional":false},{"id":7787107706,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107711,"package_name":"satpy","ecosystem":"pypi","requirements":"==0.36.0","direct":true,"kind":"runtime","optional":false},{"id":7787107745,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107746,"package_name":"xarray","ecosystem":"pypi","requirements":"==2022.3.0","direct":true,"kind":"runtime","optional":false},{"id":7787107747,"package_name":"zarr","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107748,"package_name":"imagecodecs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107749,"package_name":"pyorbital","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107750,"package_name":"netCDF4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107771,"package_name":"click","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107774,"package_name":"s3fs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107776,"package_name":"nowcasting_datamodel","ecosystem":"pypi","requirements":"\u003e=0.0.36","direct":true,"kind":"runtime","optional":false},{"id":7787107778,"package_name":"h5netcdf","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107826,"package_name":"psutil","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107829,"package_name":"eumdac","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7787107859,"package_name":"pyresample","ecosystem":"pypi","requirements":"==1.25.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ghcr-release.yaml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:28:16.177Z","updated_at":"2023-09-21T19:28:16.177Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/.github/workflows/ghcr-release.yaml","dependencies":[{"id":13856694302,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856694303,"package_name":"docker/login-action","ecosystem":"actions","requirements":"f054a8b539a109f9f41c372932f1ae047eff08c9","direct":true,"kind":"composite","optional":false},{"id":13856694304,"package_name":"docker/metadata-action","ecosystem":"actions","requirements":"98669ae865ea3cffbcbaa878cf57c20bbf1c6c38","direct":true,"kind":"composite","optional":false},{"id":13856694305,"package_name":"docker/build-push-action","ecosystem":"actions","requirements":"ad44023a93711e3deb337508980b4b5e9bcdc5dc","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release.yaml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:28:16.861Z","updated_at":"2023-09-21T19:28:16.861Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/.github/workflows/release.yaml","dependencies":[]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:28:20.157Z","updated_at":"2023-09-21T19:28:20.157Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2024-02-04T07:44:34.728Z","updated_at":"2024-02-04T07:44:34.728Z","repository_link":"https://github.com/openclimatefix-archives/Satip/blob/main/environment.yml","dependencies":[{"id":16016551923,"package_name":"alembic","ecosystem":"pypi","requirements":"==1.13.0","direct":true,"kind":"runtime","optional":false},{"id":16016551924,"package_name":"blosc2","ecosystem":"pypi","requirements":"==2.3.2","direct":true,"kind":"runtime","optional":false},{"id":16016551925,"package_name":"eumdac","ecosystem":"pypi","requirements":"==2.1.0","direct":true,"kind":"runtime","optional":false},{"id":16016552119,"package_name":"freezegun","ecosystem":"pypi","requirements":"==1.3.1","direct":true,"kind":"runtime","optional":false},{"id":16016552147,"package_name":"greenlet","ecosystem":"pypi","requirements":"==3.0.1","direct":true,"kind":"runtime","optional":false},{"id":16016552148,"package_name":"imagecodecs","ecosystem":"pypi","requirements":"==2023.9.18","direct":true,"kind":"runtime","optional":false},{"id":16016552394,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":16016552395,"package_name":"mako","ecosystem":"pypi","requirements":"==1.3.0","direct":true,"kind":"runtime","optional":false},{"id":16016552428,"package_name":"ndindex","ecosystem":"pypi","requirements":"==1.7","direct":true,"kind":"runtime","optional":false},{"id":16016552521,"package_name":"nowcasting-datamodel","ecosystem":"pypi","requirements":"==1.5.26","direct":true,"kind":"runtime","optional":false},{"id":16016552806,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.23.2","direct":true,"kind":"runtime","optional":false},{"id":16016552807,"package_name":"ocf-blosc2","ecosystem":"pypi","requirements":"==0.0.4","direct":true,"kind":"runtime","optional":false},{"id":16016552834,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.3.0","direct":true,"kind":"runtime","optional":false},{"id":16016552835,"package_name":"psycopg2-binary","ecosystem":"pypi","requirements":"==2.9.9","direct":true,"kind":"runtime","optional":false},{"id":16016552836,"package_name":"py-cpuinfo","ecosystem":"pypi","requirements":"==9.0.0","direct":true,"kind":"runtime","optional":false},{"id":16016552837,"package_name":"pydantic","ecosystem":"pypi","requirements":"==1.10.10","direct":true,"kind":"runtime","optional":false},{"id":16016552838,"package_name":"pytest","ecosystem":"pypi","requirements":"==7.4.3","direct":true,"kind":"runtime","optional":false},{"id":16016552839,"package_name":"sqlalchemy","ecosystem":"pypi","requirements":"==2.0.23","direct":true,"kind":"runtime","optional":false},{"id":16016552840,"package_name":"structlog","ecosystem":"pypi","requirements":"==23.2.0","direct":true,"kind":"runtime","optional":false}]}],"score":6.984716320118265,"created_at":"2025-10-10T00:31:35.549Z","updated_at":"2026-04-06T00:30:15.826Z","avatar_url":"https://github.com/openclimatefix-archives.png","language":"Jupyter Notebook","category":"Sustainable Development","sub_category":"Environmental Satellites","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Satip\n\n⚠️ Note this repo is deprecated in favour of [satellite-consumer](https://github.com/openclimatefix/satellite-consumer)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-14-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n[![PyPI version](https://badge.fury.io/py/satip.svg)](https://badge.fury.io/py/satip)\n\n[![codecov](https://codecov.io/gh/openclimatefix/Satip/branch/main/graph/badge.svg?token=GTQDR2ZZ2S)](https://codecov.io/gh/openclimatefix/Satip)\n\n\u003e Satip is a library for \u003cb\u003esat\u003c/b\u003eellite \u003cb\u003ei\u003c/b\u003emage \u003cb\u003ep\u003c/b\u003erocessing, and provides all of the functionality necessary for retrieving, and storing EUMETSAT data\n\n\u003cbr\u003e\n\n\n### Installation\n\nTo install the `satip` library please run:\n\n```bash\npip install satip\n```\n\nOr if you're working in the development environment you can run the following from the directory root:\n\n```bash\npip install -e .\n```\n\n#### Conda\n\nOr, if you want to use `conda` from a cloned Satip repository:\n\n```bash\nconda env create -f environment.yml\nconda activate satip\npip install -e .\n```\n\nIf you plan to work on the development of Satip then also consider installing these development tools:\n\n```bash\nconda install pytest flake8 jedi mypy black pre-commit\npre-commit install\n```\n\n### Development Environment\n\nIn order to contribute:\n- it's recommended that you use a Linux-based OS. This is currently used for all CI/CD testing, production, and development.\n- At the time of writing (21-Dec-23), the Python version used is 3.11 with work being done to update to Python 3.12. This is subject to updates over time.\n\n## Operation\n\n### Getting your own API key\n\nIn order to contribute to development or just test-run some scripts, you will need your own Eumetsat-API-key. Please follow these steps:\n\n1. Go to https://eoportal.eumetsat.int and register an account.\n2. You can log in and go to https://data.eumetsat.int/ to check available data services. From there go to your profile and choose the option \"API key\" or go to https://api.eumetsat.int/api-key/ directly.\n3. Please make sure that you added the key and secret to your user's environment variables.\n\n### Downloading EUMETSAT Data\n\nWe have moved this to [here](https://github.com/openclimatefix/dagster-dags/blob/main/containers/sat/download_process_sat.py)\n\n### Converting Native files to Zarr\n`scripts/convert_native_to_zarr.py` converts EUMETSAT `.nat` files to Zarr datasets, using very mild lossy [JPEG-XL](https://en.wikipedia.org/wiki/JPEG_XL) compression. (JPEG-XL is the \"new kid on the block\" of image compression algorithms). JPEG-XL makes the files about a quarter the size of the equivalent `bz2` compressed files, whilst the images are visually indistinguishable. JPEG-XL cannot represent NaNs so NaNs. JPEG-XL understands float32 values in the range `[0, 1]`. NaNs are encoded as the value `0.025`. All \"real\" values are in the range `[0.075, 1]`. We leave a gap between \"NaNs\" and \"real values\" because there is very slight \"ringing\" around areas of constant value (see [this comment for more details](https://github.com/openclimatefix/Satip/issues/67#issuecomment-1036456502)). Use `satip.jpeg_xl_float_with_nans.JpegXlFloatWithNaNs` to decode the satellite data. This class will reconstruct the NaNs and rescale the data to the range `[0, 1]`.\n\n\n## Running in Production\n\nThe live service uses `app.py` as the entrypoint for running the live data download for OCF's forecasting service, and has a few configuration options, configurable by command line argument or environment variable.\n\n`--api-key` or `API_KEY` is the EUMETSAT API key\n\n`--api-secret` or `API_SECRET` is the EUMETSAT API secret\n\n`--save-dir` or `SAVE_DIR` is the top level directory to save the output files, a `latest` subfolder will be added to that directory to contain the latest data\n\n`--history` or `HISTORY` is the amount of history timesteps to use in the `latest.zarr` files\n\n`--db-url` or `DB_URL` is the URL to the database to save to when a run has finished\n\n`--use-rescaler` or `USE_RESCALER` tells whether to rescale the satellite data to between 0 and 1 or not when saving to disk. Primarily used as backwards compatibility for the current production models, all new training and production Zarrs should use the rescaled data.\n\n`--use-iodc` or `USE_IODC` is an option to get the IODC satellite data\n\n## Testing\n\nTo run tests, simply run ```pytest .``` from the root of the repository. To generate the test plots, run ```python scripts/generate_test_plots.py```.\n\n### Environmental Variables\nSome tests require environmental variables to be set that would be passed in by command line argument when running the code in production. These are as follows:\n - `EUMETSAT_USER_KEY`: the EUMETSAT API key\n - `EUMETSAT_USER_SECRET`: the EUMETSAT API secret\n\n These can be added using the `export` command in your shell environment. To add these permanently, the export statements can be added to the configuration file for the shell environment (e.g. \"~/.bashrc\" if using bash).\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.jacobbieker.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7170359?v=4?s=100\" width=\"100px;\" alt=\"Jacob Bieker\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJacob Bieker\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=jacobbieker\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://jack-kelly.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/460756?v=4?s=100\" width=\"100px;\" alt=\"Jack Kelly\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJack Kelly\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=JackKelly\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/AyrtonB\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/29051639?v=4?s=100\" width=\"100px;\" alt=\"Ayrton Bourn\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAyrton Bourn\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=AyrtonB\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://laurencewatson.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1125376?v=4?s=100\" width=\"100px;\" alt=\"Laurence Watson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLaurence Watson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=Rabscuttler\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/notger\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1180540?v=4?s=100\" width=\"100px;\" alt=\"Notger Heinz\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNotger Heinz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=notger\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/peterdudfield\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/34686298?v=4?s=100\" width=\"100px;\" alt=\"Peter Dudfield\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePeter Dudfield\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=peterdudfield\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/norbline\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/39647420?v=4?s=100\" width=\"100px;\" alt=\"Azah Norbline\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAzah Norbline\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=norbline\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/TomPughe\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/147526382?v=4?s=100\" width=\"100px;\" alt=\"Tom Pughe\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTom Pughe\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=TomPughe\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://huggingface.co/64bits\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/40121574?v=4?s=100\" width=\"100px;\" alt=\"Zhenbang Feng\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZhenbang Feng\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=JasonFengGit\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jsbaasi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/72830904?v=4?s=100\" width=\"100px;\" alt=\"jsbaasi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejsbaasi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=jsbaasi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/suleman1412\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/37236131?v=4?s=100\" width=\"100px;\" alt=\"Suleman Karigar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSuleman Karigar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=suleman1412\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://richasharma.co.in/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/41283476?v=4?s=100\" width=\"100px;\" alt=\"Richa\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRicha\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/commits?author=14Richa\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://phinate.github.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/49782545?v=4?s=100\" width=\"100px;\" alt=\"Nathan Simpson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNathan Simpson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/openclimatefix/Satip/issues?q=author%3Aphinate\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/peach280\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/187241561?v=4?s=100\" width=\"100px;\" alt=\"peach280\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003epeach280\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-peach280\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":["https://github.com/sponsors/openclimatefix","https://opencollective.com/openclimatefix"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["dbml","pvsite","solar","pvoutput","forecasting-models","graph-neural-networks","weather","gan","nowcasting-models","nowcasting-precipitation"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/326385","html_url":"https://ost.ecosyste.ms/projects/326385"}