1. Overview
1.1. Purpose and organization of the User’s Guide
The goal of this User’s Guide is to equip users with the information needed to use the Model Evaluation Tools (MET) and its companion package METplus Wrappers. MET is a set of verification tools developed and supported to community via the Developmental Testbed Center (DTC) for use by the numerical weather prediction community. METplus Wrappers is a suite of Python wrappers and ancillary scripts to enhance the user’s ability to quickly set-up and run MET. Over the next few years, METplus Wrappers will become the authoritative repository for verification of the Unified Forecast System.
The METplus Wrappers User’s Guide is organized as follows. An overview of METplus Wrappers can be found below. Installation contains basic information about how to get started with METplus Wrappers - including system requirements, required software, and how to download METplus Wrappers. Configuration provides information about configuring your environment and METplus Wrappers installation.
1.2. The Developmental Testbed Center (DTC)
METplus Wrappers has been developed, and will be maintained and enhanced, by the Developmental Testbed Center (DTC; http://www.dtcenter.org/ ). The main goal of the DTC is to serve as a bridge between operations and research and to facilitate the activities of these two important components of the numerical weather prediction (NWP) community. The DTC provides an environment that is functionally equivalent to the operational environment in which the research community can test model enhancements; the operational community benefits from DTC testing and evaluation of models before new models are implemented operationally. METplus Wrappers serves both the research and operational communities in this way - offering capabilities for researchers to test their own enhancements to models and providing a capability for the DTC to evaluate the strengths and weaknesses of advances in NWP prior to operational implementation.
METplus Wrappers will also be available to DTC visitors and the NOAA Unified Forecast System (UFS) and NCAR System for Integrated Modeling of the Atmosphere (SIMA) modeling communities for testing and evaluation of new model capabilities, applications in new environments, and so on. The METplus Wrappers release schedule is coincident with the MET release schedule and the METplus Wrappers major release number is six less than the MET major release number (e.g. MET 8.X is released with METplus Wrappers 2.X).
1.3. METplus Wrappers goals and design philosophy
METplus Wrappers is a Python scripting infrastructure for the MET tools. The primary goal of METplus Wrappers development is to provide MET users with a highly configurable and simple means to perform model verification using the MET tools. Prior to the availability of METplus Wrappers, users who had more complex verifications that required the use of more than one MET tool were faced with setting up multiple MET config files and creating some automation scripts to perform the verification. METplus Wrappers provides the user with the infrastructure to modularly create the necessary steps to perform such verifications.
METplus Wrappers has been designed to be modular and adaptable. This is accomplished through wrapping the MET tools with Python and the use of hierarchical configuration files to enable users to readily customize their verification environments. Wrappers can be run individually, or as a group of wrappers that represent a sequence of MET processes. New wrappers can readily be added to the METplus Wrappers package due to this modular design. Currently, METplus Wrappers can easily be applied by any user on their own computer platform that supports Python 3.8. We have deprecated support to Python 2.7.
The METplus Wrappers code and documentation is maintained by the DTC in Boulder, Colorado. METplus Wrappers is freely available to the modeling, verification, and operational communities, including universities, governments, the private sector, and operational modeling and prediction centers through a publicly accessible GitHub repository. Refer to Getting the METplus Wrappers source code for simple examples of obtaining METplus Wrappers.
1.4. METplus Wrappers Components
The major components of the METplus Wrappers package are METplus Python wrappers to the MET tools, MET configuration files and a hierarchy of METplus Wrappers configuration files. Some Python wrappers do not correspond to a particular MET tool, but wrap utilities to extend METplus functionality.
1.5. METplus Components Python Requirements
Name |
Version |
METplus Component |
Source |
Description |
Use Cases (only applicable for METplus wrappers component)(followed by python package name) |
---|---|---|---|---|---|
Python 3.10.4+ |
METplus wrappers, |
||||
cartopy |
>=0.21.1 |
METplus wrappers, |
Designed for |
TCGen: Genesis Density Function (GDF)
and Track Density Function (TDF)
(cartopy) |
|
cfgrib |
METplus wrappers |
map GRIB files |
Multi_Tool: Feature Relative by Lead using Multiple User-Defined Fields (cfgrib) |
||
cmocean |
METcalcpy, |
contains colormaps |
|||
dateutil |
>=2.8.2 |
METplus wrappers |
provides powerful |
Most |
|
eofs |
METplus wrappers, |
empirical orthogonal |
WeatherRegime Calculation:
RegridDataPlane,
PcpCombine,
and WeatherRegime python code
(eofs) |
||
h5py |
METplus wrappers |
Pythonic interface |
|||
imutils |
>=0.5.4 |
METplotpy |
A series of convenience |
||
imageio |
METcalcpy, |
provides an easy |
|||
lxml |
>=4.9.1 |
METcalcpy, |
a Pythonic binding for |
||
matplotlib |
>=3.6.3 |
METplus wrappers, |
a comprehensive library |
UserScript:
Make OMI plot from
calculated MJO indices (obs only)
(matplotlib) |
|
metcalcpy |
METplus wrappers, |
a Python version of the |
UserScript:
Make a Hovmoeller plot
(metcalcpy) |
||
metplotpy |
METplus wrappers |
contains packages for |
UserScript:
Make a Hovmoeller plot
(metplotpy) |
||
metpy |
>=1.4.0 |
METplus wrappers |
a collection of tools |
Multi_Tool: Feature Relative by Lead using Multiple User-Defined Fields (metpy) |
|
nc-time-axis |
1.4 |
METplotpy |
extension to cftime |
||
netCDF4 |
>=1.6.2 |
METplus wrappers, |
a Python interface to |
For using MET Python embedding functionality in use cases |
|
numpy |
>=1.24.2 |
METplus wrappers, |
NumPy offers |
For using MET Python embedding functionality in use cases |
|
pandas |
>=1.5.2 |
METplus wrappers, |
a fast, powerful, |
For using MET Python embedding functionality in use cases |
|
pint |
>=0.20.1 |
METcalcpy |
Python package to define, |
||
plotly |
>=5.13.0 |
METcalcpy, |
makes interactive, |
||
pygrib |
METplus wrappers |
for reading/writing |
Multi_Tool: Feature Relative by Lead using Multiple User-Defined Fields (pygrib) |
||
pylab |
METplus wrappers |
a convenience module |
WeatherRegime Calculation:
RegridDataPlane, PcpCombine,
and WeatherRegime python code
(pylab) |
||
pymysql |
>=1.0.2 |
METcalcpy, |
a pure-Python MySQL |
||
pyproj |
>=2.3.1 |
METplus wrappers |
Python interface to PROJ |
GridStat: Python Embedding to read and process ice cover (pyproj) |
|
pyresample |
METplus wrappers |
for resampling geospatial |
GridStat:
Python Embedding to read and
process SST
(pyresample) |
||
pytest |
>=7.2.1 |
METcalcpy, |
a mature full-featured |
||
python-kaleido |
>=0.2.1 |
METcalcpy, |
provides a low-level |
||
pyyaml |
>=6.0 |
METcalcpy, |
a full-featured YAML |
||
scikit-image |
>=0.19.3 |
METcalcpy, |
a collection of |
||
scikit-learn |
>=1.2.2 |
METplus wrappers, |
Open Source library for |
GridStat:
Python Embedding to read and process SST
(scikit-learn) |
|
scipy |
>=1.9.3 |
METplus wrappers, |
wraps highly-optimized |
Blocking Calculation:
ERA RegridDataPlane,
PcpCombine, and
Blocking python code
(scipy) |
|
sklearn |
METplus wrappers |
Simple and efficient |
WeatherRegime Calculation:
RegridDataPlane, PcpCombine, and WeatherRegime python code
(sklearn) |
||
xarray |
>=2023.1.0 |
METplus wrappers, |
makes working with |
For using MET Python embedding functionality in use cases |
|
xesmf |
METplus wrappers |
NOTE: The xesmf package |
for regridding |
PlotDataPlane: Python Embedding of tripolar coordinate file (xesmf) |
|
yaml |
METcalcpy, |
to load, read, and write |
1.6. Future development plans
METplus Wrappers is an evolving application. New capabilities are planned in controlled, successive version releases that are synchronized with MET releases. Software bugs and user-identified problems will be documented using GitHub issues and fixed either in the next bugfix or official release. Future METplus Wrappers development plans are based on several contributing factors, including the needs of both the operational and research community. Issues that are in the development queue detailed in the “Issues” section of the GitHub repository. Please create a post in the METplus GitHub Discussions Forum with any questions.
1.7. Code support
Support for METplus Wrappers is provided through the METplus GitHub Discussions Forum. We will endeavor to respond to requests for help in a timely fashion. In addition, information about METplus Wrappers and tools that can be used with MET are provided on the MET Users web page.
We welcome comments and suggestions for improvements to METplus Wrappers, especially information regarding errors. Comments may be submitted using the MET Feedback form available on the MET website. In addition, comments on this document would be greatly appreciated. While we cannot promise to incorporate all suggested changes, we will certainly take all suggestions into consideration.
METplus Wrappers is a “living” set of wrappers and configuration files. Our goal is to continually enhance it and add to its capabilities. Because our time, resources, and talents can at times be limited, we welcome contributed code for future versions of METplus. These contributions may represent new use cases or new plotting functions. For more information on contributing code to METplus Wrappers, please create a post in the METplus GitHub Discussions Forum.