Grid-Stat, Stat-Analysis, Data-Ingest: CREDIT and GFS statistics and Data Download

model_applications/medium_range/GridStat_fcstCREDIT_GFS_obsGFS_6hrRealtime.conf

Scientific Objective

This use case is an example for verification within RAL to illustrate how to compare two models and also how to download data automatically. The use case was originally designed to be run in real-time using the now keyword in VALID_BEG and VALID_END. However, a specified date is used in this example for our automated testing. The case demonstrates how to run statistics comparing two models, NSF NCAR Community Research Earth Digital Intelligence Twin (CREDIT) and GFS for both the surface and upper air evaluation. Surface and upper air statistics are run separately since they are stored in separate observation files.

Version Added

METplus version 6.2

Datasets

Forecast: CREDIT ~0.28 degree model and GFS 0.25 degree model

Observation: GFS Analysis

Climatology: None

Location: The CREDIT model data required for this use case can be found in a sample data tarball. Each use case category will have one or more sample data tarballs. It is only necessary to download the tarball with the use case’s dataset and not the entire collection of sample data. Click here to access the METplus releases page and download sample data for the appropriate release: https://github.com/dtcenter/METplus/releases This tarball should be unpacked into the directory that you will set the value of INPUT_BASE. See Running METplus section for more information.

The GFS model data and GDAS observations are downloaded automatically. Make sure you have an internet connection.

METplus Components

This use case calls DataIngest once, GridStat 4 times and StatAnalysis once. GridStat has 4 calls, 2 for the CREDIT model and 2 for the GFS using surface and upper air observations respectively.

METplus Workflow

Beginning time (VALID_BEG): 2025-09-24 00Z

End time (VALID_END): 2025-09-24 06Z

Increment between beginning and end times (VALID_INCREMENT): 6 hours

Sequence of forecast leads to process (LEAD_SEQ): 6, 12

The DataIngest and GridStat tools are run for each time, whereas StatAnalysis is run once. This example loops by valid time. It processes 2 lead times for 2 valid times with a total of 4 runs. The times are listed below.

Init: 2025-09-23_18Z
Valid: 2025-09-24_00Z
Forecast lead: 06
Init: 2025-09-23_12Z
Valid: 2025-09-24_00Z
Forecast lead: 12
Init: 2025-09-24_00Z
Valid: 2025-09-24_06Z
Forecast lead: 06
Init: 2025-09-23_18Z
Valid: 2025-09-24_06Z
Forecast lead: 12

METplus Configuration

METplus first loads all of the configuration files found in parm/metplus_config, then it loads any configuration files passed to METplus via the command line, e.g. parm/use_cases/model_applications/medium_range/GridStat_fcstCREDIT_GFS_obsGFS_6hrRealtime.conf

[config]

# For additional information, please see the METplus Users Guide.
# https://metplus.readthedocs.io/en/latest/Users_Guide

###
# Processes to run
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list
###

PROCESS_LIST = DataIngest, GridStat(credit_surface), GridStat(credit_upper_air), GridStat(gfs_surface), GridStat(gfs_upper_air), StatAnalysis


###
# Time Info
# LOOP_BY options are INIT, VALID, RETRO, and REALTIME
# If set to INIT or RETRO:
#   INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set
# If set to VALID or REALTIME:
#   VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set
# LEAD_SEQ is the list of forecast leads to process
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control
###

LOOP_BY = VALID
VALID_TIME_FMT = %Y%m%d%H
VALID_BEG = 2025092400
VALID_END = 2025092406
VALID_INCREMENT = 6H

LEAD_SEQ = begin_end_incr(6, 12, 6)


###
# DataIngest File I/O for DataIngets, PB2NC, and GridStat
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

DATA_INGEST_1_INPUT_TEMPLATE = https://dtcenter.ucar.edu/dfiles/code/METplus/DataIngest_input/GFS_analysis/{valid?fmt=%Y%m%d}/gfs_anal_{valid?fmt=%Y%m%d%H}.sfcanl.nc
DATA_INGEST_1_OUTPUT_TEMPLATE = {OUTPUT_BASE}/data_ingest/GFS_analysis/{valid?fmt=%Y%m%d}/gfs_anal_{valid?fmt=%Y%m%d%H}.sfcanl.nc
DATA_INGEST_1_SKIP_IF_OUTPUT_EXISTS = True
DATA_INGEST_1_AUTO_DECOMPRESS = False

DATA_INGEST_2_INPUT_TEMPLATE = https://dtcenter.ucar.edu/dfiles/code/METplus/DataIngest_input/GFS_analysis/{valid?fmt=%Y%m%d}/gfs.{valid?fmt=%Y%m%d%H}.pgrb2.0p25.anl
DATA_INGEST_2_OUTPUT_TEMPLATE = {OUTPUT_BASE}/data_ingest/GFS_analysis/{valid?fmt=%Y%m%d}/gfs.{valid?fmt=%Y%m%d%H}.pgrb2.0p25.anl
DATA_INGEST_2_SKIP_IF_OUTPUT_EXISTS = True
DATA_INGEST_2_AUTO_DECOMPRESS = False

DATA_INGEST_3_INPUT_TEMPLATE = https://dtcenter.ucar.edu/dfiles/code/METplus/DataIngest_input/GFS/{init?fmt=%Y%m%d%H}/gfs.t{init?fmt=%H}z.sfluxgrbf{lead?fmt=%HHH}.grib2
DATA_INGEST_3_OUTPUT_TEMPLATE = {OUTPUT_BASE}/data_ingest/GFS/{init?fmt=%Y%m%d%H}/gfs.t{init?fmt=%H}z.sfluxgrbf{lead?fmt=%HHH}.grib2
DATA_INGEST_3_SKIP_IF_OUTPUT_EXISTS = True
DATA_INGEST_3_AUTO_DECOMPRESS = False

DATA_INGEST_4_INPUT_TEMPLATE = https://dtcenter.ucar.edu/dfiles/code/METplus/DataIngest_input/GFS/{init?fmt=%Y%m%d%H}/gfs.t{init?fmt=%H}z.pgrb2.0p25.f{lead?fmt=%HHH}
DATA_INGEST_4_OUTPUT_TEMPLATE = {OUTPUT_BASE}/data_ingest/GFS/{init?fmt=%Y%m%d%H}/gfs.t{init?fmt=%H}z.pgrb2.0p25.f{lead?fmt=%HHH}
DATA_INGEST_4_SKIP_IF_OUTPUT_EXISTS = True
DATA_INGEST_4_AUTO_DECOMPRESS = False

SURFACE_OBS_INPUT_DIR = 
SURFACE_OBS_INPUT_TEMPLATE = {DATA_INGEST_1_OUTPUT_TEMPLATE}

UA_OBS_INPUT_DIR = 
UA_OBS_INPUT_TEMPLATE = {DATA_INGEST_2_OUTPUT_TEMPLATE}

CREDIT_DIR = {INPUT_BASE}/model_applications/medium_range/PointStat_fcstCREDIT_GFS_obsGDAS_6hrRealtime/creditout/6h
CREDIT_TEMPLATE = {init?fmt=%Y%m%d%H}/{init?fmt=%Y-%m-%dT%H}Z/pred_{init?fmt=%Y-%m-%dT%H}Z_{lead?fmt=%HHH}.nc


###
# GridStat Common Settings
# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#gridstat
###

OBTYPE = GFS

FCST_IS_PROB = false

GRID_STAT_ONCE_PER_FIELD = False

GRID_STAT_CONFIG_FILE ={PARM_BASE}/met_config/GridStatConfig_wrapped

# CREDIT Grid because it's the coarsest
#GRID_STAT_REGRID_TO_GRID = /glade/derecho/scratch/jimenez/creditout/demo_nrt/6h/2025092400/2025-09-24T00Z/pred_2025-09-24T00Z_006.nc
GRID_STAT_REGRID_TO_GRID = "latlon 1280 640 -89.784877 0.000000 0.278674 0.281250"
GRID_STAT_REGRID_METHOD = BILIN
GRID_STAT_REGRID_WIDTH = 2

GRID_STAT_OUTPUT_FLAG_CTC = STAT
GRID_STAT_OUTPUT_FLAG_CTS = STAT
GRID_STAT_OUTPUT_FLAG_CNT = STAT
GRID_STAT_OUTPUT_FLAG_SL1L2 = STAT

GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE
GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE
GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE
GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE
#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE
#GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE
#GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE
#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE
#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE
#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE
GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE
#GRID_STAT_NC_PAIRS_FLAG_SEEPS =


# StatAnalysis Common Settings
###
# StatAnalysis File I/O
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

MODEL1_STAT_ANALYSIS_LOOKIN_DIR = {OUTPUT_BASE}/grid_stat/CREDIT/6h
MODEL2_STAT_ANALYSIS_LOOKIN_DIR = {OUTPUT_BASE}/grid_stat/GFS

STAT_ANALYSIS_OUTPUT_DIR = {OUTPUT_BASE}/StatAnalysis/6h

MODEL1_STAT_ANALYSIS_OUT_STAT_TEMPLATE = {model?fmt=%s}_GFS_{fcst_valid_beg?fmt=%Y%m%d%H}_{fcst_valid_end?fmt=%Y%m%d%H}_allleads
MODEL2_STAT_ANALYSIS_OUT_STAT_TEMPLATE = {MODEL1_STAT_ANALYSIS_OUT_STAT_TEMPLATE}


###
# StatAnalysis Settings
# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#statanalysis
###

STAT_ANALYSIS_CONFIG_FILE = {PARM_BASE}/met_config/STATAnalysisConfig_wrapped

MODEL1 = CREDIT
MODEL2 = GFS

# Stat-Analysis Jobs
STAT_ANALYSIS_JOB1 = -job aggregate_stat -line_type SL1L2 -out_line_type CNT -by FCST_VAR,FCST_LEAD,VX_MASK -out_stat [out_stat_file]_allValidHours_CNT.stat

STAT_ANALYSIS_JOB2 =  -job aggregate_stat -line_type CTC -out_line_type CTS -by FCST_VAR,VX_MASK,FCST_LEAD,FCST_THRESH -out_stat [out_stat_file]_allValidHours_CTS.stat


MODEL_LIST = {MODEL1},{MODEL2}
GROUP_LIST_ITEMS =
LOOP_LIST_ITEMS = MODEL_LIST


[credit_surface]
###
# GridStat File I/O
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

FCST_GRID_STAT_INPUT_DIR = {CREDIT_DIR}
FCST_GRID_STAT_INPUT_TEMPLATE = {CREDIT_TEMPLATE}

OBS_GRID_STAT_INPUT_DIR = {SURFACE_OBS_INPUT_DIR}
OBS_GRID_STAT_INPUT_TEMPLATE = {SURFACE_OBS_INPUT_TEMPLATE}

GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}/grid_stat/CREDIT/6h
GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}
GRID_STAT_OUTPUT_PREFIX = CREDIT_surface


###
# GridStat Field Info
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info
###

OBS_GRID_STAT_FILE_TYPE = NETCDF_NCCF

FCST_GRID_STAT_VAR1_NAME = t2m
FCST_GRID_STAT_VAR1_LEVELS = "(0,*,*)"
FCST_GRID_STAT_VAR1_THRESH = >273
FCST_GRID_STAT_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%HH}"; set_attr_name = "TMP";
OBS_GRID_STAT_VAR1_NAME = tmp2m
OBS_GRID_STAT_VAR1_LEVELS = "(0,*,*)"
OBS_GRID_STAT_VAR1_THRESH = >273
OBS_GRID_STAT_VAR1_OPTIONS = set_attr_name = "TMP";

FCST_GRID_STAT_VAR2_NAME = Q
FCST_GRID_STAT_VAR2_LEVELS = "(0,15,*,*)"
FCST_GRID_STAT_VAR2_OPTIONS = set_attr_lead = "{lead?fmt=%HH}"; set_attr_name = "SPFH";
OBS_GRID_STAT_VAR2_NAME = spfh2m
OBS_GRID_STAT_VAR2_LEVELS = "(0,*,*)"
OBS_GRID_STAT_VAR2_OPTIONS = set_attr_name = "SPFH";

MODEL = CREDIT


[credit_upper_air]
###
# GridStat File I/O
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

FCST_GRID_STAT_INPUT_DIR = {CREDIT_DIR}
FCST_GRID_STAT_INPUT_TEMPLATE = {CREDIT_TEMPLATE}

OBS_GRID_STAT_INPUT_DIR = {UA_OBS_INPUT_DIR}
OBS_GRID_STAT_INPUT_TEMPLATE = {UA_OBS_INPUT_TEMPLATE}

GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}/grid_stat/CREDIT/6h
GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}
GRID_STAT_OUTPUT_PREFIX = CREDIT_upper_air


###
# GridStat Field Info
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info
###
FCST_GRID_STAT_VAR1_NAME = Z500
FCST_GRID_STAT_VAR1_LEVELS = "(0,*,*)"
FCST_GRID_STAT_VAR1_OPTIONS = convert(x) = x / 9.81; set_attr_lead = "{lead?fmt=%HH}"; set_attr_units = "gpm";
OBS_GRID_STAT_VAR1_NAME = HGT
OBS_GRID_STAT_VAR1_LEVELS = P500
OBS_GRID_STAT_VAR1_OPTIONS = set_attr_name = "Z500";

FCST_GRID_STAT_VAR2_NAME = T500
FCST_GRID_STAT_VAR2_LEVELS = "(0,*,*)"
FCST_GRID_STAT_VAR2_OPTIONS = set_attr_lead = "{lead?fmt=%HH}";
OBS_GRID_STAT_VAR2_NAME = TMP
OBS_GRID_STAT_VAR2_LEVELS = P500
OBS_GRID_STAT_VAR2_OPTIONS = set_attr_name = "T500";

MODEL = CREDIT


[gfs_surface]
###
# GridStat File I/O
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

FCST_GRID_STAT_INPUT_DIR = 
FCST_GRID_STAT_INPUT_TEMPLATE = {DATA_INGEST_3_OUTPUT_TEMPLATE}

OBS_GRID_STAT_INPUT_DIR = {SURFACE_OBS_INPUT_DIR}
OBS_GRID_STAT_INPUT_TEMPLATE = {SURFACE_OBS_INPUT_TEMPLATE}

GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}/grid_stat/GFS
GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}
GRID_STAT_OUTPUT_PREFIX = GFS_surface


###
# GridStat Field Info
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info
###

OBS_GRID_STAT_FILE_TYPE = NETCDF_NCCF

FCST_GRID_STAT_VAR1_NAME = TMP
FCST_GRID_STAT_VAR1_LEVELS = Z2
FCST_GRID_STAT_VAR1_THRESH = >273
OBS_GRID_STAT_VAR1_NAME = tmp2m
OBS_GRID_STAT_VAR1_LEVELS = "(0,*,*)"
OBS_GRID_STAT_VAR1_THRESH = >273
OBS_GRID_STAT_VAR1_OPTIONS = set_attr_name = "TMP";

FCST_GRID_STAT_VAR2_NAME = SPFH
FCST_GRID_STAT_VAR2_LEVELS = Z2
OBS_GRID_STAT_VAR2_NAME = spfh2m
OBS_GRID_STAT_VAR2_LEVELS = "(0,*,*)"
OBS_GRID_STAT_VAR2_OPTIONS = set_attr_name = "SPFH";

MODEL = GFS


[gfs_upper_air]
###
# GridStat File I/O
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

FCST_GRID_STAT_INPUT_DIR =
FCST_GRID_STAT_INPUT_TEMPLATE = {DATA_INGEST_4_OUTPUT_TEMPLATE}

OBS_GRID_STAT_INPUT_DIR = {UA_OBS_INPUT_DIR}
OBS_GRID_STAT_INPUT_TEMPLATE = {UA_OBS_INPUT_TEMPLATE}

GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE}/grid_stat/GFS
GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}
GRID_STAT_OUTPUT_PREFIX = GFS_upper_air

###
# GridStat Field Info
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info
###
FCST_GRID_STAT_VAR1_NAME = HGT
FCST_GRID_STAT_VAR1_LEVELS = P500
FCST_GRID_STAT_VAR1_OPTIONS = set_attr_name = "Z500";
OBS_GRID_STAT_VAR1_NAME = HGT
OBS_GRID_STAT_VAR1_LEVELS = P500
OBS_GRID_STAT_VAR1_OPTIONS = set_attr_name = "Z500";

FCST_GRID_STAT_VAR2_NAME = TMP
FCST_GRID_STAT_VAR2_LEVELS = P500
FCST_GRID_STAT_VAR2_OPTIONS = set_attr_name = "T500";
OBS_GRID_STAT_VAR2_NAME = TMP 
OBS_GRID_STAT_VAR2_LEVELS = P500
OBS_GRID_STAT_VAR2_OPTIONS = set_attr_name = "T500";

MODEL = GFS

MET Configuration

METplus sets environment variables based on user settings in the METplus configuration file. See How METplus controls MET config file settings for more details.

YOU SHOULD NOT SET ANY OF THESE ENVIRONMENT VARIABLES YOURSELF! THEY WILL BE OVERWRITTEN BY METPLUS WHEN IT CALLS THE MET TOOLS!

If there is a setting in the MET configuration file that is currently not supported by METplus you’d like to control, please refer to: Overriding Unsupported MET config file settings

GridStatConfig_wrapped
////////////////////////////////////////////////////////////////////////////////
//
// Grid-Stat configuration file.
//
// For additional information, see the MET_BASE/config/README file.
//
////////////////////////////////////////////////////////////////////////////////

//
// Output model name to be written
//
// model =
${METPLUS_MODEL}

//
// Output description to be written
// May be set separately in each "obs.field" entry
//
// desc =
${METPLUS_DESC}

//
// Output observation type to be written
//
// obtype =
${METPLUS_OBTYPE}

////////////////////////////////////////////////////////////////////////////////

//
// Verification grid
//
// regrid = {
${METPLUS_REGRID_DICT}

////////////////////////////////////////////////////////////////////////////////

//censor_thresh =
${METPLUS_CENSOR_THRESH}
//censor_val =
${METPLUS_CENSOR_VAL}
//cat_thresh =
${METPLUS_CAT_THRESH}
cnt_thresh  	 = [ NA ];
cnt_logic   	 = UNION;
wind_thresh 	 = [ NA ];
wind_logic  	 = UNION;
eclv_points      = 0.05;
//nc_pairs_var_name =
${METPLUS_NC_PAIRS_VAR_NAME}
nc_pairs_var_suffix = "";
//hss_ec_value =
${METPLUS_HSS_EC_VALUE}

rank_corr_flag   = FALSE;

//
// Forecast and observation fields to be verified
//
fcst = {
  ${METPLUS_FCST_FILE_TYPE}
  ${METPLUS_FCST_FIELD}
  ${METPLUS_FCST_CLIMO_MEAN_DICT}
  ${METPLUS_FCST_CLIMO_STDEV_DICT}
}
obs = {
  ${METPLUS_OBS_FILE_TYPE}
  ${METPLUS_OBS_FIELD}
  ${METPLUS_OBS_CLIMO_MEAN_DICT}
  ${METPLUS_OBS_CLIMO_STDEV_DICT}
}

////////////////////////////////////////////////////////////////////////////////

//
// Climatology mean data
//
//climo_mean = {
${METPLUS_CLIMO_MEAN_DICT}


//climo_stdev = {
${METPLUS_CLIMO_STDEV_DICT}

//
// May be set separately in each "obs.field" entry
//
//climo_cdf = {
${METPLUS_CLIMO_CDF_DICT}

////////////////////////////////////////////////////////////////////////////////

//
// Verification masking regions
//
// mask = {
${METPLUS_MASK_DICT}

////////////////////////////////////////////////////////////////////////////////

//
// Confidence interval settings
//
ci_alpha  = [ 0.05 ];

boot = {
   interval = PCTILE;
   rep_prop = 1.0;
   n_rep    = 0;
   rng      = "mt19937";
   seed     = "";
}

////////////////////////////////////////////////////////////////////////////////

//
// Data smoothing methods
//
//interp = {
${METPLUS_INTERP_DICT}

////////////////////////////////////////////////////////////////////////////////

//
// Neighborhood methods
//
nbrhd = {
   field      = BOTH;
   // shape =
   ${METPLUS_NBRHD_SHAPE}
   // width =
   ${METPLUS_NBRHD_WIDTH}
   // cov_thresh =
   ${METPLUS_NBRHD_COV_THRESH}
   vld_thresh = 1.0;
}

////////////////////////////////////////////////////////////////////////////////

//
// Fourier decomposition
// May be set separately in each "obs.field" entry
//
//fourier = {
${METPLUS_FOURIER_DICT}

////////////////////////////////////////////////////////////////////////////////

//
// Gradient statistics
// May be set separately in each "obs.field" entry
//
//gradient = {
${METPLUS_GRADIENT_DICT}

////////////////////////////////////////////////////////////////////////////////

//
// Distance Map statistics
// May be set separately in each "obs.field" entry
//
//distance_map = {
${METPLUS_DISTANCE_MAP_DICT}


////////////////////////////////////////////////////////////////////////////////
// Threshold for SEEPS p1 (Probability of being dry)

//seeps_p1_thresh =
${METPLUS_SEEPS_P1_THRESH}

////////////////////////////////////////////////////////////////////////////////

//
// Statistical output types
//
//output_flag = {
${METPLUS_OUTPUT_FLAG_DICT}

//
// NetCDF matched pairs output file
// May be set separately in each "obs.field" entry
//
// nc_pairs_flag = {
${METPLUS_NC_PAIRS_FLAG_DICT}

////////////////////////////////////////////////////////////////////////////////

//ugrid_dataset =
${METPLUS_UGRID_DATASET}

//ugrid_max_distance_km =
${METPLUS_UGRID_MAX_DISTANCE_KM}

//ugrid_coordinates_file =
${METPLUS_UGRID_COORDINATES_FILE}

////////////////////////////////////////////////////////////////////////////////

//grid_weight_flag =
${METPLUS_GRID_WEIGHT_FLAG}

tmp_dir = "${MET_TMP_DIR}";

// output_prefix =
${METPLUS_OUTPUT_PREFIX}

////////////////////////////////////////////////////////////////////////////////

${METPLUS_TIME_OFFSET_WARNING}
${METPLUS_MET_CONFIG_OVERRIDES}
StatAnalysisConfig_wrapped
////////////////////////////////////////////////////////////////////////////////
//
// STAT-Analysis configuration file.
//
// For additional information, see the MET_BASE/config/README file.
//
////////////////////////////////////////////////////////////////////////////////

//
// Filtering input STAT lines by the contents of each column
//
//model = [
${METPLUS_MODEL}

//desc  = [
${METPLUS_DESC}

//fcst_lead = [
${METPLUS_FCST_LEAD}

//obs_lead  = [
${METPLUS_OBS_LEAD}

//fcst_valid_beg  =
${METPLUS_FCST_VALID_BEG}

//fcst_valid_end  =
${METPLUS_FCST_VALID_END}

fcst_valid_inc  = [];
fcst_valid_exc  = [];

//fcst_valid_hour = [
${METPLUS_FCST_VALID_HOUR}


//obs_valid_beg   =
${METPLUS_OBS_VALID_BEG}

//obs_valid_end   =
${METPLUS_OBS_VALID_END}

obs_valid_inc   = [];
obs_valid_exc   = [];

//obs_valid_hour  = [
${METPLUS_OBS_VALID_HOUR}


//fcst_init_beg   =
${METPLUS_FCST_INIT_BEG}

//fcst_init_end   =
${METPLUS_FCST_INIT_END}

fcst_init_inc   = [];
fcst_init_exc   = [];

//fcst_init_hour  = [
${METPLUS_FCST_INIT_HOUR}


//obs_init_beg    =
${METPLUS_OBS_INIT_BEG}

//obs_init_end    =
${METPLUS_OBS_INIT_END}

obs_init_inc    = [];
obs_init_exc    = [];

//obs_init_hour   = [
${METPLUS_OBS_INIT_HOUR}


//fcst_var = [
${METPLUS_FCST_VAR}
//obs_var  = [
${METPLUS_OBS_VAR}

//fcst_units = [
${METPLUS_FCST_UNITS}
//obs_units  = [
${METPLUS_OBS_UNITS}

//fcst_lev = [
${METPLUS_FCST_LEVEL}
//obs_lev  = [
${METPLUS_OBS_LEVEL}

//obtype = [
${METPLUS_OBTYPE}

//vx_mask = [
${METPLUS_VX_MASK}

//interp_mthd = [
${METPLUS_INTERP_MTHD}

//interp_pnts = [
${METPLUS_INTERP_PNTS}

//fcst_thresh = [
${METPLUS_FCST_THRESH}
//obs_thresh = [
${METPLUS_OBS_THRESH}
//cov_thresh = [
${METPLUS_COV_THRESH}

//alpha = [
${METPLUS_ALPHA}

//line_type = [
${METPLUS_LINE_TYPE}

//column = [
${METPLUS_COLUMN}

//weight = [
${METPLUS_WEIGHT}

////////////////////////////////////////////////////////////////////////////////

//
// Array of STAT-Analysis jobs to be performed on the filtered data
//
//jobs = [
${METPLUS_JOBS}

////////////////////////////////////////////////////////////////////////////////

//
// Confidence interval settings
//
out_alpha = 0.05;

boot = {
   interval = PCTILE;
   rep_prop = 1.0;
   n_rep    = 0;
   rng      = "mt19937";
   seed     = "";
}

////////////////////////////////////////////////////////////////////////////////

//
// WMO mean computation logic
//
wmo_sqrt_stats   = [ "CNT:FSTDEV",  "CNT:OSTDEV",  "CNT:ESTDEV",
                     "CNT:RMSE",    "CNT:RMSFA",   "CNT:RMSOA",
                     "VCNT:FS_RMS", "VCNT:OS_RMS", "VCNT:RMSVE",
                     "VCNT:FSTDEV", "VCNT:OSTDEV" ];

wmo_fisher_stats = [ "CNT:PR_CORR", "CNT:SP_CORR",
                     "CNT:KT_CORR", "CNT:ANOM_CORR" ];

////////////////////////////////////////////////////////////////////////////////

//
// Skill score index options
//
//ss_index_name =
${METPLUS_SS_INDEX_NAME}
//ss_index_vld_thresh =
${METPLUS_SS_INDEX_VLD_THRESH}

////////////////////////////////////////////////////////////////////////////////

//hss_ec_value =
${METPLUS_HSS_EC_VALUE}
rank_corr_flag = FALSE;
vif_flag       = FALSE;

tmp_dir = "${MET_TMP_DIR}";

//version        = "V10.0";

${METPLUS_MET_CONFIG_OVERRIDES}

Python Embedding

This use case does not use Python embedding.

User Scripting

This user case does not call a user-defined script.

Running METplus

Pass the use case configuration file to the run_metplus.py script along with any user-specific system configuration files if desired:

run_metplus.py /path/to/METplus/parm/use_cases/model_applications/medium_range/GridStat_fcstCREDIT_GFS_obsGFS_6hrRealtime.conf /path/to/user_system.conf

See Running METplus for more information.

Expected Output

A successful run will output the following both to the screen and to the logfile:

INFO: METplus has successfully finished running.

Refer to the value set for OUTPUT_BASE to find where the output data was generated. Output for this use case will be found in {OUTPUT_BASE}/model_applications/medium_range/GridStat_fcstCREDIT_GFS_obsGFS_6hrRealtime.conf. There will be 3 directories, data_ingest which contains the downloaded data, grid_stat which contains the output statistics, and StatAnalysis which contains the aggregated statistics. The data_ingest directory will contain 2 subdirectories, GFS and GFS_analysis, each with the downloaded data. The data inside the GFS directory is sorted by model initialization time and contains both surface and upper air data. These files have the format, where II is the model initialzation hours and HHH is the lead time in hours:

  • gfs.tIIz.pgrb2.0p25.fHHH

  • gfs.tIIz.sfluxgrbfHHH.grib2

The GFS_analysis directory contains one subdirectory 20250924 with 4 files:

  • gfs.2025092400.pgrb2.0p25.anl

  • gfs.2025092406.pgrb2.0p25.anl

  • gfs_anal_2025092400.sfcanl.nc

  • gfs_anal_2025092406.sfcanl.nc

Inside the grid_stat directory, there are also 2 subdirectories, CREDIT/6h and GFS. The files output to CREDIT/6h are also stored in subdirectories dated with model initialization time in the format of YYYYMMDDHH. These files have the following format, where the dates labeled are lead time, valid year, month, and day, and valid hour, minute, and second:

  • grid_stat_CREDIT_surface_HHMMSSL_YYYYMMDD_HHMMSSV.stat

  • grid_stat_CREDIT_upper_air_HHMMSSL_YYYYMMDD_HHMMSSV.stat

The files output to the GFS directory are also stored in subdirectories dated with model initialization time in the format of YYYYMMDDHH. These files have the same format as above where the dates labeled are lead time, valid year, month, and day, and valid hour, minute, and second:

  • grid_stat_GFS_surface_HHMMSSL_YYYYMMDD_HHMMSSV.stat

  • grid_stat_GFS_upper_air_HHMMSSL_YYYYMMDD_HHMMSSV.stat

The StatAnalysis directory contains 1 subdirectory (6h). Inside that directory are 4 output files:

  • CREDIT_GFS_2025092400_2025092406_allleads_allValidHours_CNT.stat

  • CREDIT_GFS_2025092400_2025092406_allleads_allValidHours_CTS.stat

  • GFS_GFS_2025092400_2025092406_allleads_allValidHours_CNT.stat

  • GFS_GFS_2025092400_2025092406_allleads_allValidHours_CTS.stat

Keywords

Note

  • DataIngestToolUseCase

  • GridStatToolUseCase

  • StatAnalysisToolUseCase

  • MediumRangeAppUseCase

  • NCAROrgUseCase

  • GRIB2FileUseCase

  • NetCDFFileUseCase

Navigate to the METplus Quick Search for Use Cases page to discover other similar use cases.

sphinx_gallery_thumbnail_path = ‘_static/medium_range-GridStat_fcstCREDIT_GFS_obsGFS_6hrRealtime.png’

Gallery generated by Sphinx-Gallery