For more than 30 years, meteorology students, researchers, and operational practitioners have used the GEMPAK (GEneral Meteorology PAcKage) software package for data analysis and visualization of a diverse set of atmospheric science datasets. Initially developed in the late 1980s to produce forecast and analysis graphics for the National Weather Service’s National Centers for Environmental Prediction, GEMPAK has been superseded by more modern software in operational settings, and has not been actively developed by the Weather Service since 2008. Within the education and research community, however, GEMPAK’s potent combination of powerful analysis and visualization tools, ease of use, and low cost (it’s free) has led to its continued use, despite its age.
Unidata’s MetPy project aims to help the academic community modernize its software toolset by bringing the best features of GEMPAK into the burgeoning world of scientific Python. The ecosystem of Python-language software for analysis and visualization of scientific data has grown enormously in the past decade, and the MetPy project contributes tools specifically tailored to the atmospheric sciences to the mix. These domain-specific features, when combined with powerful general-purpose Python libraries such as numpy, pandas, xarray, matplotlib, and cartopy, allow for the construction of workflows that replicate and expand on the techniques available in GEMPAK.
Ryan May, Unidata’s lead MetPy developer and evangelist, thinks that this work will benefit the entire geoscience community. “Students who become familiar with this really robust [Python] software ecosystem in school will be able to use that not only in their academic work, but also in their later careers,” says May. “If we can contribute some of the atmospheric science pieces, the entire ecosystem gets a little bit stronger.”
The Road to MetPy 1.0
Although MetPy has been around as an Open Source project since 2008, development resources have been limited and progress toward a “stable” release has come in fits and starts. But increasing involvement by users and developers in the wider community — along with some well-placed funding from the National Science Foundation — has led to significant progress in recent years. The MetPy team now plans to release an official version 1.0 in time for the AMS Annual Meeting in January, 2020. (The release currently available is tagged 0.11.1 — get it from GitHub)
“Putting out a 1.0 release means that we’re committed to keeping the interface [software API] stable, so people can be confident that the code they write using MetPy will continue to work longer term,” May says. “It’s not that recent releases have been unstable — they haven’t. But we have continued to make small changes and improvements around the edges. We won’t be making changes that alter existing behavior after the 1.0 release.”
MetPy does not replicate every feature of GEMPAK at this stage, but May is confident that it is now useful as a GEMPAK alternative, especially in the classroom. One of the biggest additions in recent releases has been the addition of a “declarative” plotting interface, aimed at giving GEMPAK users ways to use MetPy that feel familiar. “It’s simple and fairly intuitive for someone who is comfortable with GEMPAK,” says May. “We think it will be really useful, both for experienced users looking to switch and for entirely new learners.”
Valparaiso University Associate Professor of Meteorology Dr. Kevin Goebbert is one of the Unidata community members who has been actively involved in defining and developing MetPy. “It has been great to be working directly with the primary Unidata developers to offer clear user experience feedback into the development process. This allows for a more user friendly package from the get go,” he says.
Goebbert also notes some advantages of MetPy over GEMPAK. “MetPy has begun to transform the classroom experience for my students. I am able to use modern workflows through Python and the addition of meteorological calculations that MetPy has brought to the table,” he says. “This benefits my students because it is easier for them to take their work from my classes and apply it to future research and career opportunities than the legacy programs I had been using.”
Building the MetPy Community
One of the best ways to bring new users — be they students, professors, or researchers — into the MetPy community is to teach them how to use it. Unidata developers have conducted more than a dozen Python-focused workshops at partner universities, scientific conferences, and the Unidata Program Center in the past three years. The popular MetPy Mondays video series (available on Unidata’s YouTube channel) releases a short lesson on using MetPy and other parts of the scientific Python ecosystem each week. And Unidata’s Online Python Training resource (currently under revision in advance of the MetPy 1.0 release) collects a variety of resources useful to those learning on their own.
At the January 2020 AMS Annual Meeting in Boston, Unidata staff will be teaching a Short Course titled “Plotting in Python with Metpy: GEMPAK-like Plots Made Easy.” If you’re at the AMS meeting, look for posters and presentations by May and by 2019 Unidata Summer Intern Max Grover. Unidata developers will also be on hand in the UCAR booth in the exhibit hall to talk about and demonstrate MetPy and other Unidata technologies.
MetPy Developer Wanted
Finally, Unidata is looking to add a software developer to the MetPy team in the near future. If you are a developer who would like to join the Unidata staff to contribute to this exciting project — or if you know someone who would — see this post. Of course, if you’d like to contribute from wherever you sit right now, please do! MetPy is 100% Open Source and your help is always welcome. See the Contributing section on MetPy’s GitHub page to get started.