{"id":13948665,"url":"https://github.com/ghiggi/gpm_api","last_synced_at":"2025-12-25T16:17:38.257Z","repository":{"id":64511955,"uuid":"286664485","full_name":"ghiggi/gpm_api","owner":"ghiggi","description":"A python package to download and analyze the Global Precipitation Measurement Mission (GPM) data archive","archived":false,"fork":false,"pushed_at":"2025-06-23T21:06:52.000Z","size":141369,"stargazers_count":67,"open_issues_count":3,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-29T22:05:40.895Z","etag":null,"topics":["analysis-ready-data","earth-observation","eumetsat","gpm","jaxa","nasa","noaa","open-data","passive-microwave","precipitation","python","radar","rainfall","reflectivity","remote-sensing","reproducible-research","satellite-data","snowfall","trmm","xarray"],"latest_commit_sha":null,"homepage":"https://gpm-api.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/ghiggi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-11T06:30:57.000Z","updated_at":"2025-06-24T08:51:37.000Z","dependencies_parsed_at":"2023-09-21T19:30:01.320Z","dependency_job_id":"245610d7-644f-4661-8a71-7b8698e63745","html_url":"https://github.com/ghiggi/gpm_api","commit_stats":{"total_commits":598,"total_committers":9,"mean_commits":66.44444444444444,"dds":"0.34448160535117056","last_synced_commit":"5f030ab3281414c0a809cb4c4992814045d26764"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/ghiggi/gpm_api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiggi%2Fgpm_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiggi%2Fgpm_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiggi%2Fgpm_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiggi%2Fgpm_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghiggi","download_url":"https://codeload.github.com/ghiggi/gpm_api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiggi%2Fgpm_api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262862409,"owners_count":23376405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis-ready-data","earth-observation","eumetsat","gpm","jaxa","nasa","noaa","open-data","passive-microwave","precipitation","python","radar","rainfall","reflectivity","remote-sensing","reproducible-research","satellite-data","snowfall","trmm","xarray"],"created_at":"2024-08-08T05:01:27.466Z","updated_at":"2025-12-25T16:17:33.202Z","avatar_url":"https://github.com/ghiggi.png","language":"Jupyter Notebook","readme":"\u003cdiv align=\"center\"\u003e\n\n![ ](https://github.com/ghiggi/gpm_api_gallery/blob/main/images/gpm_api_banner.gif)\n\n|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Deployment        | [![PyPI](https://badge.fury.io/py/gpm_api.svg?style=flat)](https://pypi.org/project/gpm_api/) [![Conda](https://img.shields.io/conda/vn/conda-forge/gpm-api.svg?logo=conda-forge\u0026logoColor=white\u0026style=flat)](https://anaconda.org/conda-forge/gpm-api)                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| Activity          | [![PyPI Downloads](https://img.shields.io/pypi/dm/gpm_api.svg?label=PyPI%20downloads\u0026style=flat)](https://pypi.org/project/gpm_api/) [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/gpm-api.svg?label=Conda%20downloads\u0026style=flat)](https://anaconda.org/conda-forge/gpm-api)                                                                                                                                                                                                                                                                                                                                                                               |\n| Python Versions   | [![Python Versions](https://img.shields.io/badge/Python-3.10%20%203.11%20%203.12%20%203.13-blue?style=flat)](https://www.python.org/downloads/)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| Supported Systems | [![Linux](https://img.shields.io/github/actions/workflow/status/ghiggi/gpm_api/.github/workflows/tests.yaml?label=Linux\u0026style=flat)](https://github.com/ghiggi/gpm_api/actions/workflows/tests.yaml) [![macOS](https://img.shields.io/github/actions/workflow/status/ghiggi/gpm_api/.github/workflows/tests.yaml?label=macOS\u0026style=flat)](https://github.com/ghiggi/gpm_api/actions/workflows/tests.yaml) [![Windows](https://img.shields.io/github/actions/workflow/status/ghiggi/gpm_api/.github/workflows/tests_windows.yaml?label=Windows\u0026style=flat)](https://github.com/ghiggi/gpm_api/actions/workflows/tests_windows.yaml)                                            |\n| Project Status    | [![Project Status](https://www.repostatus.org/badges/latest/active.svg?style=flat)](https://www.repostatus.org/#active)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| Build Status      | [![Tests](https://github.com/ghiggi/gpm_api/actions/workflows/tests.yaml/badge.svg?style=flat)](https://github.com/ghiggi/gpm_api/actions/workflows/tests.yaml) [![Lint](https://github.com/ghiggi/gpm_api/actions/workflows/lint.yaml/badge.svg?style=flat)](https://github.com/ghiggi/gpm_api/actions/workflows/lint.yaml) [![Docs](https://readthedocs.org/projects/gpm_api/badge/?version=latest\u0026style=flat)](https://gpm-api.readthedocs.io/en/latest/)                                                                                                                                                                                                                  |\n| Linting           | [![Black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat)](https://github.com/psf/black) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\u0026style=flat)](https://github.com/astral-sh/ruff) [![Codespell](https://img.shields.io/badge/Codespell-enabled-brightgreen?style=flat)](https://github.com/codespell-project/codespell)                                                                                                                                                                                                                                                 |\n| Code Coverage     | [![Coveralls](https://coveralls.io/repos/github/ghiggi/gpm_api/badge.svg?branch=main\u0026style=flat)](https://coveralls.io/github/ghiggi/gpm_api?branch=main) [![Codecov](https://codecov.io/gh/ghiggi/gpm_api/branch/main/graph/badge.svg?style=flat)](https://codecov.io/gh/ghiggi/gpm_api)                                                                                                                                                                                                                                                                                                                                                                                     |\n| Code Quality      | [![Codefactor](https://www.codefactor.io/repository/github/ghiggi/gpm_api/badge?style=flat)](https://www.codefactor.io/repository/github/ghiggi/gpm_api) [![Codebeat](https://codebeat.co/badges/236abcf2-cbae-4ca9-8a2d-3b70495bb16b?style=flat)](https://codebeat.co/projects/github-com-ghiggi-gpm_api-main) [![Codacy](https://app.codacy.com/project/badge/Grade/bee842cb10004ad8bb9288256f2fc8af?style=flat)](https://app.codacy.com/gh/ghiggi/gpm_api/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade) [![Codescene](https://codescene.io/projects/36767/status-badges/code-health?style=flat)](https://codescene.io/projects/36767) |\n| License           | [![License](https://img.shields.io/github/license/ghiggi/gpm_api?style=flat)](https://github.com/ghiggi/gpm_api/blob/main/LICENSE)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| Community         | [![Slack](https://img.shields.io/badge/Slack-gpm_api-green.svg?logo=slack\u0026style=flat)](https://join.slack.com/t/gpmapi/shared_invite/zt-28vkxzjs1-~cIYci2o3G0qEEoQJVMQRg) [![GitHub Discussions](https://img.shields.io/badge/GitHub-Discussions-green?logo=github\u0026style=flat)](https://github.com/ghiggi/gpm_api/discussions)                                                                                                                                                                                                                                                                                                                                                |\n| Citation          | [![DOI](https://zenodo.org/badge/286664485.svg?style=flat)](https://doi.org/10.5281/zenodo.7753488)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n\n[**Slack**](https://join.slack.com/t/gpmapi/shared_invite/zt-28vkxzjs1-~cIYci2o3G0qEEoQJVMQRg) | [**Documentation**](https://gpm-api.readthedocs.io/en/latest/)\n\n\u003cdiv align=\"left\"\u003e\n\n## 🚀 Quick start\n\nGPM-API provides an easy-to-use python interface to download, read, process and visualize most\nof the products of the Global Precipitation Measurement Mission (GPM) data archive.\n\nThe list of available products can be retrieved using:\n\n```python\nimport gpm\n\ngpm.available_products(product_types=\"RS\")  # research products\ngpm.available_products(product_types=\"NRT\")  # near-real-time products\n```\n\nBefore starting using GPM-API, we highly suggest to save into a configuration file:\n\n1. your credentials to access the [NASA Precipitation Processing System (PPS) servers](https://gpm.nasa.gov/data/sources/pps-research)\n1. the directory on the local disk where to save the GPM dataset of interest.\n\nTo facilitate the creation of the configuration file, you can run the following script:\n\n```python\nimport gpm\n\nusername_pps = \"\u003cyour PPS username\u003e\"  # likely your mail\npassword_pps = \"\u003cyour PPS password\u003e\"  # likely your mail\nbase_dir = \"\u003cpath/to/directory/GPM\"  # path to the directory where to download the data\ngpm.define_configs(\n    username_pps=username_pps, password_pps=password_pps, base_dir=base_dir\n)\n\n# You can check that the config file has been correctly created with:\nconfigs = gpm.read_configs()\nprint(configs)\n```\n\n______________________________________________________________________\n\n### 📥 Download GPM data\n\nNow you can either start to download GPM data within python:\n\n```python\nimport gpm\nimport datetime\n\nproduct = \"2A-DPR\"\nproduct_type = \"RS\"\nversion = 7\n\nstart_time = datetime.datetime(2020, 7, 22, 0, 1, 11)\nend_time = datetime.datetime(2020, 7, 22, 0, 23, 5)\n\ngpm.download(\n    product=product,\n    product_type=product_type,\n    version=version,\n    n_threads=2,\n    start_time=start_time,\n    end_time=end_time,\n)\n```\n\nor from the terminal using i.e. `download_daily_gpm_data \u003cproduct\u003e \u003cyear\u003e \u003cmonth\u003e \u003cday\u003e`:\n\n```bash\ndownload_daily_gpm_data 2A-DPR 2022 7 22\n```\n\n______________________________________________________________________\n\n### 💫 Open GPM files into xarray\n\nA GPM granule can be opened in python using:\n\n```python\nimport gpm\n\nds = gpm.open_granule_dataset(\u003cpath_to_granule\u003e)\n# or\ndt = gpm.open_granule_datatree(\u003cpath_to_granule\u003e)\n\n```\n\nwhile multiple granules over a specific time period can be opened using:\n\n```python\nimport gpm\nimport datetime\n\nproduct = \"2A-DPR\"\nproduct_type = \"RS\"\nversion = 7\n\nstart_time = datetime.datetime(2020,7, 22, 0, 1, 11)\nend_time = datetime.datetime(2020,7, 22, 0, 23, 5)\nds = gpm.open_dataset(product=product,\n                      product_type=product_type,\n                      version=version\n                      start_time=start_time,\n                      end_time=end_time)\n```\n\n______________________________________________________________________\n\n### 📖 Explore the GPM-API documentation\n\nTo discover all GPM-API download, manipulation, analysis and plotting features,\nplease read the software documentation available at [https://gpm-api.readthedocs.io/en/latest/](https://gpm-api.readthedocs.io/en/latest/).\n\nIf you are new to GPM-API, we recommend starting with the following pages:\n\n- [Introduction to GPM sensors, products, theoretical and practical aspects](https://gpm-api.readthedocs.io/en/latest/00_introduction.html)\n- [Software installation](https://gpm-api.readthedocs.io/en/latest/02_installation.html)\n- [Configuration of GPM-API to start download GPM Data from NASA PPS and GES DISC servers](https://gpm-api.readthedocs.io/en/latest/03_quickstart.html)\n- [Basic tutorials on how to read, manipulate and visualize radar, passive microwave sensors and IMERG products](https://gpm-api.readthedocs.io/en/latest/04_tutorials.html)\n\nAll GPM-API tutorials are available as Jupyter Notebooks in the [`tutorial`](https://github.com/ghiggi/gpm_api/tree/main/tutorials) directory.\n\n______________________________________________________________________\n\n## 🛠️ Installation\n\n### conda\n\nGPM-API can be installed via [conda][conda_link] on Linux, Mac, and Windows.\nInstall the package by typing the following command in the terminal:\n\n```bash\nconda install gpm-api\n```\n\nIn case conda-forge is not set up for your system yet, see the easy to follow instructions on [conda-forge][conda_forge_link].\n\n### pip\n\nGPM-API can be installed also via [pip][pip_link] on Linux, Mac, and Windows.\nOn Windows you can install [WinPython][winpy_link] to get Python and pip running.\nPrior installation of GPM-API, try to install to `cartopy\u003e=0.21.0` package to ensure there are not [GEOS](https://libgeos.org/) library version incompatibilities.\nIf you can't solve the problems and install cartopy with pip, you should install at least cartopy with conda using `conda install cartopy\u003e=0.21.0`.\n\nThen, install the GPM-API package by typing the following command in the terminal:\n\n```bash\npip install gpm-api\n```\n\nTo install the latest development version via pip, see the [documentation][dev_install_link].\n\n## 💭 Feedback and Contributing Guidelines\n\nIf you aim to contribute your data or discuss the future development of GPM-API,\nwe highly suggest to join the [**GPM-API Slack Workspace**](https://join.slack.com/t/gpmapi/shared_invite/zt-28vkxzjs1-~cIYci2o3G0qEEoQJVMQRg)\n\nFeel free to also open a [GitHub Issue](https://github.com/ghiggi/gpm_api/issues) or a [GitHub Discussion](https://github.com/ghiggi/gpm_api/discussions) specific to your questions or ideas.\n\n## Citation\n\nIf you are using GPM-API in your publication please cite our Zenodo repository:\n\n\u003e Ghiggi Gionata. ghiggi/gpm_api. Zenodo. [![\u003chttps://doi.org/10.5281/zenodo.7753488\u003e](https://zenodo.org/badge/286664485.svg?style=flat)](https://doi.org/10.5281/zenodo.7753488)\n\nIf you want to cite a specific software version, have a look at the [Zenodo site](https://doi.org/10.5281/zenodo.7753488).\n\n## License\n\nThe content of this repository is released under the terms of the [MIT license](LICENSE).\n\n[conda_forge_link]: https://github.com/conda-forge/gpm-api-feedstock#installing-gpm-api\n[conda_link]: https://docs.conda.io/en/latest/miniconda.html\n[dev_install_link]: https://gpm-api.readthedocs.io/en/latest/02_installation.html#installation-for-contributors\n[pip_link]: https://pypi.org/project/gpm-api\n[winpy_link]: https://winpython.github.io/\n","funding_links":[],"categories":["Hydrosphere"],"sub_categories":["Ocean and Hydrology Data Access"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghiggi%2Fgpm_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghiggi%2Fgpm_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghiggi%2Fgpm_api/lists"}