METplus | FAQ's

You should start by reviewing the online tutorial [link needed], which gives a step-by-step guide of using METplus, including getting it to run on your local machine.

METplus relies on numerous external dependencies; without them, METplus will not compile successfully. Because each system is unique, this is often a source of frustration for users, as incorrect paths to the dependencies, conflicting versions of software, and untested user system environments can all causing problems. Specifically for MET, please review the download page and its associated list of required external libraries, as well as a list of suggested external utilities, input data, and sample scripts for compiling the external libraries. For the python wrappers, visit the online User’s Guide, section 2.4 for the pre-requisites. Give special attention to where you place each of these, as you will need to reference them when setting up the METplus pathways to them.

Once these external dependencies have been successfully installed, you’ll need to download the METplus code you’re going to use from
GitHub. The following are currently available:

Be sure to download the most up-to-date versions of these, as they will have the most available tools with the least amount of bugs! Once the code has been placed locally, follow the instructions on the MET download page and METplus online User’s Guide to set the environmental variables. If it fails to load at first, review your log files and try to find the path or dependency causing the issue; often times something as simple as an incorrectly typed pathway is the culprit.

As you work through the installation (and continue to verification work), it’s good practice to have a copy of the user’s guides close at hand. The MET PDF user’s guide and an online guide for the Python portion of METplus are the largest source of information on METplus. If you want to know what METplus can do, it’s going to be documented somewhere in these resources! You can also review the installation process overview to understand the workflow.

If you have access to NOAA, NCAR, or select community machines, you may be able to use one of the existing builds of METplus. Review the build page to see if your system has a pre-built METplus, as well as what version is available.

If you get stuck, you have access to the GitHub issues for each of the METplus components to review for known problems (as well as historical records for fixed issues), as well as the met_help archive, where users have written in to the METplus development team, asking for help on a multitude of METplus-related subjects. You can also use a search engine to peruse the email archive, which may help you zero in on your particular question. If you still are encountering issues with getting METplus installed after reviewing the available online resources, please reach out to the help desk at met_help@ucar.edu (be sure to include the specific commands that lead to the error, the error you’re getting, and the log files for the most expedited help).

If you find yourself in this last stand situation, you may want to consider DockerHub. DockerHub currently has multiple versions of MET available for users. Docker allows the MET component of METplus to be delivered as a container, which is independent of your system’s configuration. What that means for you is your unique machine setup is no longer the hurdle it was! It does add the burden of learning another system, but we encourage users to investigate every installation avenue available to them. Visit the Docker website to understand what your OS (Mac, Windows, or Linux) will require you to download or command line execute for Docker to run. Then simply enter

docker pull dtcenter/met:9.0

into your terminal’s command line to access the latest version of MET.

If this does work for you, we do encourage you to continue to try and troubleshoot a native full METplus installation on your machine, paying special attention to the environmental paths to library dependencies, the version of your system’s compilers, and breaking down each error message (be sure your verbosity is set high) into what particular command failed to help you on your way.

You should start by reviewing the online tutorial, which gives a step-by-step guide of how to run the use cases (discussed below). The tutorial is an excellent source for checking your command line prompts for accuracy, avoiding common errors, and understanding the logic behind the tools and wrappers.

If you’d like to review the Python wrapper use cases for yourself, they are located in the METplus branch on GitHub. Under METplus/parm/use_cases/model_applications, you will find several modeling categories, one of which may hold a use case that is similar to your needs. Each use case is unique, utilizing one or more MET components which, through the use of Python wrappers, are executed by master_metplus.py (located in METplus/ush/) in accordance with the wrapper configuration files (denoted with a “.conf” file extension) that are in the model_applications subdirectories. Each use case has accompanying documentation (denoted with a “.py” file extension), which has a more reader-friendly version in the online User’s Guide. By executing these examples and having a good knowledge of the available statistical output of the MET tools that are used (a comprehensive guide of these can be found in the MET User’s Guide), you can begin to construct your own scripts and configuration files.

If you’re more interested in what each of the Python-wrapped MET tools can do and how they’re controlled, look under the METplus/parm/use_cases/met_tool_wrapper directory, where you’ll  find single use cases for each of the MET tools that are currently wrapped by Python scripts. These are a good start if you’d like to build your scripting routine piece-by-piece, to better understand how you’re final results are made.

Please note that not every MET tool is currently wrapped by Python. To review the full suite of MET components, please see the MET User's Guide.

When you’re using a new gridded dataset with the MET tool, especially if it’s causing runtime errors or unexpected output, it's always a good idea to run the plot_data_plane tool to visualize the dat This accomplishes several goals: it confirms that MET is able to read gridded data from the input file, that it's oriented correctly on the earth, and that the values are in the expected range.

For a NetCDF file (ex. "sample.nc") that contains a variable with data(time, y, x), run plot_data_plane like this:

plot_data_plane sample.nc data.ps 'name="data"; level="(0,*,*)";'

If that file contains a global attribute named: Conventions = "CF-*";  then MET interprets the file as being CF-compliant.  If not, there's still a chance that interpreting it as a CF-compliant file might work.  In that case, you can try adding

file_type = NETCDF_NCCF;

, so your command would look like

plot_data_plane sample.nc data.ps 'name="data"; level="(0,*,*)"; file_type=NETCDF_NCCF;'

As with all troubleshooting, be sure to review your scripts for syntax errors, that all uses of the MET component flags are appropriate for the tools you’re using, check the other FAQs on this page for possible solutions, take a look in the MET and METplus User Guides (specifically for any components you’re using), review the MET-help email archive (or use a search engine with “met_help” as a keyword), search the list of current known issues in GitHub, and if you’re still having issues, send an email to the help desk at met_help@ucar.edu (be sure to include the specific commands that lead to the error, the error you’re getting, and the configuration files for the most expedited help).

When a user encounters an error, especially a common one such as this, the solution is often a bit hidden at first glance. Luckily, your log file will often have the solution, after increasing METplus’ verbosity using the “-v” flag. The default for METplus is verbosity level 2, giving you minimal output, which avoids filling up log files when things are running smoothly; however, when you need to debug your METplus process, increasing the level to 3 or higher will only help you more.

As with all troubleshooting, be sure to review your scripts for syntax errors, that all uses of the MET component flags are appropriate for the tools you’re using, check the other FAQs on this page for possible solutions, take a look in the MET and METplus User Guides (specifically for any components you’re using), review the MET-help email archive (or use a search engine with “met_help” as a keyword), search the list of current known issues in GitHub, and if you’re still having issues, send an email to the help desk at met_help@ucar.edu (be sure to include the specific commands that lead to the error, the error you’re getting, and the configuration files for the most expedited help).

METviewer and METexpress are two display systems that have been constructed for exactly this purpose! Users who want a quick view of their METplus results in a streamlined system should use METexpress, currently being hosted in NOAA’s VLab. For a user that needs more customization over their graphical output, METviewer is available for download on GitHub. These are currently written in R, and there are plans to release METplotpy, a Python-based series of plotting scripts, before Fall 2020.

The main benefit of using the METplus visualization scripts is that they work easily with the output from the statistical components of MET; they were developed by the same team that helped build the rest of METplus, and any update to a METplus component is checked for compatibility across the rest of the METplus components, including the visualization scripts.

Please note that METplus is first and foremost a statistical verification package; while we strive to provide users a variety of verification techniques, including graphical output, our graphing package may not be as streamlined or customizable as the ones available to you from across the web. We appreciate those users that take advantage of what we do provide and support whatever graphical system fits your needs best.

This problem usually arises when the forecast or observation time you expect your file to contain does not align with the valid times inside the file you’re passing to METplus. Most often the confusion comes from the file name, which is some form of timestamp (for example, ModelForecast_2020-03-05-16120000.nc) that METplus uses to read in your files in chronological order; if the filename timestamp is off from the file contents, the valid times you set may result in the MET component skipping over some or all of the files as they do not contain a time within your specified limits.

Confirm the discrepancy by dumping the metadata for your file and reviewing the valid time of your file’s data and check it against the filename and your configuration file’s valid times. Also be sure to increase the verbosity level to 3 or more to help see if you have time discrepancies across multiple files, or a single file.