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 grib thredds climate atmospheric-sciences notebooks cartopy atmospheric-modelling metpy
Last synced: about 5 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 (almost 15 years ago)
- Default Branch: main
- Last Pushed: 2025-11-24T16:20:05.000Z (about 1 month ago)
- Last Synced: 2025-11-28T04:39:19.976Z (27 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: 1020 MB
- Stars: 1,377
- Watchers: 57
- Forks: 441
- Open Issues: 364
- Releases: 43
-
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
- Cla: CLA.md
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: "support@unidata.ucar.edu"
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: "mohan@ucar.edu"
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: "rmay@ucar.edu"
- 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: "kpaul@ucar.edu"
- 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: "mohan@ucar.edu"
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: "rmay@ucar.edu"
- 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: support@unidata.ucar.edu
- 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: 124
- Release event: 2
- Issues event: 73
- Watch event: 91
- Delete event: 120
- Issue comment event: 219
- Push event: 282
- Pull request review comment event: 83
- Pull request event: 371
- Pull request review event: 285
- Fork event: 20
Last Year
- Create event: 95
- Release event: 2
- Issues event: 55
- Watch event: 72
- Delete event: 90
- Issue comment event: 169
- Push event: 217
- Pull request review comment event: 71
- Pull request event: 286
- Pull request review event: 224
- Fork event: 17
Committers metadata
Last synced: 6 days ago
Total Commits: 4,975
Total Committers: 93
Avg Commits per committer: 53.495
Development Distribution Score (DDS): 0.517
Commits in past year: 250
Committers in past year: 19
Avg Commits per committer in past year: 13.158
Development Distribution Score (DDS) in past year: 0.488
| Name | Commits | |
|---|---|---|
| Ryan May | r****y@u****u | 2403 |
| dependabot[bot] | 4****] | 1042 |
| John Leeman | k****b@g****m | 347 |
| Drew Camron | d****n@u****u | 169 |
| Jon Thielen | g****b@j****c | 167 |
| 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 | 30 |
| Claude Dicaire | 3****6 | 26 |
| Haoyu Zhuang | z****d@g****m | 25 |
| Tyler Wixtrom | t****m@g****m | 23 |
| Kristen Pozsonyi | k****n@m****u | 23 |
| Alex Haberlie | a****e@n****u | 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 |
| blue-jaye-121 | s****1@g****m | 11 |
| Eric Bruning | e****g@g****m | 9 |
| Christian F | c****2@g****m | 9 |
| Sarawut Arthayakun | 4****g | 8 |
| Nathan Wendt | n****t@o****u | 8 |
| Lydia Bunting | l****g@t****u | 8 |
| bcmyguest | b****t@g****m | 6 |
| and 63 more... | ||
Committer domains:
- ucar.edu: 6
- ttu.edu: 5
- valpo.edu: 3
- noaa.gov: 2
- ucdavis.edu: 2
- psu.edu: 2
- yahoo.co.uk: 1
- jont.cc: 1
- us.af.mil: 1
- envsci.rutgers.edu: 1
- dlaw.me: 1
- iastate.edu: 1
- millersville.edu: 1
- niu.edu: 1
- illinois.edu: 1
- ou.edu: 1
- miami.edu: 1
- palewi.re: 1
- mobifly.co.uk: 1
- protection-consultants.com: 1
- iup.uni-heidelberg.de: 1
- pathirana.net: 1
- wx4stg.com: 1
- bristol.ac.uk: 1
- fz-juelich.de: 1
- uchicago.edu: 1
- purdue.edu: 1
- fsu.edu: 1
- tiscali.it: 1
- usgs.gov: 1
- cicese.mx: 1
Issue and Pull Request metadata
Last synced: 7 days ago
Total issues: 1,203
Total pull requests: 2,770
Average time to close issues: 5 months
Average time to close pull requests: 20 days
Total issue authors: 277
Total pull request authors: 127
Average comments per issue: 2.74
Average comments per pull request: 1.25
Merged pull request: 2,350
Bot issues: 82
Bot pull requests: 1,437
Past year issues: 32
Past year pull requests: 272
Past year average time to close issues: 12 days
Past year average time to close pull requests: 4 days
Past year issue authors: 19
Past year pull request authors: 19
Past year average comments per issue: 0.84
Past year average comments per pull request: 0.43
Past year merged pull request: 211
Past year bot issues: 9
Past year bot pull requests: 180
Top Issue Authors
- dopplershift (376)
- jrleeman (167)
- github-actions[bot] (79)
- sgdecker (60)
- jthielen (30)
- kgoebber (29)
- akrherz (21)
- dcamron (18)
- ahuang11 (12)
- eliteuser26 (9)
- zbruick (9)
- winash12 (8)
- raybellwaves (7)
- avatar101 (6)
- am-thyst (6)
Top Pull Request Authors
- dependabot[bot] (1,414)
- dopplershift (529)
- jrleeman (157)
- jthielen (84)
- kgoebber (75)
- zbruick (52)
- dcamron (51)
- sgdecker (38)
- akrherz (29)
- tjwixtrom (20)
- nawendt (19)
- 23ccozad (19)
- github-actions[bot] (15)
- mwilson14 (13)
- mgrover1 (13)
Top Issue Labels
- Type: Bug (362)
- Area: Calc (294)
- Type: Enhancement (232)
- Type: Maintenance (202)
- Type: Feature (197)
- Area: Plots (169)
- Area: Docs (162)
- Area: Infrastructure (94)
- Area: IO (91)
- Area: Xarray (65)
- Area: Units (62)
- good first issue (54)
- Status: Not A Bug (51)
- Area: Examples (48)
- GEMPAK Conversion (43)
- Status: Duplicate (26)
- Subarea: Thermo (25)
- Type: API Change (24)
- Type: Question (20)
- Area: Tests (20)
- Area: Gridding (18)
- Area: Projections (17)
- Status: Upstream (13)
- Status: On Hold (9)
- Area: Cross-sections (9)
- Hacktoberfest (4)
- Epic (3)
- Status: Won't Fix (3)
- Area: DevTools (2)
- Status: Need Info (2)
Top Pull Request Labels
- Type: Maintenance (1,760)
- Area: Infrastructure (1,208)
- Type: Enhancement (307)
- Type: Bug (297)
- Area: Calc (292)
- Area: Docs (238)
- Type: Feature (145)
- Area: Plots (143)
- Area: IO (81)
- Area: Xarray (59)
- Area: Examples (58)
- Area: Tests (54)
- Area: Units (40)
- Type: API Change (33)
- backported-pr (20)
- Area: Projections (17)
- backport (15)
- Area: Gridding (12)
- Subarea: Thermo (12)
- Status: Not A Bug (8)
- hacktoberfest-accepted (6)
- Area: DevTools (6)
- Area: Remote (6)
- nightly-ci (5)
- Area: Cross-sections (4)
- Status: Duplicate (2)
- manual backport (2)
- Status: Team Discussion (2)
- GEMPAK Conversion (1)
- benchmark (1)
Package metadata
- Total packages: 4
-
Total downloads:
- pypi: 152,977 last-month
- Total docker downloads: 12
- Total dependent packages: 49 (may contain duplicates)
- Total dependent repositories: 180 (may contain duplicates)
- Total versions: 116
- 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.1 (published 4 months ago)
- Last Synced: 2025-12-19T21:31:51.723Z (5 days ago)
- Versions: 43
- Dependent Packages: 37
- Dependent Repositories: 76
- Downloads: 152,977 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 over 3 years ago)
- Last Synced: 2025-12-17T07:03:24.975Z (8 days 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.1 (published 4 months ago)
- Last Synced: 2025-12-11T18:03:51.547Z (13 days ago)
- Versions: 42
- 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.7.0 (published 5 months ago)
- Last Synced: 2025-12-11T18:04:10.947Z (13 days ago)
- Versions: 4
- 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
- cartopy ==0.21.1
- shapely ==2.0.0
- ./.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
- geopandas ==1.1.0 development
- myst-parser ==4.0.1 development
- pydata-sphinx-theme ==0.16.1 development
- sphinx ==8.1.3 development
- sphinx-design ==0.6.1 development
- sphinx-gallery ==0.19.0 development
- codespell ==2.4.1 development
- doc8 ==1.1.2 development
- flake8 ==7.2.0 development
- flake8-continuation ==1.0.5 development
- flake8-isort ==6.1.2 development
- flake8-requirements ==2.2.1 development
- flake8-rst-docstrings ==0.3.1 development
- isort ==6.0.1 development
- pooch ==1.8.2 development
- pycodestyle ==2.13.0 development
- pyflakes ==3.3.2 development
- restructuredtext_lint ==1.4.0 development
- ruff ==0.11.11 development
- coverage ==7.8.2 development
- packaging ==25.0 development
- pytest ==8.3.5 development
- pytest-mpl ==0.17.0 development
- vcrpy ==7.0.0 development
- actions/checkout v4 composite
- actions/setup-python v5 composite
- python 3.12 build
Score: 23.93445103553407

