METplus Practical Session Guide (Version 5.0) | Session 2: Grid-to-Obs > METplus Use Case: PointStat - Standard Verification of Global Upper Air

IMPORTANT NOTE: If you are returning to the tutorial, you must source the tutorial setup script before running the following instructions. If you are unsure if you have done this step, please navigate to the Verify Environment is Set Correctly page.

METplus Use Case: PointStat - Standard Verification of Global Upper Air

This use case utilizes the MET Point-Stat tool. 

Optional: Refer to the MET Users Guide for a description of the MET tools used in this use case.
Optional: Refer to the METplus Config Glossary section of the METplus Users Guide for a reference to METplus variables used in this use case.

  1. View Configuration File
Change to the ${METPLUS_TUTORIAL_DIR} directory:
cd ${METPLUS_TUTORIAL_DIR}
View the Medium Range Weather application use-case for upper air using GDAS PrepBUFR observations, GFS global forecast, and evaluating multiple fields.
NOTE: the naming convention for the use-cases is:
[statistics tool(s)]_fcst[Model]_obs[Point Data or Analysis]_[other decriptors including file format].conf
less ${METPLUS_BUILD_BASE}/parm/use_cases/model_applications/medium_range/PointStat_fcstGFS_obsGDAS_UpperAir_MultiField_PrepBufr.conf

This use-case includes running two tools, PB2NC to extract the observations and then Point-Stat to compute statistics. Note the specification of wrappers to run is given in the PROCESS_LIST at the top of the file.

[config]
PROCESS_LIST = PB2NC, PointStat
BOTH_VAR1_NAME = TMP
BOTH_VAR1_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10

BOTH_VAR2_NAME = RH
BOTH_VAR2_LEVELS = P1000, P925, P850, P700, P500, P400, P300
...
BOTH_VAR5_NAME = HGT
BOTH_VAR5_LEVELS = P1000, P950, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10

POINT_STAT_MESSAGE_TYPE = ADPUPA

Using the PointStat configuration file, you should be able to run the use case using the sample input data set without any other changes.

  1. Run the PointStat use case:
run_metplus.py \
${METPLUS_BUILD_BASE}/parm/use_cases/model_applications/medium_range/PointStat_fcstGFS_obsGDAS_UpperAir_MultiField_PrepBufr.conf \
${METPLUS_TUTORIAL_DIR}/tutorial.conf \
config.OUTPUT_BASE=${METPLUS_TUTORIAL_DIR}/output/PointStat_UpperAir

This may take a few minutes to run.

  1. Review the output files:
ls ${METPLUS_TUTORIAL_DIR}/output/PointStat_UpperAir/gdas
less ${METPLUS_TUTORIAL_DIR}/output/PointStat_UpperAir/gdas/point_stat_000000L_20170601_000000V.stat

If you scroll down to the middle of the file, you will notice the statistics line-type starts alternating from SL1L2 (partial_sums for continuous statistics) to VL1L2 (partial_sums for vector continuous statistics). If you scroll over, you will see that the lines are different lengths. The MET Users' Guide explains what statistics are reported in each line. See point-stat output in the MET User's Guide.

V11.0.0 gfs NA 000000 20170601_000000 20170601_000000 000000 20170531_231500 20170601_004500 VGRD m/s P1000 VGRD NA P1000 ADPUPA FULL BILIN 4 NA NA NA NA SL1L2 274 0.58128 0.71095 12.1183 14.53877 14.52693 1.57316
V11.0.0 gfs NA 000000 20170601_000000 20170601_000000 000000 20170531_231500 20170601_004500 UGRD_VGRD m/s P1000 UGRD_VGRD NA P1000 ADPUPA FULL BILIN 4 NA NA NA NA VL1L2 274 -0.94226 0.58128 -0.73759 0.71095 28.62333 34.35785 32.59062 4.94574 4.67908
V11.0.0 gfs NA 000000 20170601_000000 20170601_000000 000000 20170531_231500 20170601_004500 VGRD m/s P925 VGRD NA P925 ADPUPA FULL BILIN 4 NA NA NA NA SL1L2 523 0.45376 0.44876 29.18591 29.53347 32.41237 1.34806
V11.0.0 gfs NA 000000 20170601_000000 20170601_000000 000000 20170531_231500 20170601_004500 UGRD_VGRD m/s P925 UGRD_VGRD NA P925 ADPUPA FULL BILIN 4 NA NA NA NA VL1L2 523 0.67347 0.45376 0.81969 0.44876 67.86401 67.37296 74.9574 6.98307 7.34872
  1. Update configuration file and re-run
Copy the configuration file to the user_config directory and open for editing:
cp ${METPLUS_BUILD_BASE}/parm/use_cases/model_applications/medium_range/PointStat_fcstGFS_obsGDAS_UpperAir_MultiField_PrepBufr.conf ${METPLUS_TUTORIAL_DIR}/user_config/PointStat_UpperAir_example2.conf

Let's look at the two line-types separately in a more human-readable format.

Update the POINT_STAT_OUTPUT_FLAG_SL1L2 and POINT_STAT_OUTPUT_FLAG_VL1L2 to print out both .stat and .txt output files:
vi ${METPLUS_TUTORIAL_DIR}/user_config/PointStat_UpperAir_example2.conf
POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH
POINT_STAT_OUTPUT_FLAG_VL1L2 = BOTH
Also, PB2NC has already been run, so it doesn't need to be run again.
PROCESS_LIST = PointStat
Update the OBS_POINT_STAT_INPUT_DIR to point to the output from the previous run. To do so, we need to reference the METPLUS_TUTORIAL_DIR environment variable.
vi ${METPLUS_TUTORIAL_DIR}/user_config/PointStat_UpperAir_example2.conf
OBS_POINT_STAT_INPUT_DIR = {ENV[METPLUS_TUTORIAL_DIR]}/output/PointStat_UpperAir/gdas/upper_air
  1. Rerun the use-case and compare the output
run_metplus.py \
${METPLUS_TUTORIAL_DIR}/user_config/PointStat_UpperAir_example2.conf \
${METPLUS_TUTORIAL_DIR}/tutorial.conf \
config.OUTPUT_BASE=${METPLUS_TUTORIAL_DIR}/output/PointStat_UpperAir_example2
ls ${METPLUS_TUTORIAL_DIR}/output/PointStat_UpperAir_example2/gdas -1
point_stat_000000L_20170601_000000V_sl1l2.txt
point_stat_000000L_20170601_000000V.stat
point_stat_000000L_20170601_000000V_vl1l2.txt
point_stat_000000L_20170602_000000V_sl1l2.txt
point_stat_000000L_20170602_000000V.stat
point_stat_000000L_20170602_000000V_vl1l2.txt
point_stat_000000L_20170603_000000V_sl1l2.txt
point_stat_000000L_20170603_000000V.stat
point_stat_000000L_20170603_000000V_vl1l2.txt

Inspect the .txt files, they should have the same data as in the .stat file, just separated by line type. You will notice the header includes the name of statistics in the .txt files because they are specific to each line type.