MetPy
A collection of tools in Python for reading, visualizing and performing calculations with weather data.
https://github.com/Unidata/MetPy
Category: Atmosphere
Sub Category: Meteorological Observation and Forecast
Keywords
atmospheric-science hacktoberfest hodograph meteorology plotting python scientific-computations skew-t weather weather-data
Keywords from Contributors
unidata thredds-catalogs climate thredds grib notebook projections atmospheric-sciences climate-model geoscience
Last synced: about 13 hours ago
JSON representation
Repository metadata
MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data.
- Host: GitHub
- URL: https://github.com/Unidata/MetPy
- Owner: Unidata
- License: bsd-3-clause
- Created: 2011-02-25T04:20:25.000Z (about 14 years ago)
- Default Branch: main
- Last Pushed: 2025-05-12T14:56:03.000Z (5 days ago)
- Last Synced: 2025-05-13T17:13:14.772Z (4 days ago)
- Topics: atmospheric-science, hacktoberfest, hodograph, meteorology, plotting, python, scientific-computations, skew-t, weather, weather-data
- Language: Python
- Homepage: https://unidata.github.io/MetPy/
- Size: 979 MB
- Stars: 1,323
- Watchers: 57
- Forks: 427
- Open Issues: 344
- Releases: 42
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
- Codeowners: .github/CODEOWNERS
- Support: SUPPORT.md
- Authors: AUTHORS.txt
README.md
MetPy
MetPy is a collection of tools in Python for reading, visualizing and
performing calculations with weather data.
MetPy follows semantic versioning in its version number. This means
that any MetPy 1.x
release will be backwards compatible with an earlier 1.y
release. By
"backward compatible", we mean that correct code that works on a 1.y
version will work
on a future 1.x
version.
For additional MetPy examples not included in this repository, please see the Unidata Python
Gallery.
We support Python >= 3.9.
Need Help?
Need help using MetPy? Found an issue? Have a feature request? Checkout our
support page.
Important Links
- HTML Documentation
- Unidata Python Gallery
- "metpy" tagged questions on Stack Overflow
- Gitter chat room
Dependencies
Other required packages:
- Numpy
- Scipy
- Matplotlib
- Pandas
- Pint
- Xarray
There is also an optional dependency on the pyproj library for geographic
projections (used with cross sections, grid spacing calculation, and the GiniFile interface).
See the installation guide
for more information.
Code of Conduct
We want everyone to feel welcome to contribute to MetPy and participate in discussions. In that
spirit please have a look at our Code of Conduct.
Contributing
Imposter syndrome disclaimer: We want your help. No, really.
There may be a little voice inside your head that is telling you that you're not ready to be
an open source contributor; that your skills aren't nearly good enough to contribute. What
could you possibly offer a project like this one?
We assure you - the little voice in your head is wrong. If you can write code at all,
you can contribute code to open source. Contributing to open source projects is a fantastic
way to advance one's coding skills. Writing perfect code isn't the measure of a good developer
(that would disqualify all of us!); it's trying to create something, making mistakes, and
learning from those mistakes. That's how we all improve, and we are happy to help others learn.
Being an open source contributor doesn't just mean writing code, either. You can help out by
writing documentation, tests, or even giving feedback about the project (and yes - that
includes giving feedback about the contribution process). Some of these contributions may be
the most valuable to the project as a whole, because you're coming to the project with fresh
eyes, so you can see the errors and assumptions that seasoned contributors have glossed over.
For more information, please read the see the contributing guide.
Philosophy
The space MetPy aims for is GEMPAK (and maybe NCL)-like functionality, in a way that plugs
easily into the existing scientific Python ecosystem (numpy, scipy, matplotlib). So, if you
take the average GEMPAK script for a weather map, you need to:
- read data
- calculate a derived field
- show on a map/skew-T
One of the benefits hoped to achieve over GEMPAK is to make it easier to use these routines for
any meteorological Python application; this means making it easy to pull out the LCL
calculation and just use that, or reuse the Skew-T with your own data code. MetPy also prides
itself on being well-documented and well-tested, so that on-going maintenance is easily
manageable.
The intended audience is that of GEMPAK: researchers, educators, and any one wanting to script
up weather analysis. It doesn't even have to be scripting; all python meteorology tools are
hoped to be able to benefit from MetPy. Conversely, it's hoped to be the meteorological
equivalent of the audience of scipy/scikit-learn/skimage.
Citation (CITATION.cff)
abstract: > MetPy is an open-source and community-driven Python package for meteorology designed to fit well within the scientific Python stack (numpy, matplotlib, etc.). Its goal is to bring the scripted weather analysis capabilities of GEMPAK (and tools like it) to the powerful scientific Python ecosystem. The guiding principle is to make MetPy easy to use with any dataset that can be read into Python. MetPy's general functionality breaks down into reading data, meteorological calculations, and meteorology-specific plotting. authors: - family-names: May given-names: Ryan affiliation: "UCAR/Unidata" orcid: "https://orcid.org/0000-0003-2907-038X" - family-names: Arms given-names: Sean affiliation: "UCAR/Unidata" orcid: "https://orcid.org/0000-0001-9835-113X" - family-names: Marsh given-names: Patrick - family-names: Bruning given-names: Eric affiliation: "Texas Tech University" orcid: "https://orcid.org/0000-0003-1959-442X" - family-names: Leeman given-names: John orcid: "https://orcid.org/0000-0002-3624-1821" - family-names: Goebbert given-names: Kevin affiliation: "Valparaiso University" orcid: "https://orcid.org/0000-0001-7559-2432" - family-names: Thielen given-names: Jonathan orcid: "https://orcid.org/0000-0002-5479-0189" - family-names: Bruick given-names: Zachary orcid: "https://orcid.org/0000-0002-0299-9845" - family-names: Camron given-names: "M. Drew" affiliation: "UCAR/Unidata" orcid: "https://orcid.org/0000-0001-7246-6502" cff-version: "1.2.0" contact: - name: Unidata city: Boulder region: Colorado country: US email: "[email protected]" tel: "303-497-8643" fax: "303-497-8690" website: "https://www.unidata.ucar.edu" doi: "10.5065/D6WW7G29" keywords: - meteorology - weather license: "BSD-3-Clause" message: "If you use or contribute to MetPy, please use this information to reference it." repository-code: "https://github.com/Unidata/MetPy" title: "MetPy: A Python Package for Meteorological Data" type: software url: "https://www.unidata.ucar.edu/software/metpy/" references: - type: grant authors: - family-names: Ramamurthy given-names: Mohan email: "[email protected]" date-released: 2014-04-01 institution: name: "National Science Foundation" identifiers: - description: "NSF award number." type: other value: "AGS-1344155" title: "Unidata 2018: Transforming Geoscience through Innovative Data Services" url: "https://www.nsf.gov/awardsearch/showAward?AWD_ID=1344155" - type: grant authors: - family-names: May given-names: Ryan email: "[email protected]" - family-names: Goebbert given-names: Kevin - family-names: Leeman given-names: John date-released: 2017-09-01 institution: name: "National Science Foundation" identifiers: - description: "NSF award number." type: other value: "OAC-1740315" title: "MetPy - A Python GEMPAK Replacement for Meteorological Data Analysis" url: "https://www.nsf.gov/awardsearch/showAward?AWD_ID=1740315" - type: grant authors: - family-names: Paul given-names: Kevin email: "[email protected]" - family-names: May given-names: Ryan - family-names: Hamman given-names: Joseph - family-names: "Del Vento" given-names: Davide date-released: 2017-08-21 institution: name: "National Science Foundation" identifiers: - description: "NSF award number." type: other value: "OCE-1740633" title: "Pangeo: An Open Source Big Data Climate Science Platform" url: "https://www.nsf.gov/awardsearch/showAward?AWD_ID=1740633" - type: grant authors: - family-names: Ramamurthy given-names: Mohan email: "[email protected]" date-released: 2019-05-01 institution: name: "National Science Foundation" identifiers: - description: "NSF award number." type: other value: "AGS-1901712" title: "Unidata: Next-generation Data Services and Workflows to Advance Geoscience Research and Education" url: "https://www.nsf.gov/awardsearch/showAward?AWD_ID=1901712" - type: grant authors: - family-names: May given-names: Ryan email: "[email protected]" - family-names: Goebbert given-names: Kevin - family-names: Camron given-names: Michael date-released: 2021-05-01 institution: name: "National Science Foundation" identifiers: - description: "NSF award number." type: other value: "OAC-2103682" title: "Elements: Scaling MetPy to Big Data Workflows in Meteorology and Climate Science" url: "https://www.nsf.gov/awardsearch/showAward?AWD_ID=2103682"
Owner metadata
- Name: NSF Unidata
- Login: Unidata
- Email: [email protected]
- Kind: organization
- Description: Our mission is to transform the geosciences community, research, and education by providing innovative data services and tools.
- Website: https://www.unidata.ucar.edu/
- Location: Boulder, Colorado, USA
- Twitter: unidata
- Company:
- Icon url: https://avatars.githubusercontent.com/u/613345?v=4
- Repositories: 130
- Last ynced at: 2024-04-16T01:03:51.770Z
- Profile URL: https://github.com/Unidata
GitHub Events
Total
- Create event: 78
- Release event: 1
- Issues event: 58
- Watch event: 67
- Delete event: 73
- Issue comment event: 163
- Push event: 163
- Pull request review comment event: 56
- Pull request event: 224
- Pull request review event: 205
- Fork event: 15
Last Year
- Create event: 78
- Release event: 1
- Issues event: 58
- Watch event: 67
- Delete event: 73
- Issue comment event: 163
- Push event: 163
- Pull request review comment event: 56
- Pull request event: 224
- Pull request review event: 205
- Fork event: 15
Committers metadata
Last synced: 7 days ago
Total Commits: 4,836
Total Committers: 89
Avg Commits per committer: 54.337
Development Distribution Score (DDS): 0.51
Commits in past year: 325
Committers in past year: 18
Avg Commits per committer in past year: 18.056
Development Distribution Score (DDS) in past year: 0.489
Name | Commits | |
---|---|---|
Ryan May | r****y@u****u | 2368 |
dependabot[bot] | 4****] | 964 |
John Leeman | k****b@g****m | 347 |
Jon Thielen | g****b@j****c | 167 |
Drew Camron | d****n@u****u | 166 |
Zach Bruick | z****k@v****u | 118 |
Kevin Goebbert | k****t@v****u | 104 |
Steven Decker | s****r@e****u | 55 |
Nathan Wendt | n****t@n****v | 36 |
mgrover1 | m****x@g****m | 34 |
Sean Arms | s****s@u****u | 33 |
Connor Cozad | 2****d@g****m | 32 |
Daryl Herzmann | a****z@i****u | 29 |
Claude Dicaire | 3****6 | 26 |
Haoyu Zhuang | z****d@g****m | 25 |
Alex Haberlie | a****e@n****u | 23 |
Kristen Pozsonyi | k****n@m****u | 23 |
Tyler Wixtrom | t****m@g****m | 23 |
Kyle J Gillett | 1****t | 19 |
Patrick Marsh | p****x@g****m | 19 |
Matt Wilson | m****n@v****u | 16 |
Andrew Huang | a****1@i****u | 13 |
Ana Castaneda | a****1@g****m | 13 |
Christian F | c****2@g****m | 9 |
Eric Bruning | e****g@g****m | 9 |
Nathan Wendt | n****t@o****u | 8 |
Sarawut Arthayakun | 4****g | 8 |
Lydia Bunting | l****g@t****u | 8 |
Aaron Hill | a****l@t****u | 6 |
David Ahijevych | a****c@u****u | 6 |
and 59 more... |
Committer domains:
- ucar.edu: 6
- ttu.edu: 5
- valpo.edu: 3
- noaa.gov: 2
- ucdavis.edu: 2
- psu.edu: 2
- us.af.mil: 1
- jont.cc: 1
- dlaw.me: 1
- envsci.rutgers.edu: 1
- miami.edu: 1
- iastate.edu: 1
- niu.edu: 1
- millersville.edu: 1
- illinois.edu: 1
- ou.edu: 1
- palewi.re: 1
- pathirana.net: 1
- iup.uni-heidelberg.de: 1
- protection-consultants.com: 1
- mobifly.co.uk: 1
- tiscali.it: 1
- wx4stg.com: 1
- bristol.ac.uk: 1
- uchicago.edu: 1
- fz-juelich.de: 1
- purdue.edu: 1
- fsu.edu: 1
- yahoo.co.uk: 1
- usgs.gov: 1
- cicese.mx: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 1,208
Total pull requests: 2,403
Average time to close issues: 5 months
Average time to close pull requests: 19 days
Total issue authors: 277
Total pull request authors: 120
Average comments per issue: 2.88
Average comments per pull request: 1.38
Merged pull request: 2,072
Bot issues: 78
Bot pull requests: 1,186
Past year issues: 54
Past year pull requests: 269
Past year average time to close issues: 19 days
Past year average time to close pull requests: 6 days
Past year issue authors: 38
Past year pull request authors: 18
Past year average comments per issue: 2.56
Past year average comments per pull request: 0.43
Past year merged pull request: 228
Past year bot issues: 11
Past year bot pull requests: 218
Top Issue Authors
- dopplershift (375)
- jrleeman (168)
- github-actions[bot] (78)
- sgdecker (61)
- jthielen (31)
- kgoebber (29)
- akrherz (20)
- dcamron (17)
- ahuang11 (12)
- raybellwaves (9)
- eliteuser26 (9)
- zbruick (9)
- winash12 (8)
- avatar101 (6)
- DanielAdriaansen (6)
Top Pull Request Authors
- dependabot[bot] (1,171)
- dopplershift (473)
- jrleeman (157)
- jthielen (84)
- kgoebber (72)
- zbruick (52)
- dcamron (39)
- sgdecker (34)
- akrherz (28)
- 23ccozad (20)
- tjwixtrom (19)
- nawendt (17)
- mwilson14 (13)
- mgrover1 (13)
- github-actions[bot] (12)
Top Issue Labels
- Type: Bug (361)
- Area: Calc (302)
- Type: Enhancement (234)
- Type: Feature (204)
- Type: Maintenance (197)
- Area: Plots (172)
- Area: Docs (166)
- Area: IO (92)
- Area: Infrastructure (91)
- Area: Units (64)
- Area: Xarray (64)
- good first issue (57)
- Status: Not A Bug (56)
- Area: Examples (48)
- GEMPAK Conversion (44)
- Status: Duplicate (26)
- Subarea: Thermo (26)
- Type: API Change (24)
- Type: Question (20)
- Area: Tests (20)
- Area: Gridding (18)
- Area: Projections (17)
- Status: Upstream (17)
- Status: On Hold (9)
- Area: Cross-sections (9)
- Hacktoberfest (4)
- Epic (3)
- Status: Need Info (3)
- Status: Won't Fix (3)
- Area: DevTools (2)
Top Pull Request Labels
- Type: Maintenance (1,471)
- Area: Infrastructure (924)
- Type: Enhancement (285)
- Area: Calc (282)
- Type: Bug (279)
- Area: Docs (220)
- Type: Feature (142)
- Area: Plots (140)
- Area: IO (71)
- Area: Xarray (58)
- Area: Examples (53)
- Area: Tests (47)
- Area: Units (39)
- Type: API Change (33)
- Area: Projections (14)
- backport (12)
- backported-pr (12)
- Area: Gridding (12)
- Status: Not A Bug (8)
- Subarea: Thermo (8)
- hacktoberfest-accepted (6)
- Area: DevTools (4)
- Area: Cross-sections (4)
- nightly-ci (3)
- Status: Duplicate (2)
- manual backport (2)
- GEMPAK Conversion (1)
- Status: Team Discussion (1)
Package metadata
- Total packages: 4
-
Total downloads:
- pypi: 84,578 last-month
- Total docker downloads: 12
- Total dependent packages: 49 (may contain duplicates)
- Total dependent repositories: 180 (may contain duplicates)
- Total versions: 113
- Total maintainers: 2
pypi.org: metpy
Collection of tools for reading, visualizing and performing calculations with weather data.
- Homepage:
- Documentation: https://unidata.github.io/MetPy/
- Licenses: BSD-3-Clause
- Latest release: 1.7.0 (published 17 days ago)
- Last Synced: 2025-05-16T00:34:25.798Z (1 day ago)
- Versions: 42
- Dependent Packages: 37
- Dependent Repositories: 76
- Downloads: 84,578 Last month
- Docker Downloads: 12
-
Rankings:
- Dependent packages count: 0.462%
- Dependent repos count: 1.712%
- Average: 1.728%
- Downloads: 1.868%
- Stargazers count: 1.931%
- Forks count: 2.666%
- Maintainers (2)
conda-forge.org: metpy
The space MetPy aims for is GEMPAK (and maybe NCL)-like functionality, in a way that plugs easily into the existing scientific Python ecosystem (numpy, scipy, matplotlib). So, if you take the average GEMPAK script for a weather map, you need to: read data, calculate a derived field, and show on a map/skew-T. One of the benefits hoped to achieve over GEMPAK is to make it easier to use these routines for any meteorological Python application; this means making it easy to pull out the LCL calculation and just use that, or re-use the Skew-T with your own data code. MetPy also prides itself on being well-documented and well-tested, so that on-going maintenance is easily manageable.
- Homepage: https://github.com/Unidata/MetPy
- Licenses: BSD-3-Clause
- Latest release: 1.3.1 (published almost 3 years ago)
- Last Synced: 2025-05-16T00:35:26.656Z (1 day ago)
- Versions: 27
- Dependent Packages: 12
- Dependent Repositories: 104
-
Rankings:
- Dependent repos count: 3.338%
- Dependent packages count: 5.115%
- Average: 7.445%
- Forks count: 8.703%
- Stargazers count: 12.625%
proxy.golang.org: github.com/unidata/metpy
- Homepage:
- Documentation: https://pkg.go.dev/github.com/unidata/metpy#section-documentation
- Licenses: bsd-3-clause
- Latest release: v1.7.0 (published 17 days ago)
- Last Synced: 2025-05-16T00:34:28.587Z (1 day ago)
- Versions: 41
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 6.999%
- Average: 8.173%
- Dependent repos count: 9.346%
spack.io: py-metpy
Collection of tools for reading, visualizing and performing calculations with weather data.
- Homepage: https://github.com/Unidata/MetPy
- Licenses: []
- Latest release: 1.6.2 (published 7 months ago)
- Last Synced: 2025-05-16T00:34:21.167Z (1 day ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Forks count: 4.752%
- Stargazers count: 7.489%
- Average: 17.379%
- Dependent packages count: 57.274%
- Maintainers (1)
Dependencies
- actions/upload-artifact v3 composite
- mamba-org/provision-with-micromamba v14 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite
- codecov/codecov-action v3 composite
- actions/github-script v6 composite
- actions-ecosystem/action-remove-labels v1 composite
- actions/checkout v3 composite
- actions/github-script v6 composite
- peter-evans/create-pull-request v4 composite
- actions/checkout v3 composite
- citation-file-format/cffconvert-github-action 2.0.0 composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/init v2 composite
- ./.github/actions/build-docs * composite
- ./.github/actions/install-conda * composite
- actions/checkout v3 composite
- ./.github/actions/build-docs * composite
- ./.github/actions/install-pypi * composite
- actions/checkout v3 composite
- actions/download-artifact v3 composite
- peaceiris/actions-gh-pages v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- ./.github/actions/build-docs * composite
- ./.github/actions/install-pypi * composite
- ./.github/actions/run-tests * composite
- actions/checkout v3 composite
- actions/download-artifact v3 composite
- actions/github-script v6 composite
- actions/upload-artifact v3 composite
- actions/checkout v3 composite
- actions/download-artifact v3 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite
- pypa/gh-action-pypi-publish v1.6.4 composite
- ./.github/actions/install-conda * composite
- ./.github/actions/run-tests * composite
- actions/checkout v3 composite
- importlib_resources ==5.10.2
- matplotlib ==3.6.2
- numpy ==1.24.1
- pandas ==1.5.2
- pint ==0.20.1
- pooch ==1.6.0
- pyproj ==3.4.1
- scipy ==1.10.0
- traitlets ==5.8.0
- xarray ==2022.12.0
- ./.github/actions/install-pypi * composite
- ./.github/actions/run-tests * composite
- actions/checkout v3 composite
- mcr.microsoft.com/vscode/devcontainers/miniconda latest build
- geopandas ==0.12.2
- myst-parser ==0.18.1
- netCDF4 ==1.6.2
- pydata-sphinx-theme ==0.8.1
- rtree ==1.0.1
- sphinx ==4.5.0
- sphinx-gallery ==0.11.1
- cartopy ==0.21.1
- shapely ==2.0.0
- codespell ==2.2.2
- doc8 ==1.1.1
- flake8 ==5.0.4
- flake8-bugbear ==22.12.6
- flake8-builtins ==2.1.0
- flake8-comprehensions ==3.10.1
- flake8-continuation ==1.0.5
- flake8-copyright ==0.2.3
- flake8-docstrings ==1.6.0
- flake8-isort ==6.0.0
- flake8-mutable ==1.2.0
- flake8-pie ==0.16.0
- flake8-print ==5.0.0
- flake8-quotes ==3.3.2
- flake8-requirements ==1.7.5
- flake8-rst-docstrings ==0.3.0
- flake8-simplify ==0.19.3
- isort ==5.11.4
- pep8-naming ==0.13.3
- pycodestyle ==2.9.1
- pydocstyle ==6.2.2
- pyflakes ==2.5.0
- restructuredtext_lint ==1.4.0
- coverage ==7.0.3 test
- dask ==2022.12.1 test
- netCDF4 ==1.6.2 test
- pytest ==7.2.0 test
- pytest-mpl ==0.16.1 test
- ./.github/actions/build-docs * composite
- ./.github/actions/install-pypi * composite
- ./.github/actions/run-tests * composite
- actions/checkout v3 composite
- actions/upload-artifact v3 composite
- matplotlib >=3.5.0
- numpy >=1.20.0
- pandas >=1.2.0
- pint >=0.15
- pooch >=1.2.0
- pyproj >=3.0.0
- scipy >=1.6.0
- traitlets >=5.0.5
- xarray >=0.18.0
Score: 23.25572747457802