diff --git a/jobs/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_POINT b/jobs/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_POINT deleted file mode 100755 index 0e8df9f2f3..0000000000 --- a/jobs/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_POINT +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_enspoint" ${GLOBAL_VAR_DEFNS_FP} -. $USHdir/job_preamble.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the J-job script for the task that runs METplus for point-stat -by initialitation time for all forecast hours. -========================================================================" -# -#----------------------------------------------------------------------- -# -# Call the ex-script for this J-job and pass to it the necessary varia- -# bles. -# -#----------------------------------------------------------------------- -# -$SCRIPTSdir/exregional_run_met_ensemblestat_vx_point.sh || \ -print_err_msg_exit "\ -Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." -# -#----------------------------------------------------------------------- -# -# Run job postamble. -# -#----------------------------------------------------------------------- -# -job_postamble -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 - diff --git a/jobs/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_GRID b/jobs/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT similarity index 85% rename from jobs/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_GRID rename to jobs/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT index 1606744259..0f70f0f285 100755 --- a/jobs/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_GRID +++ b/jobs/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT @@ -3,8 +3,7 @@ # #----------------------------------------------------------------------- # -# This script runs METplus for ensemble-stat on the UPP output files by -# initialization time for all forecast hours for gridded analysis. +# # #----------------------------------------------------------------------- # @@ -17,7 +16,7 @@ #----------------------------------------------------------------------- # . $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_ensgrid" ${GLOBAL_VAR_DEFNS_FP} +source_config_for_task "task_run_vx_ensgrid|task_run_vx_enspoint" ${GLOBAL_VAR_DEFNS_FP} . $USHdir/job_preamble.sh # #----------------------------------------------------------------------- @@ -52,18 +51,18 @@ print_info_msg " Entering script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" -This is the J-job script for the task that runs METplus for ensemble-stat -on gridded fields by initialization time for all forecast hours. +This is the J-job script for the task that runs either METplus's +gen_ens_prod tool or its ensemble_stat tool for ensemble verification. ========================================================================" # #----------------------------------------------------------------------- # # Call the ex-script for this J-job and pass to it the necessary varia- -# bles. +# bles. # #----------------------------------------------------------------------- # -$SCRIPTSdir/exregional_run_met_ensemblestat_vx_grid.sh || \ +$SCRIPTSdir/exregional_run_met_genensprod_or_ensemblestat.sh || \ print_err_msg_exit "\ Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." # diff --git a/jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX b/jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX similarity index 88% rename from jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX rename to jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX index 920319bdce..a9f7d3ae98 100755 --- a/jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX +++ b/jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX @@ -3,8 +3,8 @@ # #----------------------------------------------------------------------- # -# This script runs METplus for grid-stat on the UPP output files by -# initialization time for all forecast hours. +# This script runs the METplus GridStat or PointStat tool for deterministic +# verification. # #----------------------------------------------------------------------- # @@ -52,18 +52,19 @@ print_info_msg " Entering script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" -This is the J-job script for the task that runs METplus for grid-stat -by initialization time for all forecast hours. +This is the J-job script for the task that runs MET/METplus's GridStat +or PointStat tool to perform deterministic verification on a specified +field (or group of fields). ========================================================================" # #----------------------------------------------------------------------- # # Call the ex-script for this J-job and pass to it the necessary varia- -# bles. +# bles. # #----------------------------------------------------------------------- # -$SCRIPTSdir/exregional_run_met_gridstat_vx.sh || \ +$SCRIPTSdir/exregional_run_met_gridstat_or_pointstat_vx.sh || \ print_err_msg_exit "\ Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." # diff --git a/jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSMEAN b/jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSMEAN similarity index 88% rename from jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSMEAN rename to jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSMEAN index 6cc5001d33..249a0a81bd 100755 --- a/jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSMEAN +++ b/jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSMEAN @@ -3,8 +3,7 @@ # #----------------------------------------------------------------------- # -# This script runs METplus for grid-stat on the UPP output files by -# initialization time for all forecast hours for gridded analysis. +# # #----------------------------------------------------------------------- # @@ -52,18 +51,19 @@ print_info_msg " Entering script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" -This is the J-job script for the task that runs METplus for grid-stat -on gridded fields by initialization time for all forecast hours. +This is the J-job script for the task that runs MET/METplus's GridStat +or PointStat tool to perform verification on the ensemble mean of a +specified field (or group of fields). ========================================================================" # #----------------------------------------------------------------------- # # Call the ex-script for this J-job and pass to it the necessary varia- -# bles. +# bles. # #----------------------------------------------------------------------- # -$SCRIPTSdir/exregional_run_met_gridstat_vx_ensmean.sh || \ +$SCRIPTSdir/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh || \ print_err_msg_exit "\ Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." # diff --git a/jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSPROB b/jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSPROB similarity index 88% rename from jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSPROB rename to jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSPROB index 5d8590c09c..7239b7367c 100755 --- a/jobs/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSPROB +++ b/jobs/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSPROB @@ -3,8 +3,7 @@ # #----------------------------------------------------------------------- # -# This script runs METplus for grid-stat on the UPP output files by -# initialization time for all forecast hours for gridded analysis. +# # #----------------------------------------------------------------------- # @@ -52,18 +51,19 @@ print_info_msg " Entering script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" -This is the J-job script for the task that runs METplus for grid-stat -on gridded fields by initialization time for all forecast hours. +This is the J-job script for the task that runs METplus's GridStat or +PointStat tool to perform verification on the ensemble frequencies/ +probabilities of a specified field (or group of fields). ========================================================================" # #----------------------------------------------------------------------- # # Call the ex-script for this J-job and pass to it the necessary varia- -# bles. +# bles. # #----------------------------------------------------------------------- # -$SCRIPTSdir/exregional_run_met_gridstat_vx_ensprob.sh || \ +$SCRIPTSdir/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh || \ print_err_msg_exit "\ Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." # diff --git a/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX b/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX deleted file mode 100755 index 37151ff0fd..0000000000 --- a/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_pointstat" ${GLOBAL_VAR_DEFNS_FP} -. $USHdir/job_preamble.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the J-job script for the task that runs METplus for point-stat -by initialitation time for all forecast hours. -========================================================================" -# -#----------------------------------------------------------------------- -# -# Call the ex-script for this J-job and pass to it the necessary varia- -# bles. -# -#----------------------------------------------------------------------- -# -$SCRIPTSdir/exregional_run_met_pointstat_vx.sh || \ -print_err_msg_exit "\ -Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." -# -#----------------------------------------------------------------------- -# -# Run job postamble. -# -#----------------------------------------------------------------------- -# -job_postamble -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 - diff --git a/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX_ENSMEAN b/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX_ENSMEAN deleted file mode 100755 index a73a475a0c..0000000000 --- a/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX_ENSMEAN +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_enspoint_mean" ${GLOBAL_VAR_DEFNS_FP} -. $USHdir/job_preamble.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the J-job script for the task that runs METplus for point-stat -by initialitation time for all forecast hours. -========================================================================" -# -#----------------------------------------------------------------------- -# -# Call the ex-script for this J-job and pass to it the necessary varia- -# bles. -# -#----------------------------------------------------------------------- -# -$SCRIPTSdir/exregional_run_met_pointstat_vx_ensmean.sh || \ -print_err_msg_exit "\ -Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." -# -#----------------------------------------------------------------------- -# -# Run job postamble. -# -#----------------------------------------------------------------------- -# -job_postamble -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 - diff --git a/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX_ENSPROB b/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX_ENSPROB deleted file mode 100755 index af4874b560..0000000000 --- a/jobs/JREGIONAL_RUN_MET_POINTSTAT_VX_ENSPROB +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_enspoint_prob" ${GLOBAL_VAR_DEFNS_FP} -. $USHdir/job_preamble.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the J-job script for the task that runs METplus for point-stat -by initialitation time for all forecast hours. -========================================================================" -# -#----------------------------------------------------------------------- -# -# Call the ex-script for this J-job and pass to it the necessary varia- -# bles. -# -#----------------------------------------------------------------------- -# -$SCRIPTSdir/exregional_run_met_pointstat_vx_ensprob.sh || \ -print_err_msg_exit "\ -Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." -# -#----------------------------------------------------------------------- -# -# Run job postamble. -# -#----------------------------------------------------------------------- -# -job_postamble -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 - diff --git a/parm/metplus/EnsembleStat_APCP01h.conf b/parm/metplus/EnsembleStat_APCP01h.conf index a61677674a..4f78827e08 100644 --- a/parm/metplus/EnsembleStat_APCP01h.conf +++ b/parm/metplus/EnsembleStat_APCP01h.conf @@ -2,55 +2,85 @@ [config] -## Configuration-related settings such as the process list, begin and end times, etc. +# List of applications to run - only GridStat for this case PROCESS_LIST = EnsembleStat -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# LOOP_BY: Set to INIT to loop over initialization times +# time looping - 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 LOOP_BY = INIT -# Format of INIT_BEG and INT_END +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H -# Start time for METplus run -INIT_BEG={ENV[CDATE]} - -# End time for METplus run -INIT_END={ENV[CDATE]} - -# Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT=3600 - -# List of forecast leads to process -LEAD_SEQ = {ENV[fhr_list]} - +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to EnsembleStat. +# +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +# # Used in the MET config file for: model, output_prefix -MODEL = {ENV[VX_FCST_MODEL_NAME]} +# +MODEL = {{vx_fcst_model_name}} -ENSEMBLE_STAT_DESC = NA ;; not in other file +ENSEMBLE_STAT_DESC = NA # Name to identify observation data in output -OBTYPE = CCPA +OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = # not in other file +#ENSEMBLE_STAT_DESC = # The METplus EnsembleStat logging level # 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf #LOG_ENSEMBLE_STAT_VERBOSITY = 2 -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 -OBS_ENSEMBLE_STAT_WINDOW_END = 0 - OBS_FILE_WINDOW_BEGIN = 0 OBS_FILE_WINDOW_END = 0 +OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 +OBS_ENSEMBLE_STAT_WINDOW_END = 0 + # number of expected members for ensemble. Should correspond with the # number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} +ENSEMBLE_STAT_N_MEMBERS = {{num_ens_members}} # ens.ens_thresh value in the MET config file # threshold for ratio of valid files to expected files to allow app to run @@ -59,9 +89,9 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_01h_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set @@ -79,17 +109,6 @@ ENSEMBLE_STAT_REGRID_SHAPE = SQUARE ENSEMBLE_STAT_CENSOR_THRESH = ENSEMBLE_STAT_CENSOR_VAL = -#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 -#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE -#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 - -#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 -#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 -#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN -#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 - ENSEMBLE_STAT_MESSAGE_TYPE = ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE @@ -159,93 +178,107 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE - -# Ensemble Variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION -ENS_VAR1_NAME = APCP -ENS_VAR1_LEVELS = A01 -ENS_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge2.54 - -# Forecast Variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION -FCST_VAR1_NAME = APCP -FCST_VAR1_LEVELS = A01 - +# +# Ensemble variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION. +# +# ENS_VARn_THRESH must be included here in order for the netCDF file +# generated by EnsembleStat to include the ensemble probability (aka +# ensembe frequency) fields corresponding to the specified thresholds. +# These must be included because the corresonding GridStat task for +# ensemble probabilities expects to read them in as input. +# +ENS_VAR1_NAME = {{fieldname_in_fcst_input}} +ENS_VAR1_LEVELS = A{ACCUM_HH} +ENS_VAR1_THRESH = {{field_thresholds}} +# +# Get the variable ACCUM_HH from the environment. +# +ACCUM_HH = {{accum_hh}} +# +# Forecast and observation variables and levels as specified in the fcst +# field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, +# FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, +# OBS_VARn_LEVELS, (optional) OBS_VARn_OPTION. +# +FCST_VAR1_NAME = {{fieldname_in_fcst_input}} +FCST_VAR1_LEVELS = A{ACCUM_HH} FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; - -# Observation Variables and levels as specified in the obs field dictionary -# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION -OBS_VAR1_NAME = {FCST_VAR1_NAME} -OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} - +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +OBS_VAR1_LEVELS = A{ACCUM_HH} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} - [dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} - -# Forecast model input directory for EnsembleStat -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} - -# Point observation input dir for EnsembleStat +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +OUTPUT_DIR = {{output_dir}} +# +# Point observation input directory for EnsembleStat. +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = - -# Grid observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Grid observation input directory for EnsembleStat. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {{obs_input_dir}} +# +# Forecast model input directory for EnsembleStat. +# +FCST_ENSEMBLE_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -# directory containing log files -LOG_DIR = {OUTPUT_BASE}/log - -# directory for staging data -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01 - +# +# Output directory for EnsembleStat. +# +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} [filename_templates] - +# # FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members # or a single line, - filename wildcard characters may be used, ? or *. - -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z*.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for point observations. -# Example precip24_2010010112.nc +# +# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. +# +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +# OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = - -# Template to look for gridded observations. -# Example ST4.2010010112.24h -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +# +# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for climatology input to EnsembleStat relative to +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to EnsembleStat relative to +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.APCP_01h.conf - +# +# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to +# ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/EnsembleStat_APCP06h.conf b/parm/metplus/EnsembleStat_APCP06h.conf deleted file mode 100644 index d087fcef3a..0000000000 --- a/parm/metplus/EnsembleStat_APCP06h.conf +++ /dev/null @@ -1,269 +0,0 @@ -# EnsembleStat METplus Configuration - -[config] - -## Configuration-related settings such as the process list, begin and end times, etc. -PROCESS_LIST = EnsembleStat - -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# Loop through ensmeble members for making precip buckets -ENSEMBLE_STAT_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]}) - -# LOOP_BY: Set to INIT to loop over initialization times -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} - -# End time for METplus run -INIT_END = {ENV[CDATE]} - -# Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 -# -# List of forecast leads to process -# -LEAD_SEQ = {ENV[fhr_list]} -# -# Used in the MET config file for: model, output_prefix -# -MODEL = {ENV[VX_FCST_MODEL_NAME]} - -FCST_NATIVE_DATA_TYPE = GRIB - -ENSEMBLE_STAT_DESC = NA ;; not in other file - -# Name to identify observation data in output -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# Forecast data description variables -FCST_IS_PROB = false - -#ENSEMBLE_STAT_DESC = # not in other file - -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. -# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf -#LOG_ENSEMBLE_STAT_VERBOSITY = 2 - -OBS_FILE_WINDOW_BEGIN = 0 -OBS_FILE_WINDOW_END = 0 - -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 -OBS_ENSEMBLE_STAT_WINDOW_END = 0 - -# number of expected members for ensemble. Should correspond with the -# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} - -# ens.ens_thresh value in the MET config file -# threshold for ratio of valid files to expected files to allow app to run -ENSEMBLE_STAT_ENS_THRESH = 0.05 - -# ens.vld_thresh value in the MET config file -ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 - -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_06h_{OBTYPE} - -# MET Configuration file for EnsembleStat -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped - -# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. -# If the variable is not defined, or the value is not set -# than the MET default is used. -ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt - - -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST -ENSEMBLE_STAT_REGRID_METHOD = BUDGET -ENSEMBLE_STAT_REGRID_WIDTH = 2 -ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 -ENSEMBLE_STAT_REGRID_SHAPE = SQUARE - -ENSEMBLE_STAT_CENSOR_THRESH = -ENSEMBLE_STAT_CENSOR_VAL = - -ENSEMBLE_STAT_MESSAGE_TYPE = - -ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE -ENSEMBLE_STAT_SKIP_CONST = TRUE - -ENSEMBLE_STAT_OBS_ERROR_FLAG = TRUE - -ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 -ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 - -#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = -#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = -#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = -#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = -#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 -#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 - -#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = -#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = -#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = -#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = -#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 -#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 - - -ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 -ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True - -ENSEMBLE_STAT_MASK_GRID = - -ENSEMBLE_STAT_CI_ALPHA = 0.05 - -ENSEMBLE_STAT_INTERP_FIELD = BOTH -ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 -ENSEMBLE_STAT_INTERP_SHAPE = SQUARE -ENSEMBLE_STAT_INTERP_METHOD = NEAREST -ENSEMBLE_STAT_INTERP_WIDTH = 1 - -ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT - -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE -# -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -# ENS_VARn_THRESH must be included here in order for the netCDF file -# generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds -# for 06-hour APCP. These must be included because the corresonding -# GridStat task for ensemble probabilities (GridStat_vx_ensprob_APCP06h) -# expects to read them in as input. -# -ENS_VAR1_NAME = APCP_06 -ENS_VAR1_LEVELS = A06 -ENS_VAR1_THRESH = gt0.0,ge2.54,ge6.350,ge12.700 -# -# Forecast variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION. -# -FCST_VAR1_NAME = APCP_06 -FCST_VAR1_LEVELS = A06 -FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; -# -# Observation variables and levels as specified in the obs field dictionary -# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION -# -OBS_VAR1_NAME = {FCST_VAR1_NAME} -OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} -OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} - -[dir] -# -# Input and output data directories -# -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -# -# Forecast model input directory for EnsembleStat -# -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[MEM_BASE]} -# -# Point observation input dir for EnsembleStat -# -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = - -# Grid observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to EnsembleStat -# Not used in this example -ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example -ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} -# -# Directory for staging data. -# -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06 - -[filename_templates] -# -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -# -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. -# -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {ENV[MEM_CUSTOM]}metprd/PcpCombine_fcst/{ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_MEM_CUSTOM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a06h.nc - -# Template to look for point observations. -# Example precip24_2010010112.nc -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = - -# Template to look for gridded observations. -# Example ST4.2010010112.24h -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a06h.nc - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly -# -# Template to look for climatology input to EnsembleStat relative to -# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. -# -ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = -# -# Template to look for climatology input to EnsembleStat relative to -# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. -# -ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = -# -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. -# -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} -# -# Specify the location and name of the final METplus conf file. -# -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.APCP_06h.conf diff --git a/parm/metplus/EnsembleStat_APCP24h.conf b/parm/metplus/EnsembleStat_APCP24h.conf deleted file mode 100644 index 760419d852..0000000000 --- a/parm/metplus/EnsembleStat_APCP24h.conf +++ /dev/null @@ -1,269 +0,0 @@ -# EnsembleStat METplus Configuration - -[config] - -## Configuration-related settings such as the process list, begin and end times, etc. -PROCESS_LIST = EnsembleStat - -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# Loop through ensmeble members for making precip buckets -ENSEMBLE_STAT_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]}) - -# LOOP_BY: Set to INIT to loop over initialization times -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} - -# End time for METplus run -INIT_END = {ENV[CDATE]} - -# Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 -# -# List of forecast leads to process -# -LEAD_SEQ = {ENV[fhr_list]} -# -# Used in the MET config file for: model, output_prefix -# -MODEL = {ENV[VX_FCST_MODEL_NAME]} - -FCST_NATIVE_DATA_TYPE = GRIB - -ENSEMBLE_STAT_DESC = NA ;; not in other file - -# Name to identify observation data in output -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# Forecast data description variables -FCST_IS_PROB = false - -#ENSEMBLE_STAT_DESC = # not in other file - -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. -# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf -#LOG_ENSEMBLE_STAT_VERBOSITY = 2 - -OBS_FILE_WINDOW_BEGIN = 0 -OBS_FILE_WINDOW_END = 0 - -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 -OBS_ENSEMBLE_STAT_WINDOW_END = 0 - -# number of expected members for ensemble. Should correspond with the -# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} - -# ens.ens_thresh value in the MET config file -# threshold for ratio of valid files to expected files to allow app to run -ENSEMBLE_STAT_ENS_THRESH = 0.05 - -# ens.vld_thresh value in the MET config file -ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 - -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_24h_{OBTYPE} - -# MET Configuration file for EnsembleStat -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped - -# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. -# If the variable is not defined, or the value is not set -# than the MET default is used. -ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt - - -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST -ENSEMBLE_STAT_REGRID_METHOD = BUDGET -ENSEMBLE_STAT_REGRID_WIDTH = 2 -ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 -ENSEMBLE_STAT_REGRID_SHAPE = SQUARE - -ENSEMBLE_STAT_CENSOR_THRESH = -ENSEMBLE_STAT_CENSOR_VAL = - -ENSEMBLE_STAT_MESSAGE_TYPE = - -ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE -ENSEMBLE_STAT_SKIP_CONST = TRUE - -ENSEMBLE_STAT_OBS_ERROR_FLAG = TRUE - -ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 -ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 - -#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = -#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = -#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = -#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = -#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = -#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 -#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 - -#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = -#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = -#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = -#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = -#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = -#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 -#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 - - -ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 -ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False -ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True - -ENSEMBLE_STAT_MASK_GRID = - -ENSEMBLE_STAT_CI_ALPHA = 0.05 - -ENSEMBLE_STAT_INTERP_FIELD = BOTH -ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 -ENSEMBLE_STAT_INTERP_SHAPE = SQUARE -ENSEMBLE_STAT_INTERP_METHOD = NEAREST -ENSEMBLE_STAT_INTERP_WIDTH = 1 - -ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE -ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT -ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT - -ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE -ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE -ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE -# -# Ensemble variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION. -# -# ENS_VARn_THRESH must be included here in order for the netCDF file -# generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds -# for 24-hour APCP. These must be included because the corresonding -# GridStat task for ensemble probabilities (GridStat_vx_ensprob_APCP24h) -# expects to read them in as input. -# -ENS_VAR1_NAME = APCP_24 -ENS_VAR1_LEVELS = A24 -ENS_VAR1_THRESH = gt0.0,ge6.350,ge12.700,ge25.400 -# -# Forecast variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION -# -FCST_VAR1_NAME = APCP_24 -FCST_VAR1_LEVELS = A24 -FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; -# -# Observation variables and levels as specified in the obs field dictionary -# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION -# -OBS_VAR1_NAME = {FCST_VAR1_NAME} -OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} -OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} - -[dir] -# -# Input and output data directories -# -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -# -# Forecast model input directory for EnsembleStat -# -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[MEM_BASE]} -# -# Point observation input dir for EnsembleStat -# -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = - -# Grid observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to EnsembleStat -# Not used in this example -ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example -ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} -# -# Directory for staging data. -# -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24 - -[filename_templates] -# -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -# -# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to -# FCST_ENSEMBLE_STAT_INPUT_DIR. -# -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {ENV[MEM_CUSTOM]}metprd/PcpCombine_fcst/{ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_MEM_CUSTOM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a24h.nc - -# Template to look for point observations. -# Example precip24_2010010112.nc -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = - -# Template to look for gridded observations. -# Example ST4.2010010112.24h -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a24h.nc - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly -# -# Template to look for climatology input to EnsembleStat relative to -# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. -# -ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = -# -# Template to look for climatology input to EnsembleStat relative to -# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. -# -ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = -# -# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to -# ENSEMBLE_STAT_OUTPUT_DIR. -# -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} -# -# Specify the location and name of the final METplus conf file. -# -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.APCP_24h.conf diff --git a/parm/metplus/EnsembleStat_APCP03h.conf b/parm/metplus/EnsembleStat_APCPgt01h.conf similarity index 57% rename from parm/metplus/EnsembleStat_APCP03h.conf rename to parm/metplus/EnsembleStat_APCPgt01h.conf index ff339bdcdf..e8b64b6763 100644 --- a/parm/metplus/EnsembleStat_APCP03h.conf +++ b/parm/metplus/EnsembleStat_APCPgt01h.conf @@ -2,54 +2,79 @@ [config] -## Configuration-related settings such as the process list, begin and end times, etc. +# List of applications to run - only GridStat for this case PROCESS_LIST = EnsembleStat -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# Loop through ensmeble members for making precip buckets -ENSEMBLE_STAT_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]}) - -# LOOP_BY: Set to INIT to loop over initialization times +# time looping - 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 LOOP_BY = INIT -# Format of INIT_BEG and INIT_END +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} -# End time for METplus run -INIT_END = {ENV[CDATE]} +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} -# Increment between METplus runs in seconds. Must be >= 60 +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # -# List of forecast leads to process +# Location of MET configuration file to pass to EnsembleStat. # -LEAD_SEQ = {ENV[fhr_list]} +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # # Used in the MET config file for: model, output_prefix # -MODEL = {ENV[VX_FCST_MODEL_NAME]} +MODEL = {{vx_fcst_model_name}} FCST_NATIVE_DATA_TYPE = GRIB -ENSEMBLE_STAT_DESC = NA ;; not in other file +ENSEMBLE_STAT_DESC = NA # Name to identify observation data in output -OBTYPE = CCPA +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # Forecast data description variables FCST_IS_PROB = false -#ENSEMBLE_STAT_DESC = # not in other file +#ENSEMBLE_STAT_DESC = -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. +# The METplus EnsembleStat logging level +# 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf #LOG_ENSEMBLE_STAT_VERBOSITY = 2 @@ -61,7 +86,7 @@ OBS_ENSEMBLE_STAT_WINDOW_END = 0 # number of expected members for ensemble. Should correspond with the # number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} +ENSEMBLE_STAT_N_MEMBERS = {{num_ens_members}} # ens.ens_thresh value in the MET config file # threshold for ratio of valid files to expected files to allow app to run @@ -70,10 +95,9 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_03h_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} -# MET Configuration file for EnsembleStat -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set @@ -167,63 +191,68 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # # ENS_VARn_THRESH must be included here in order for the netCDF file # generated by EnsembleStat to include the ensemble probability (aka -# ensembe frequency) fields corresponding to the specified thresholds -# for 03-hour APCP. These must be included because the corresonding -# GridStat task for ensemble probabilities (GridStat_vx_ensprob_APCP03h) -# expects to read them in as input. +# ensembe frequency) fields corresponding to the specified thresholds. +# These must be included because the corresonding GridStat task for +# ensemble probabilities expects to read them in as input. # -ENS_VAR1_NAME = APCP_03 -ENS_VAR1_LEVELS = A03 -ENS_VAR1_THRESH = gt0.0,ge0.508,ge2.54,ge6.350 +ENS_VAR1_NAME = {{fieldname_in_met_output}} +ENS_VAR1_LEVELS = A{ACCUM_HH} +ENS_VAR1_THRESH = {{field_thresholds}} # -# Forecast variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION. +# Get the variable ACCUM_HH from the environment. # -FCST_VAR1_NAME = APCP_03 -FCST_VAR1_LEVELS = A03 -FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; +ACCUM_HH = {{accum_hh}} # -# Observation variables and levels as specified in the obs field dictionary -# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION +# Forecast and observation variables and levels as specified in the fcst +# field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, +# FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, +# OBS_VARn_LEVELS, (optional) OBS_VARn_OPTION. # -OBS_VAR1_NAME = {FCST_VAR1_NAME} -OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} +FCST_VAR1_NAME = {{fieldname_in_met_output}} +FCST_VAR1_LEVELS = A{ACCUM_HH} +FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; +OBS_VAR1_NAME = {{fieldname_in_met_output}} +OBS_VAR1_LEVELS = A{ACCUM_HH} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} [dir] # -# Input and output data directories +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. # -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} +OUTPUT_BASE = {{output_base}} +OUTPUT_DIR = {{output_dir}} # -# Forecast model input directory for EnsembleStat +# Point observation input directory for EnsembleStat. # -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[MEM_BASE]} +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = # -# Point observation input dir for EnsembleStat +# Grid observation input directory for EnsembleStat. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {{obs_input_dir}} +# +# Forecast model input directory for EnsembleStat. +# +FCST_ENSEMBLE_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example # -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = - -# Grid observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to EnsembleStat -# Not used in this example ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# +# Output directory for EnsembleStat. +# +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} # # Directory for staging data. # -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03 +STAGING_DIR = {{staging_dir}} [filename_templates] # @@ -233,24 +262,24 @@ STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03 # The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to # FCST_ENSEMBLE_STAT_INPUT_DIR. # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {ENV[MEM_CUSTOM]}metprd/PcpCombine_fcst/{ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_MEM_CUSTOM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a03h.nc - -# Template to look for point observations. -# Example precip24_2010010112.nc +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +# OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = - -# Template to look for gridded observations. -# Example ST4.2010010112.24h -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_ENSEMBLE_STAT_GRID_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a03h.nc +# +# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly # -# Template to look for climatology input to EnsembleStat relative to +# Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # -# Template to look for climatology input to EnsembleStat relative to +# Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = @@ -258,12 +287,4 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to # ENSEMBLE_STAT_OUTPUT_DIR. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} -# -# Specify the location and name of the final METplus conf file. -# -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.APCP_03h.conf +ENSEMBLE_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/EnsembleStat_REFC.conf b/parm/metplus/EnsembleStat_REFC.conf index 71b1945199..5379540b76 100644 --- a/parm/metplus/EnsembleStat_REFC.conf +++ b/parm/metplus/EnsembleStat_REFC.conf @@ -2,55 +2,85 @@ [config] -## Configuration-related settings such as the process list, begin and end times, etc. +# List of applications to run - only GridStat for this case PROCESS_LIST = EnsembleStat -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# LOOP_BY: Set to INIT to loop over initialization times +# time looping - 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 LOOP_BY = INIT -# Format of INIT_BEG and INT_END +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H -# Start time for METplus run -INIT_BEG={ENV[CDATE]} - -# End time for METplus run -INIT_END={ENV[CDATE]} - -# Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT=3600 - -# List of forecast leads to process -LEAD_SEQ = {ENV[fhr_list]} - +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to EnsembleStat. +# +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +# # Used in the MET config file for: model, output_prefix -MODEL = {ENV[VX_FCST_MODEL_NAME]} +# +MODEL = {{vx_fcst_model_name}} -ENSEMBLE_STAT_DESC = NA ;; not in other file +ENSEMBLE_STAT_DESC = NA # Name to identify observation data in output -OBTYPE = MRMS +OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = # not in other file +#ENSEMBLE_STAT_DESC = -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. +# The METplus EnsembleStat logging level +# 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf #LOG_ENSEMBLE_STAT_VERBOSITY = 2 -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 -OBS_ENSEMBLE_STAT_WINDOW_END = 0 - OBS_FILE_WINDOW_BEGIN = -300 OBS_FILE_WINDOW_END = 300 +OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 +OBS_ENSEMBLE_STAT_WINDOW_END = 0 + # number of expected members for ensemble. Should correspond with the # number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} +ENSEMBLE_STAT_N_MEMBERS = {{num_ens_members}} # ens.ens_thresh value in the MET config file # threshold for ratio of valid files to expected files to allow app to run @@ -59,9 +89,9 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_REFC_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set @@ -79,17 +109,8 @@ ENSEMBLE_STAT_REGRID_SHAPE = SQUARE ENSEMBLE_STAT_CENSOR_THRESH = ENSEMBLE_STAT_CENSOR_VAL = -#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 -#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE -#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 - -#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 -#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 -#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN -#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 - +# Should this parameter be set to something other than ADPSFC (maybe +# just leave empty) since we are not verifying surface fields? ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC ENSEMBLE_STAT_DUPLICATE_FLAG = NONE @@ -159,92 +180,103 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE - -# Ensemble Variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION -ENS_VAR1_NAME = REFC +# +# Ensemble variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION. +# +# ENS_VARn_THRESH must be included here in order for the netCDF file +# generated by EnsembleStat to include the ensemble probability (aka +# ensembe frequency) fields corresponding to the specified thresholds. +# These must be included because the corresonding GridStat task for +# ensemble probabilities expects to read them in as input. +# +ENS_VAR1_NAME = {{fieldname_in_fcst_input}} ENS_VAR1_LEVELS = L0 -ENS_VAR1_THRESH = ge20, ge30, ge40, ge50 - -# Forecast Variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION -FCST_VAR1_NAME = REFC +ENS_VAR1_THRESH = {{field_thresholds}} +# +# Forecast and observation variables and levels as specified in the fcst +# field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, +# FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, +# OBS_VARn_LEVELS, (optional) OBS_VARn_OPTION. +# +FCST_VAR1_NAME = {{fieldname_in_fcst_input}} FCST_VAR1_LEVELS = L0 - FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; - -# Observation Variables and levels as specified in the obs field dictionary -# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION -OBS_VAR1_NAME = MergedReflectivityQCComposite +OBS_VAR1_NAME = {{fieldname_in_obs_input}} OBS_VAR1_LEVELS = Z500 - OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; [dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} - -# Forecast model input directory for EnsembleStat -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} - -# Point observation input dir for EnsembleStat +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +OUTPUT_DIR = {{output_dir}} +# +# Point observation input directory for EnsembleStat. +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = - -# Grid observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Grid observation input directory for EnsembleStat. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {{obs_input_dir}} +# +# Forecast model input directory for EnsembleStat. +# +FCST_ENSEMBLE_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -# directory containing log files -LOG_DIR = {OUTPUT_BASE}/log - -# directory for staging data -STAGING_DIR = {OUTPUT_BASE}/stage/REFC - +# +# Output directory for EnsembleStat. +# +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} [filename_templates] - +# # FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members # or a single line, - filename wildcard characters may be used, ? or *. - -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z*.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for point observations. -# Example precip24_2010010112.nc +# +# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. +# +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +# OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = - -# Template to look for gridded observations. -# Example ST4.2010010112.24h -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 +# +# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for climatology input to EnsembleStat relative to +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to EnsembleStat relative to +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.REFC.conf - +# +# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to +# ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/EnsembleStat_RETOP.conf b/parm/metplus/EnsembleStat_RETOP.conf index 506f95456b..46286e1632 100644 --- a/parm/metplus/EnsembleStat_RETOP.conf +++ b/parm/metplus/EnsembleStat_RETOP.conf @@ -2,55 +2,85 @@ [config] -## Configuration-related settings such as the process list, begin and end times, etc. +# List of applications to run - only GridStat for this case PROCESS_LIST = EnsembleStat -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# LOOP_BY: Set to INIT to loop over initialization times +# time looping - 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 LOOP_BY = INIT -# Format of INIT_BEG and INT_END +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H -# Start time for METplus run -INIT_BEG={ENV[CDATE]} - -# End time for METplus run -INIT_END={ENV[CDATE]} - -# Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT=3600 - -# List of forecast leads to process -LEAD_SEQ = {ENV[fhr_list]} - +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} + +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to EnsembleStat. +# +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +# # Used in the MET config file for: model, output_prefix -MODEL = {ENV[VX_FCST_MODEL_NAME]} +# +MODEL = {{vx_fcst_model_name}} -ENSEMBLE_STAT_DESC = NA ;; not in other file +ENSEMBLE_STAT_DESC = NA # Name to identify observation data in output -OBTYPE = MRMS +OBTYPE = {{obtype}} -#ENSEMBLE_STAT_DESC = # not in other file +#ENSEMBLE_STAT_DESC = -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. +# The METplus EnsembleStat logging level +# 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf #LOG_ENSEMBLE_STAT_VERBOSITY = 2 -OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 -OBS_ENSEMBLE_STAT_WINDOW_END = 0 - OBS_FILE_WINDOW_BEGIN = -300 OBS_FILE_WINDOW_END = 300 +OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 +OBS_ENSEMBLE_STAT_WINDOW_END = 0 + # number of expected members for ensemble. Should correspond with the # number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} +ENSEMBLE_STAT_N_MEMBERS = {{num_ens_members}} # ens.ens_thresh value in the MET config file # threshold for ratio of valid files to expected files to allow app to run @@ -59,9 +89,9 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_RETOP_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set @@ -79,17 +109,8 @@ ENSEMBLE_STAT_REGRID_SHAPE = SQUARE ENSEMBLE_STAT_CENSOR_THRESH = ENSEMBLE_STAT_CENSOR_VAL = -#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 -#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE -#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 - -#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 -#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 -#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 -#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN -#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 - +# Should this parameter be set to something other than ADPSFC (maybe +# just leave empty) since we are not verifying surface fields? ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC ENSEMBLE_STAT_DUPLICATE_FLAG = NONE @@ -159,95 +180,107 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE - -# Ensemble Variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION -ENS_VAR1_NAME = RETOP +# +# Ensemble variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION. +# +# ENS_VARn_THRESH must be included here in order for the netCDF file +# generated by EnsembleStat to include the ensemble probability (aka +# ensembe frequency) fields corresponding to the specified thresholds. +# These must be included because the corresonding GridStat task for +# ensemble probabilities expects to read them in as input. +# +ENS_VAR1_NAME = {{fieldname_in_fcst_input}} ENS_VAR1_LEVELS = L0 -ENS_VAR1_THRESH = ge20, ge30, ge40, ge50 +ENS_VAR1_THRESH = {{field_thresholds}} # convert from meters to kilofeet: M_to_KFT(x) = x * 3.28084 * 0.001; ENS_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; - -# Forecast Variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION -FCST_VAR1_NAME = RETOP +# +# Forecast and observation variables and levels as specified in the fcst +# field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, +# FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, +# OBS_VARn_LEVELS, (optional) OBS_VARn_OPTION. +# +FCST_VAR1_NAME = {{fieldname_in_fcst_input}} FCST_VAR1_LEVELS = L0 # convert from meters to kilofeet: M_to_KFT(x) = x * 3.28084 * 0.001; FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; - -# Observation Variables and levels as specified in the obs field dictionary -# of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION - -OBS_VAR1_NAME = EchoTop18 +OBS_VAR1_NAME = {{fieldname_in_obs_input}} OBS_VAR1_LEVELS = Z500 # convert from kilometers to kilofeet: KM_to_KFT(x) = x * 3280.84 * 0.001; OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; [dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} - -# Forecast model input directory for EnsembleStat -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} - -# Point observation input dir for EnsembleStat +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +OUTPUT_DIR = {{output_dir}} +# +# Point observation input directory for EnsembleStat. +# OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = - -# Grid observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Grid observation input directory for EnsembleStat. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {{obs_input_dir}} +# +# Forecast model input directory for EnsembleStat. +# +FCST_ENSEMBLE_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -# directory containing log files -LOG_DIR = {OUTPUT_BASE}/log - -# directory for staging data -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP - +# +# Output directory for EnsembleStat. +# +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} +# +# Directory for staging data. +# +STAGING_DIR = {{staging_dir}} [filename_templates] - +# # FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members # or a single line, - filename wildcard characters may be used, ? or *. - -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z*.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for point observations. -# Example precip24_2010010112.nc +# +# The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to +# FCST_ENSEMBLE_STAT_INPUT_DIR. +# +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +# OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = - -# Template to look for gridded observations. -# Example ST4.2010010112.24h -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 +# +# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {{obs_input_fn_template}} ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for climatology input to EnsembleStat relative to +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to EnsembleStat relative to +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.RETOP.conf - +# +# The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to +# ENSEMBLE_STAT_OUTPUT_DIR. +# +ENSEMBLE_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/EnsembleStat_SFC.conf b/parm/metplus/EnsembleStat_SFC.conf index 125fae1781..1cd1495ca6 100644 --- a/parm/metplus/EnsembleStat_SFC.conf +++ b/parm/metplus/EnsembleStat_SFC.conf @@ -2,44 +2,73 @@ [config] -## Configuration-related settings such as the process list, begin and end times, etc. +# List of applications to run - only GridStat for this case PROCESS_LIST = EnsembleStat -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# LOOP_BY: Set to INIT to loop over initialization times +# time looping - 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 LOOP_BY = INIT -# Format of INIT_BEG and INIT_END +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} -# End time for METplus run -INIT_END = {ENV[CDATE]} +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} -# Increment between METplus runs in seconds. Must be >= 60 +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 -# List of forecast leads to process -LEAD_SEQ = {ENV[fhr_list]} +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to EnsembleStat. +# +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # # Used in the MET config file for: model, output_prefix # -MODEL = {ENV[VX_FCST_MODEL_NAME]} +MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA # Name to identify observation data in output -OBTYPE = NDAS +OBTYPE = {{obtype}} #ENSEMBLE_STAT_DESC = -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. +# The METplus EnsembleStat logging level +# 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf LOG_ENSEMBLE_STAT_VERBOSITY = 3 @@ -51,7 +80,7 @@ OBS_ENSEMBLE_STAT_WINDOW_END = {OBS_WINDOW_END} # number of expected members for ensemble. Should correspond with the # number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} +ENSEMBLE_STAT_N_MEMBERS = {{num_ens_members}} # ens.ens_thresh value in the MET config file # threshold for ratio of valid files to expected files to allow app to run @@ -60,10 +89,9 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPSFC_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} -# MET Configuration file for EnsembleStat -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} ENSEMBLE_STAT_OBS_QUALITY_INC = 0, 1, 2, 3, 9, NA #ENSEMBLE_STAT_OBS_QUALITY_EXC = @@ -84,7 +112,7 @@ ENSEMBLE_STAT_REGRID_TO_GRID = NONE ENSEMBLE_STAT_CENSOR_THRESH = ENSEMBLE_STAT_CENSOR_VAL = -ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC +ENSEMBLE_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} ENSEMBLE_STAT_DUPLICATE_FLAG = NONE ENSEMBLE_STAT_SKIP_CONST = FALSE @@ -153,10 +181,11 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE - -# Ensemble Variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION +# +# Ensemble variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION. +# ENS_VAR1_NAME = TMP ENS_VAR1_LEVELS = Z02 ENS_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 @@ -184,13 +213,12 @@ ENS_VAR6_NAME = HGT ENS_VAR6_LEVELS = L0 ENS_VAR6_THRESH = <152, <1520, >=914 ENS_VAR6_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING"; - - -# Forecast and observation variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION and OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION - +# +# Forecast and observation variables and levels as specified in the fcst +# field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, +# FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, +# OBS_VARn_LEVELS, (optional) OBS_VARn_OPTION. +# FCST_VAR1_NAME = TMP FCST_VAR1_LEVELS = Z2 FCST_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 @@ -224,10 +252,17 @@ OBS_VAR4_NAME = TCDC OBS_VAR4_LEVELS = L0 OBS_VAR4_THRESH = <25, >75 -BOTH_VAR5_NAME = VIS -BOTH_VAR5_LEVELS = L0 -BOTH_VAR5_THRESH = <1609, <8045, >=8045 -BOTH_VAR5_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; } +#BOTH_VAR5_NAME = VIS +#BOTH_VAR5_LEVELS = L0 +#BOTH_VAR5_THRESH = <1609, <8045, >=8045 +#BOTH_VAR5_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; } +FCST_VAR5_NAME = VIS +FCST_VAR5_LEVELS = L0 +FCST_VAR5_THRESH = <1609, <8045, >=8045 +FCST_VAR5_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; } +OBS_VAR5_NAME = VIS +OBS_VAR5_LEVELS = L0 +OBS_VAR5_THRESH = <1609, <8045, >=8045 FCST_VAR6_NAME = HGT FCST_VAR6_LEVELS = L0 @@ -235,34 +270,48 @@ FCST_VAR6_THRESH = <152, <1520, >=914 FCST_VAR6_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING"; OBS_VAR6_NAME = CEILING OBS_VAR6_LEVELS = L0 -OBS_VAR6_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; } +#OBS_VAR6_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; } +OBS_VAR6_OPTIONS = GRIB_lvl_typ = 215 OBS_VAR6_THRESH = <152, <305, >=914 [dir] -# Forecast model input directory for EnsembleStat -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[INPUT_BASE]} - -# Point observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/Pb2nc_obs - -# Grid observation input dir for EnsembleStat +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +OUTPUT_DIR = {{output_dir}} +# +# Point observation input directory for EnsembleStat. +# +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {{obs_input_dir}} +# +# Grid observation input directory for EnsembleStat. +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Forecast model input directory for EnsembleStat. +# +FCST_ENSEMBLE_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# +# Output directory for EnsembleStat. +# +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} # # Directory for staging data. # -STAGING_DIR = {OUTPUT_BASE}/stage/SFC +STAGING_DIR = {{staging_dir}} [filename_templates] # @@ -272,25 +321,24 @@ STAGING_DIR = {OUTPUT_BASE}/stage/SFC # The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to # FCST_ENSEMBLE_STAT_INPUT_DIR. # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = - {ENV[NET]}.t{init?fmt=%H}z*.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for point observations. -# Example precip24_2010010112.nc -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for gridded observations. -# Example ST4.2010010112.24h +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +# +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly # -# Template to look for climatology input to EnsembleStat relative to +# Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # -# Template to look for climatology input to EnsembleStat relative to +# Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = @@ -298,12 +346,4 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to # ENSEMBLE_STAT_OUTPUT_DIR. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_SFC_{ENV[CDATE]} -# -# Specify the location and name of the final METplus conf file. -# -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.SFC.conf +ENSEMBLE_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/EnsembleStat_UPA.conf b/parm/metplus/EnsembleStat_UPA.conf index a825834030..9a60c5ae0f 100644 --- a/parm/metplus/EnsembleStat_UPA.conf +++ b/parm/metplus/EnsembleStat_UPA.conf @@ -2,44 +2,73 @@ [config] -## Configuration-related settings such as the process list, begin and end times, etc. +# List of applications to run - only GridStat for this case PROCESS_LIST = EnsembleStat -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -LOOP_ORDER = times - -# LOOP_BY: Set to INIT to loop over initialization times +# time looping - 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 LOOP_BY = INIT -# Format of INIT_BEG and INIT_END +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {{cdate}} -# End time for METplus run -INIT_END = {ENV[CDATE]} +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {{cdate}} -# Increment between METplus runs in seconds. Must be >= 60 +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 -# List of forecast leads to process -LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6) +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {{fhr_list}} +# +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +# +LOOP_ORDER = times +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {ENSEMBLE_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to EnsembleStat. +# +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # # Used in the MET config file for: model, output_prefix # -MODEL = {ENV[VX_FCST_MODEL_NAME]} +MODEL = {{vx_fcst_model_name}} ENSEMBLE_STAT_DESC = NA # Name to identify observation data in output -OBTYPE = NDAS +OBTYPE = {{obtype}} #ENSEMBLE_STAT_DESC = -# The MET EnsembleStat logging level -# 0 quiet to 5 loud, Verbosity setting for MET EnsembleStat output, 2 is default. +# The METplus EnsembleStat logging level +# 0 quiet to 5 loud, Verbosity setting for METplus EnsembleStat output, 2 is default. # This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf LOG_ENSEMBLE_STAT_VERBOSITY = 3 @@ -51,7 +80,7 @@ OBS_ENSEMBLE_STAT_WINDOW_END = {OBS_WINDOW_END} # number of expected members for ensemble. Should correspond with the # number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE -ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} +ENSEMBLE_STAT_N_MEMBERS = {{num_ens_members}} # ens.ens_thresh value in the MET config file # threshold for ratio of valid files to expected files to allow app to run @@ -60,10 +89,9 @@ ENSEMBLE_STAT_ENS_THRESH = 0.05 # ens.vld_thresh value in the MET config file ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPUPA_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} -# MET Configuration file for EnsembleStat -ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} ENSEMBLE_STAT_OBS_QUALITY_INC = 0, 1, 2, 3, 9, NA #ENSEMBLE_STAT_OBS_QUALITY_EXC = @@ -84,7 +112,7 @@ ENSEMBLE_STAT_REGRID_TO_GRID = NONE ENSEMBLE_STAT_CENSOR_THRESH = ENSEMBLE_STAT_CENSOR_VAL = -ENSEMBLE_STAT_MESSAGE_TYPE = ADPUPA +ENSEMBLE_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} ENSEMBLE_STAT_DUPLICATE_FLAG = NONE ENSEMBLE_STAT_SKIP_CONST = FALSE @@ -153,10 +181,11 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE - -# Ensemble Variables and levels as specified in the ens field dictionary -# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, -# (optional) ENS_VARn_OPTION +# +# Ensemble variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION. +# ENS_VAR1_NAME = TMP ENS_VAR1_LEVELS = P850 ENS_VAR1_THRESH = >=288, >=293, >=298 @@ -205,12 +234,12 @@ ENS_VAR11_THRESH = <=1000, >1000&&<2500, >2500&&<4000, >2500 ENS_VAR12_NAME = HPBL ENS_VAR12_LEVELS = Z0 ENS_VAR12_THRESH = <500, <1500, >1500 - -# Forecast and observation variables and levels as specified in the fcst field dictionary -# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION and OBS_VARn_NAME, OBS_VARn_LEVELS, -# (optional) OBS_VARn_OPTION - +# +# Forecast and observation variables and levels as specified in the fcst +# field dictionary of the MET configuration file. Specify as FCST_VARn_NAME, +# FCST_VARn_LEVELS, (optional) FCST_VARn_OPTION and OBS_VARn_NAME, +# OBS_VARn_LEVELS, (optional) OBS_VARn_OPTION. +# FCST_VAR1_NAME = TMP FCST_VAR1_LEVELS = P850 FCST_VAR1_THRESH = >=288, >=293, >=298 @@ -309,30 +338,43 @@ OBS_VAR12_OPTIONS = desc = "TKE"; OBS_VAR12_THRESH = <500, <1500, >1500 [dir] -# Forecast model input directory for EnsembleStat -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[INPUT_BASE]} - -# Point observation input dir for EnsembleStat -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/Pb2nc_obs - -# Grid observation input dir for EnsembleStat +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +OUTPUT_DIR = {{output_dir}} +# +# Point observation input directory for EnsembleStat. +# +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {{obs_input_dir}} +# +# Grid observation input directory for EnsembleStat. +# OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Forecast model input directory for EnsembleStat. +# +FCST_ENSEMBLE_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example +# ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to EnsembleStat -# Not used in this example +# +# Directory containing climatology mean input to EnsembleStat. Not used +# in this example. +# ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = - -# output directory for EnsembleStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# +# Output directory for EnsembleStat. +# +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_DIR} # # Directory for staging data. # -STAGING_DIR = {OUTPUT_BASE}/stage/UPA +STAGING_DIR = {{staging_dir}} [filename_templates] # @@ -342,25 +384,24 @@ STAGING_DIR = {OUTPUT_BASE}/stage/UPA # The template FCST_ENSEMBLE_STAT_INPUT_TEMPLATE is relative to # FCST_ENSEMBLE_STAT_INPUT_DIR. # -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = - {ENV[NET]}.t{init?fmt=%H}z*.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for point observations. -# Example precip24_2010010112.nc -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for gridded observations. -# Example ST4.2010010112.24h +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for point observations relative to OBS_ENSEMBLE_STAT_POINT_INPUT_DIR. +# +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for gridded observations relative to OBS_ENSEMBLE_STAT_GRID_INPUT_DIR. +# OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly # -# Template to look for climatology input to EnsembleStat relative to +# Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. # ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = # -# Template to look for climatology input to EnsembleStat relative to +# Template for climatology input to EnsembleStat relative to # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. # ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = @@ -368,12 +409,4 @@ ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = # The template ENSEMBLE_STAT_OUTPUT_TEMPLATE is relative to # ENSEMBLE_STAT_OUTPUT_DIR. # -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/EnsembleStat -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_UPA_{ENV[CDATE]} -# -# Specify the location and name of the final METplus conf file. -# -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/EnsembleStat/metplus_final.UPA.conf +ENSEMBLE_STAT_OUTPUT_TEMPLATE = diff --git a/parm/metplus/GridStat_APCP01h.conf b/parm/metplus/GridStat_APCP01h.conf index 08c60fe915..d8a686ab00 100644 --- a/parm/metplus/GridStat_APCP01h.conf +++ b/parm/metplus/GridStat_APCP01h.conf @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {ENV[LOG_DIR]} - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/GridStat/metplus_final.APCP_01h{ENV[DOT_ENSMEM]}.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET configuration file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -75,15 +77,32 @@ GRID_STAT_REGRID_SHAPE = SQUARE #GRID_STAT_GRID_WEIGHT_FLAG = -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} -FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the forecast ensemble member. This +# makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} -# Name to identify observation data in output -OBTYPE = CCPA +FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. Here, +# we store the value of the original lead in this column, i.e. the lead +# with zero corresponding to the actual start time of the forecast (which +# is (cdate - time_lag)), not to cdate. This is just the lead in +# LEAD_SEQ with the time lag (time_lag) of the current forecast member +# added on. +# +# Uncomment this line only after upgrading to METplus 5.x. +#GRID_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -92,38 +111,51 @@ GRID_STAT_DESC = NA # are needed for different tools GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = APCP - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file -FCST_VAR1_LEVELS = A01 - -# List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = APCP - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = A01 - +# +# String to search for in the foreast input files for forecast variable +# 1. +# +FCST_VAR1_NAME = {{fieldname_in_fcst_input}} +# +# List of levels to evaluate for forecast variable 1. +# +ACCUM_HH = {{accum_hh}} +FCST_VAR1_LEVELS = A{ACCUM_HH} +# +# Lead to use both in naming of the output .stat and .nc files and for +# lead values in those files. +# +# The specification of set_attr_lead below causes MET/METplus to use the +# lead values in the variable LEAD_SEQ set above, which are the same for +# all ensemble forecast members (i.e. regardless of whether members are +# time lagged with respect to the nominal cycle date specified by cdate). +# If set_attr_lead were not specified as below, then MET/METplus would +# get the lead from the input forecast file, and that would in general +# differ from one ensemble member to the next depending on whether the +# member is time-lagged. That would cause confusion, so here, we always +# use lead values with zero lead corresponding to cdate. +# +FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; +# # List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - +# both obs and forecast variable 1. +# +BOTH_VAR1_THRESH = {{field_thresholds}} +# +# String to search for in the observation input files for observation +# variable 1. +# +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = A{ACCUM_HH} +# # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 @@ -146,14 +178,16 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -185,7 +219,7 @@ GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_FHO = STAT GRID_STAT_OUTPUT_FLAG_CTC = STAT GRID_STAT_OUTPUT_FLAG_CTS = STAT #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -209,62 +243,76 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_ENSMEM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_APCP03h.conf b/parm/metplus/GridStat_APCP03h.conf deleted file mode 100644 index c16d875e8b..0000000000 --- a/parm/metplus/GridStat_APCP03h.conf +++ /dev/null @@ -1,295 +0,0 @@ -# GridStat METplus Configuration - -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section -[config] - -# List of applications to run - only GridStat for this case -PROCESS_LIST = GridStat - -# time looping - 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 -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END using % items -# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. -# see www.strftime.org for more information -# %Y%m%d%H expands to YYYYMMDDHH -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} - -# End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} - -# Increment between METplus runs (in seconds if no units are specified). -# Must be >= 60 seconds. -INIT_INCREMENT = 3600 - -# List of forecast leads to process for each run time (init or valid) -# In hours if units are not specified -# If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} - -# Order of loops to process data - Options are times, processes -# Not relevant if only one item is in the PROCESS_LIST -# times = run all wrappers in the PROCESS_LIST for a single run time, then -# increment the run time and run all wrappers again until all times have -# been evaluated. -# processes = run the first wrapper in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST until all -# wrappers have been run -LOOP_ORDER = times - -# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only -#LOG_GRID_STAT_VERBOSITY = 2 - -# -# Specify the name of the METplus log file. -# -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} -# -# Specify the location and name of the final METplus conf file. -# -METPLUS_CONF = {OUTPUT_BASE}/metprd/GridStat/metplus_final.APCP_03h.conf -# -# Location of MET config file to pass to GridStat. -# -GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped - -# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary -# See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST -GRID_STAT_REGRID_VLD_THRESH = 0.5 -GRID_STAT_REGRID_METHOD = BUDGET -GRID_STAT_REGRID_WIDTH = 2 -GRID_STAT_REGRID_SHAPE = SQUARE - -#GRID_STAT_INTERP_FIELD = BOTH -#GRID_STAT_INTERP_VLD_THRESH = 1.0 -#GRID_STAT_INTERP_SHAPE = SQUARE -#GRID_STAT_INTERP_TYPE_METHOD = NEAREST -#GRID_STAT_INTERP_TYPE_WIDTH = 1 - -#GRID_STAT_GRID_WEIGHT_FLAG = - -# -# Name to identify model (forecast) data in output. -# -# The variable MODEL is recorded in the stat files, and the data in -# these files is then plotted (e.g. using METViewer). Here, we add a -# suffix to MODEL that identifies the forecast ensemble member. This -# makes it easier to identify each curve. -# -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} - -FCST_NATIVE_DATA_TYPE = GRIB -# -# Name to identify observation data in output. -# -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB -# -# Value to enter under the DESC column in the output stat file. -# -GRID_STAT_DESC = NA - -# List of variables to compare in GridStat - FCST_VAR1 variables correspond -# to OBS_VAR1 variables -# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations -# are needed for different tools - -GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# -# String to search for in the foreast input files for forecast variable -# 1. -# -FCST_VAR1_NAME = APCP_03 -# -# List of levels to evaluate for forecast variable 1. -# -FCST_VAR1_LEVELS = A03 -# -# List of thresholds to evaluate for each name/level combination for -# forecast variable 1. -# -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350 -# -# String to search for in the observation input files for observation -# variable 1. -# -OBS_VAR1_NAME = APCP_03 -# -# List of levels to evaluate for observation variable 1. Must be the -# same length as FCST_VAR1_LEVELS. -# -OBS_VAR1_LEVELS = A03 -# -# Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the -# filename. Not used in this example. -# -FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 -FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 -OBS_GRID_STAT_FILE_WINDOW_END = 0 - -# MET GridStat neighborhood values -# See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH - -# width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE - -# cov thresh list passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 - -# Set to true to run GridStat separately for each field specified -# Set to false to create one run of GridStat per run time that -# includes all fields specified. -GRID_STAT_ONCE_PER_FIELD = False -# -# Set to true if forecast data is probabilistic. -# -FCST_IS_PROB = False -# -# Only used if FCST_IS_PROB is true - sets probabilistic threshold -# -FCST_GRID_STAT_PROB_THRESH = ==0.1 - -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} - -# Climatology data -#GRID_STAT_CLIMO_MEAN_FILE_NAME = -#GRID_STAT_CLIMO_MEAN_FIELD = -#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = -#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = -#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = -#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = -#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = -#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_STDEV_FILE_NAME = -#GRID_STAT_CLIMO_STDEV_FIELD = -#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = -#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = -#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = -#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = -#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = -#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_CDF_BINS = 1 -#GRID_STAT_CLIMO_CDF_CENTER_BINS = False -#GRID_STAT_CLIMO_CDF_WRITE_BINS = True - -GRID_STAT_MASK_GRID = - -# Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT -GRID_STAT_OUTPUT_FLAG_CTC = STAT -GRID_STAT_OUTPUT_FLAG_CTS = STAT -#GRID_STAT_OUTPUT_FLAG_MCTC = NONE -#GRID_STAT_OUTPUT_FLAG_MCTS = NONE -GRID_STAT_OUTPUT_FLAG_CNT = STAT -#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VCNT = NONE -#GRID_STAT_OUTPUT_FLAG_PCT = NONE -#GRID_STAT_OUTPUT_FLAG_PSTD = NONE -#GRID_STAT_OUTPUT_FLAG_PJC = NONE -#GRID_STAT_OUTPUT_FLAG_PRC = NONE -#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH -GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT -GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT -GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT -#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH -#GRID_STAT_OUTPUT_FLAG_DMAP = NONE - -# NetCDF matched pairs output file -#GRID_STAT_NC_PAIRS_VAR_NAME = -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 - -# End of [config] section and start of [dir] section. -[dir] -# -# Directory containing observation input to GridStat. -# -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/PcpCombine_obs -# -# Directory containing forecast input to GridStat. -# -FCST_GRID_STAT_INPUT_DIR = {OUTPUT_BASE}/metprd/PcpCombine_fcst -# -# Directory containing climatology mean input to GridStat. Not used in -# this example. -# -GRID_STAT_CLIMO_MEAN_INPUT_DIR = -# -# Directory containing climatology mean input to GridStat. Not used in -# this example. -# -GRID_STAT_CLIMO_STDEV_INPUT_DIR = -# -# Directory in which to write output from GridStat. -# -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} -# -# Directory for staging data. -# -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h - -# End of [dir] section and start of [filename_templates] section. -[filename_templates] -# -# Template for observation input to GridStat relative to -# OBS_GRID_STAT_INPUT_DIR. -# -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a{level?fmt=%HH}h.nc -# -# Template for forecast input to GridStat relative to -# FCST_GRID_STAT_INPUT_DIR. -# -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a{level?fmt=%HH}h.nc -# -# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. -# -GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat -# -# Template for climatology input to GridStat relative to -# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. -# -GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = -# -# Template for climatology input to GridStat relative to -# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. -# -GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = -# -# Variable used to specify one or more verification mask files for -# GridStat. Not used for this example. -# -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_APCP24h.conf b/parm/metplus/GridStat_APCPgt01h.conf similarity index 70% rename from parm/metplus/GridStat_APCP24h.conf rename to parm/metplus/GridStat_APCPgt01h.conf index 2d284f123f..6d8968796d 100644 --- a/parm/metplus/GridStat_APCP24h.conf +++ b/parm/metplus/GridStat_APCPgt01h.conf @@ -21,10 +21,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. @@ -33,7 +33,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -51,11 +51,11 @@ LOOP_ORDER = times # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/metprd/GridStat/metplus_final.APCP_24h.conf +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET config file to pass to GridStat. # @@ -85,17 +85,24 @@ GRID_STAT_REGRID_SHAPE = SQUARE # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} FCST_NATIVE_DATA_TYPE = GRIB # # Name to identify observation data in output. # -OBTYPE = CCPA +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # -# Value to enter under the DESC column in the output stat file. +# Value to enter under the DESC column in the output stat file. Here, +# we store the value of the original lead in this column, i.e. the lead +# with zero corresponding to the actual start time of the forecast (which +# is (cdate - time_lag)), not to cdate. This is just the lead in +# LEAD_SEQ with the time lag (time_lag) of the current forecast member +# added on. # +# Uncomment this line only after upgrading to METplus 5.x. +#GRID_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -108,26 +115,53 @@ GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic # String to search for in the foreast input files for forecast variable # 1. # -FCST_VAR1_NAME = APCP_24 +# Note that this configuration file reads in forecast files created by +# another MET tool (PcpCombine) that names the arrays in its output +# according to fieldname_in_met_output, so the input forecast field name +# to look for here must also given by fieldname_in_met_output. +# +FCST_VAR1_NAME = {{fieldname_in_met_output}} # # List of levels to evaluate for forecast variable 1. # -FCST_VAR1_LEVELS = A24 +ACCUM_HH = {{accum_hh}} +FCST_VAR1_LEVELS = A{ACCUM_HH} +# +# Lead to use both in naming of the output .stat and .nc files and for +# lead values in those files. +# +# The specification of set_attr_lead below causes MET/METplus to use the +# lead values in the variable LEAD_SEQ set above, which are the same for +# all ensemble forecast members (i.e. regardless of whether members are +# time lagged with respect to the nominal cycle date specified by cdate). +# If set_attr_lead were not specified as below, then MET/METplus would +# get the lead from the input forecast file, and that would in general +# differ from one ensemble member to the next depending on whether the +# member is time-lagged. That would cause confusion, so here, we always +# use lead values with zero lead corresponding to cdate. +# +FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; # # List of thresholds to evaluate for each name/level combination for # forecast variable 1. # -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350,ge8.890,ge12.700,ge25.400 +BOTH_VAR1_THRESH = {{field_thresholds}} # # String to search for in the observation input files for observation # variable 1. # -OBS_VAR1_NAME = APCP_24 +# As with the forecast input files, the observation input files to this +# configuration file are from another MET tool (PcpCombine) that have +# output array names specified by fieldname_in_met_output, so here we +# use this variable to search for the field name in the input observation +# files. +# +OBS_VAR1_NAME = {{fieldname_in_met_output}} # # List of levels to evaluate for observation variable 1. Must be the # same length as FCST_VAR1_LEVELS. # -OBS_VAR1_LEVELS = A24 +OBS_VAR1_LEVELS = A{ACCUM_HH} # # Time relative to valid time (in seconds) to allow files to be considered # valid. Set both BEGIN and END to 0 to require the exact time in the @@ -164,7 +198,7 @@ FCST_IS_PROB = False # FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -220,13 +254,13 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE #GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE #GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE @@ -237,11 +271,13 @@ GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE # # Directory containing observation input to GridStat. # -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/PcpCombine_obs +#OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/PcpCombine_obs +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to GridStat. # -FCST_GRID_STAT_INPUT_DIR = {OUTPUT_BASE}/metprd/PcpCombine_fcst +#FCST_GRID_STAT_INPUT_DIR = {OUTPUT_BASE}/metprd/PcpCombine_fcst +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to GridStat. Not used in # this example. @@ -255,12 +291,19 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from GridStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +#OUTPUT_BASE = {ENV[OUTPUT_BASE]} +#GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h +#STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] @@ -268,16 +311,19 @@ STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h # Template for observation input to GridStat relative to # OBS_GRID_STAT_INPUT_DIR. # -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a{level?fmt=%HH}h.nc +#OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a{level?fmt=%HH}h.nc +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # # Template for forecast input to GridStat relative to # FCST_GRID_STAT_INPUT_DIR. # -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a{level?fmt=%HH}h.nc +#FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a{level?fmt=%HH}h.nc +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # -GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat +#GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat +GRID_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to GridStat relative to # GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/GridStat_REFC.conf b/parm/metplus/GridStat_REFC.conf index 156b450e30..9fd7e2f86c 100644 --- a/parm/metplus/GridStat_REFC.conf +++ b/parm/metplus/GridStat_REFC.conf @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {ENV[LOG_DIR]} - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/GridStat/metplus_final.REFC{ENV[DOT_ENSMEM]}.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -74,16 +76,32 @@ GRID_STAT_INTERP_TYPE_METHOD = NEAREST GRID_STAT_INTERP_TYPE_WIDTH = 1 GRID_STAT_GRID_WEIGHT_FLAG = NONE +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the forecast ensemble member. This +# makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = MRMS +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. Here, +# we store the value of the original lead in this column, i.e. the lead +# with zero corresponding to the actual start time of the forecast (which +# is (cdate - time_lag)), not to cdate. This is just the lead in +# LEAD_SEQ with the time lag (time_lag) of the current forecast member +# added on. +# +# Uncomment this line only after upgrading to METplus 5.x. +#GRID_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -92,52 +110,63 @@ GRID_STAT_DESC = NA # are needed for different tools GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = REFC - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file +# +# String to search for in the foreast input files for forecast variable +# 1. +# +FCST_VAR1_NAME = {{fieldname_in_fcst_input}} +# +# List of levels to evaluate for forecast variable 1. +# FCST_VAR1_LEVELS = L0 - -FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; - +# +# Lead to use both in naming of the output .stat and .nc files and for +# lead values in those files. +# +# The specification of set_attr_lead below causes MET/METplus to use the +# lead values in the variable LEAD_SEQ set above, which are the same for +# all ensemble forecast members (i.e. regardless of whether members are +# time lagged with respect to the nominal cycle date specified by cdate). +# If set_attr_lead were not specified as below, then MET/METplus would +# get the lead from the input forecast file, and that would in general +# differ from one ensemble member to the next depending on whether the +# member is time-lagged. That would cause confusion, so here, we always +# use lead values with zero lead corresponding to cdate. +# +FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + cnt_thresh = [ >15 ]; + cnt_logic = UNION; +# # List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = MergedReflectivityQCComposite - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = Z500 - +# both obs and forecast variable 1. +# +BOTH_VAR1_THRESH = {{field_thresholds}} +# +# String to search for in the observation input files for observation +# variable 1. +# +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = Z500 OBS_VAR1_OPTIONS = censor_thresh = [eq-999, <-20]; censor_val = [-9999, -20]; cnt_thresh = [ >15 ]; cnt_logic = UNION; - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - +# # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information GRID_STAT_NEIGHBORHOOD_FIELD = BOTH # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 1, 3, 5, 7 +GRID_STAT_NEIGHBORHOOD_WIDTH = 1,3,5,7 # shape value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE @@ -149,22 +178,24 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -# Set to true if observation data is probabilistic -# Only used if configuring forecast data as the 'OBS' input +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} + +# Set to true if observation data is probabilistic. +# Only used if configuring forecast data as the 'OBS' input. OBS_IS_PROB = false -# Only used if OBS_IS_PROB is true - sets probabilistic threshold +# Only used if OBS_IS_PROB is true - sets probabilistic threshold. OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE} - # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = #GRID_STAT_CLIMO_MEAN_FIELD = @@ -195,7 +226,7 @@ GRID_STAT_CLIMO_CDF_BINS = 1 GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_FHO = STAT GRID_STAT_OUTPUT_FLAG_CTC = STAT GRID_STAT_OUTPUT_FLAG_CTS = STAT #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -219,62 +250,76 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/REFC - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_ENSMEM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_RETOP.conf b/parm/metplus/GridStat_RETOP.conf index 77ec2fb76a..fde17ded5d 100644 --- a/parm/metplus/GridStat_RETOP.conf +++ b/parm/metplus/GridStat_RETOP.conf @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {ENV[LOG_DIR]} - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/GridStat/metplus_final.RETOP{ENV[DOT_ENSMEM]}.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -74,16 +76,32 @@ GRID_STAT_INTERP_TYPE_METHOD = NEAREST GRID_STAT_INTERP_TYPE_WIDTH = 1 GRID_STAT_GRID_WEIGHT_FLAG = NONE +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the forecast ensemble member. This +# makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = MRMS +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file +# +# Value to enter under the DESC column in the output stat file. Here, +# we store the value of the original lead in this column, i.e. the lead +# with zero corresponding to the actual start time of the forecast (which +# is (cdate - time_lag)), not to cdate. This is just the lead in +# LEAD_SEQ with the time lag (time_lag) of the current forecast member +# added on. +# +# Uncomment this line only after upgrading to METplus 5.x. +#GRID_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -92,52 +110,64 @@ GRID_STAT_DESC = NA # are needed for different tools GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = RETOP - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file +# +# String to search for in the foreast input files for forecast variable +# 1. +# +FCST_VAR1_NAME = {{fieldname_in_fcst_input}} +# +# List of levels to evaluate for forecast variable 1. +# FCST_VAR1_LEVELS = L0 - -FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; cnt_thresh = [ >0 ]; cnt_logic = UNION; - +# +# Lead to use both in naming of the output .stat and .nc files and for +# lead values in those files. +# +# The specification of set_attr_lead below causes MET/METplus to use the +# lead values in the variable LEAD_SEQ set above, which are the same for +# all ensemble forecast members (i.e. regardless of whether members are +# time lagged with respect to the nominal cycle date specified by cdate). +# If set_attr_lead were not specified as below, then MET/METplus would +# get the lead from the input forecast file, and that would in general +# differ from one ensemble member to the next depending on whether the +# member is time-lagged. That would cause confusion, so here, we always +# use lead values with zero lead corresponding to cdate. +# +FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + convert(x) = x * 3.28084 * 0.001; + cnt_thresh = [ >0 ]; + cnt_logic = UNION; +# # List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = EchoTop18 - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = Z500 - +# both obs and forecast variable 1. +# +BOTH_VAR1_THRESH = {{field_thresholds}} +# +# String to search for in the observation input files for observation +# variable 1. +# +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = Z500 OBS_VAR1_OPTIONS = convert(x) = x * 3280.84 * 0.001; censor_thresh = [<=-9.84252,eq-3.28084]; censor_val = [-9999,-16.4042]; cnt_thresh = [ >0 ]; cnt_logic = UNION; - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - +# # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information GRID_STAT_NEIGHBORHOOD_FIELD = BOTH # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 1, 3, 5, 7 +GRID_STAT_NEIGHBORHOOD_WIDTH = 1,3,5,7 # shape value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE @@ -149,22 +179,24 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -# Set to true if observation data is probabilistic -# Only used if configuring forecast data as the 'OBS' input +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} + +# Set to true if observation data is probabilistic. +# Only used if configuring forecast data as the 'OBS' input. OBS_IS_PROB = false -# Only used if OBS_IS_PROB is true - sets probabilistic threshold +# Only used if OBS_IS_PROB is true - sets probabilistic threshold. OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE} - # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = #GRID_STAT_CLIMO_MEAN_FIELD = @@ -195,7 +227,7 @@ GRID_STAT_CLIMO_CDF_BINS = 1 GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_FHO = STAT GRID_STAT_OUTPUT_FLAG_CTC = STAT GRID_STAT_OUTPUT_FLAG_CTS = STAT #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -219,62 +251,76 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_ENSMEM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensmean_APCP01h.conf b/parm/metplus/GridStat_ensmean_APCP01h.conf index fb97133fc1..5e215f5395 100644 --- a/parm/metplus/GridStat_ensmean_APCP01h.conf +++ b/parm/metplus/GridStat_ensmean_APCP01h.conf @@ -1,4 +1,4 @@ -# Ensemble Mean GridStat METplus Configuration +# Ensemble mean GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensmean/metplus_final.APCP01.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -75,12 +77,21 @@ GRID_STAT_REGRID_SHAPE = SQUARE #GRID_STAT_GRID_WEIGHT_FLAG = -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean -FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as that for the ensemble +# mean. This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensmean -# Name to identify observation data in output -OBTYPE = CCPA +FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -92,38 +103,65 @@ GRID_STAT_DESC = NA # are needed for different tools GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - +# # Name of forecast variable 1 -FCST_VAR1_NAME = APCP_01_A01_ENS_MEAN - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file -FCST_VAR1_LEVELS = A01 - +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case +# of forecasts) and outputs NetCDF file(s) in which the array names +# consist of the value of fieldname_in_met_output plus a suffix that +# specifies additional properties of the data in the array such as the +# level (which in this case is the accumulation period), the type of +# statistic, etc. In this case, this suffix is "_A01_ENS_MEAN". Thus, +# below, FCST_VAR1_NAME must be set to the value of fieldname_in_met_output +# with "_A01_ENS_MEAN" appended to it. +#FCST_VAR1_NAME = APCP_01_A01_ENS_MEAN +# +# Question: +# Why is the name of the array in the input NetCDF file (created by +# GenEnsProd) that this task reads contains ..._A01_ENS_MEAN instead of +# ..._A1_ENS_MEAN, as is the case for greater than 1-hour accumulation? +# If that were the case, we could use ACCUM_NO_PAD here instead of hard- +# coding the "A01", which would make it consistent with what is done in +# the METplus conf files for accumulation > 1 hour (e.g. 3, 6, and 24 +# hour). +# +#FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A{ENV[ACCUM_NO_PAD]}_ENS_MEAN +FCST_VAR1_NAME = {{fieldname_in_met_output}}_A01_ENS_MEAN +# +# List of levels to evaluate for forecast variable 1. +# +ACCUM_HH = {{accum_hh}} +FCST_VAR1_LEVELS = A{ACCUM_HH} +# # List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge2.54 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = APCP - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = A01 - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - +# observation and forecast variable 1. +# +BOTH_VAR1_THRESH = {{field_thresholds}} +# +# Name of observation variable 1. +# +# Note: +# This is the name of the field in the grib2 observation file. Thus, +# it should not be set to {{fieldname_in_met_output}} because the +# value of fieldname_in_met_output is in general not the same as the +# name of the field in the grib2 observation file (although it can be +# for certain fields). If you do and it doesn't match, you may get an +# error like this from METplus: +# ERROR : VarInfoGrib2::set_dict() -> unrecognized GRIB2 field abbreviation ... +# +#OBS_VAR1_NAME = APCP +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = A{ACCUM_HH} +# # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 @@ -146,14 +184,16 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensmean +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -185,7 +225,7 @@ GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ens GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_FHO = STAT GRID_STAT_OUTPUT_FLAG_CTC = STAT GRID_STAT_OUTPUT_FLAG_CTS = STAT #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -209,62 +249,78 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_ensmean - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensmean - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensmean_APCP03h.conf b/parm/metplus/GridStat_ensmean_APCP03h.conf deleted file mode 100644 index 09d16759a6..0000000000 --- a/parm/metplus/GridStat_ensmean_APCP03h.conf +++ /dev/null @@ -1,270 +0,0 @@ -# Ensemble Mean GridStat METplus Configuration - -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section -[config] - -# List of applications to run - only GridStat for this case -PROCESS_LIST = GridStat - -# time looping - 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 -LOOP_BY = INIT - -# Format of INIT_BEG and INT_END using % items -# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. -# see www.strftime.org for more information -# %Y%m%d%H expands to YYYYMMDDHH -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} - -# End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} - -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds -INIT_INCREMENT = 3600 - -# List of forecast leads to process for each run time (init or valid) -# In hours if units are not specified -# If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} - -# Order of loops to process data - Options are times, processes -# Not relevant if only one item is in the PROCESS_LIST -# times = run all wrappers in the PROCESS_LIST for a single run time, then -# increment the run time and run all wrappers again until all times have -# been evaluated. -# processes = run the first wrapper in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST until all -# wrappers have been run -LOOP_ORDER = times - -# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only -#LOG_GRID_STAT_VERBOSITY = 2 - -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensmean/metplus_final.APCP03.conf - -# Location of MET config file to pass to GridStat -GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped - -# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary -# See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST -GRID_STAT_REGRID_VLD_THRESH = 0.5 -GRID_STAT_REGRID_METHOD = BUDGET -GRID_STAT_REGRID_WIDTH = 2 -GRID_STAT_REGRID_SHAPE = SQUARE - -#GRID_STAT_INTERP_FIELD = BOTH -#GRID_STAT_INTERP_VLD_THRESH = 1.0 -#GRID_STAT_INTERP_SHAPE = SQUARE -#GRID_STAT_INTERP_TYPE_METHOD = NEAREST -#GRID_STAT_INTERP_TYPE_WIDTH = 1 - -#GRID_STAT_GRID_WEIGHT_FLAG = - -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean -FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file -GRID_STAT_DESC = NA - -# List of variables to compare in GridStat - FCST_VAR1 variables correspond -# to OBS_VAR1 variables -# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations -# are needed for different tools - -GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = APCP_03_A3_ENS_MEAN - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file -FCST_VAR1_LEVELS = A3 - -# List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 -BOTH_VAR1_THRESH = gt0.0,ge0.508,ge2.54,ge6.350 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = APCP_03 - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = A3 - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - -# Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. -FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 -FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 -OBS_GRID_STAT_FILE_WINDOW_END = 0 - -# MET GridStat neighborhood values -# See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH - -# width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE - -# cov thresh list passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 - -# Set to true to run GridStat separately for each field specified -# Set to false to create one run of GridStat per run time that -# includes all fields specified. -GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic -FCST_IS_PROB = False - -# Only used if FCST_IS_PROB is true - sets probabilistic threshold -FCST_GRID_STAT_PROB_THRESH = ==0.1 - -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensmean - -# Climatology data -#GRID_STAT_CLIMO_MEAN_FILE_NAME = -#GRID_STAT_CLIMO_MEAN_FIELD = -#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = -#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = -#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = -#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = -#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = -#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_STDEV_FILE_NAME = -#GRID_STAT_CLIMO_STDEV_FIELD = -#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = -#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = -#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = -#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = -#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = -#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_CDF_BINS = 1 -#GRID_STAT_CLIMO_CDF_CENTER_BINS = False -#GRID_STAT_CLIMO_CDF_WRITE_BINS = True - -GRID_STAT_MASK_GRID = - -# Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT -GRID_STAT_OUTPUT_FLAG_CTC = STAT -GRID_STAT_OUTPUT_FLAG_CTS = STAT -#GRID_STAT_OUTPUT_FLAG_MCTC = NONE -#GRID_STAT_OUTPUT_FLAG_MCTS = NONE -GRID_STAT_OUTPUT_FLAG_CNT = STAT -#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VCNT = NONE -#GRID_STAT_OUTPUT_FLAG_PCT = NONE -#GRID_STAT_OUTPUT_FLAG_PSTD = NONE -#GRID_STAT_OUTPUT_FLAG_PJC = NONE -#GRID_STAT_OUTPUT_FLAG_PRC = NONE -#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH -GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT -GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT -GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT -#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH -#GRID_STAT_OUTPUT_FLAG_DMAP = NONE - -# NetCDF matched pairs output file -#GRID_STAT_NC_PAIRS_VAR_NAME = -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 - -# End of [config] section and start of [dir] section -[dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to GridStat -# Not used in this example -GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example -GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_ensmean - -# End of [dir] section and start of [filename_templates] section -[filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a03h.nc - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensmean - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example -GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example -GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensmean_APCP06h.conf b/parm/metplus/GridStat_ensmean_APCP06h.conf deleted file mode 100644 index 363327eb4a..0000000000 --- a/parm/metplus/GridStat_ensmean_APCP06h.conf +++ /dev/null @@ -1,270 +0,0 @@ -# Ensemble Mean GridStat METplus Configuration - -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section -[config] - -# List of applications to run - only GridStat for this case -PROCESS_LIST = GridStat - -# time looping - 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 -LOOP_BY = INIT - -# Format of INIT_BEG and INT_END using % items -# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. -# see www.strftime.org for more information -# %Y%m%d%H expands to YYYYMMDDHH -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} - -# End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} - -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds -INIT_INCREMENT = 3600 - -# List of forecast leads to process for each run time (init or valid) -# In hours if units are not specified -# If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} - -# Order of loops to process data - Options are times, processes -# Not relevant if only one item is in the PROCESS_LIST -# times = run all wrappers in the PROCESS_LIST for a single run time, then -# increment the run time and run all wrappers again until all times have -# been evaluated. -# processes = run the first wrapper in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST until all -# wrappers have been run -LOOP_ORDER = times - -# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only -#LOG_GRID_STAT_VERBOSITY = 2 - -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensmean/metplus_final.APCP06.conf - -# Location of MET config file to pass to GridStat -GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped - -# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary -# See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST -GRID_STAT_REGRID_VLD_THRESH = 0.5 -GRID_STAT_REGRID_METHOD = BUDGET -GRID_STAT_REGRID_WIDTH = 2 -GRID_STAT_REGRID_SHAPE = SQUARE - -#GRID_STAT_INTERP_FIELD = BOTH -#GRID_STAT_INTERP_VLD_THRESH = 1.0 -#GRID_STAT_INTERP_SHAPE = SQUARE -#GRID_STAT_INTERP_TYPE_METHOD = NEAREST -#GRID_STAT_INTERP_TYPE_WIDTH = 1 - -#GRID_STAT_GRID_WEIGHT_FLAG = - -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean -FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file -GRID_STAT_DESC = NA - -# List of variables to compare in GridStat - FCST_VAR1 variables correspond -# to OBS_VAR1 variables -# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations -# are needed for different tools - -GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = APCP_06_A6_ENS_MEAN - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file -FCST_VAR1_LEVELS = A06 - -# List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 -BOTH_VAR1_THRESH = gt0.0,ge2.54,ge6.350,ge12.700 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = APCP_06 - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = A06 - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - -# Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. -FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 -FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 -OBS_GRID_STAT_FILE_WINDOW_END = 0 - -# MET GridStat neighborhood values -# See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH - -# width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE - -# cov thresh list passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 - -# Set to true to run GridStat separately for each field specified -# Set to false to create one run of GridStat per run time that -# includes all fields specified. -GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic -FCST_IS_PROB = False - -# Only used if FCST_IS_PROB is true - sets probabilistic threshold -FCST_GRID_STAT_PROB_THRESH = ==0.1 - -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensmean - -# Climatology data -#GRID_STAT_CLIMO_MEAN_FILE_NAME = -#GRID_STAT_CLIMO_MEAN_FIELD = -#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = -#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = -#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = -#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = -#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = -#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_STDEV_FILE_NAME = -#GRID_STAT_CLIMO_STDEV_FIELD = -#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = -#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = -#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = -#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = -#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = -#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_CDF_BINS = 1 -#GRID_STAT_CLIMO_CDF_CENTER_BINS = False -#GRID_STAT_CLIMO_CDF_WRITE_BINS = True - -GRID_STAT_MASK_GRID = - -# Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT -GRID_STAT_OUTPUT_FLAG_CTC = STAT -GRID_STAT_OUTPUT_FLAG_CTS = STAT -#GRID_STAT_OUTPUT_FLAG_MCTC = NONE -#GRID_STAT_OUTPUT_FLAG_MCTS = NONE -GRID_STAT_OUTPUT_FLAG_CNT = STAT -#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VCNT = NONE -#GRID_STAT_OUTPUT_FLAG_PCT = NONE -#GRID_STAT_OUTPUT_FLAG_PSTD = NONE -#GRID_STAT_OUTPUT_FLAG_PJC = NONE -#GRID_STAT_OUTPUT_FLAG_PRC = NONE -#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH -GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT -GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT -GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT -#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH -#GRID_STAT_OUTPUT_FLAG_DMAP = NONE - -# NetCDF matched pairs output file -#GRID_STAT_NC_PAIRS_VAR_NAME = -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 - -# End of [config] section and start of [dir] section -[dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to GridStat -# Not used in this example -GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example -GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_ensmean - -# End of [dir] section and start of [filename_templates] section -[filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a06h.nc - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensmean - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example -GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example -GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensmean_APCP24h.conf b/parm/metplus/GridStat_ensmean_APCP24h.conf deleted file mode 100644 index 5d36222efd..0000000000 --- a/parm/metplus/GridStat_ensmean_APCP24h.conf +++ /dev/null @@ -1,270 +0,0 @@ -# Ensemble Mean GridStat METplus Configuration - -# section heading for [config] variables - all items below this line and -# before the next section heading correspond to the [config] section -[config] - -# List of applications to run - only GridStat for this case -PROCESS_LIST = GridStat - -# time looping - 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 -LOOP_BY = INIT - -# Format of INIT_BEG and INT_END using % items -# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. -# see www.strftime.org for more information -# %Y%m%d%H expands to YYYYMMDDHH -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} - -# End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} - -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds -INIT_INCREMENT = 3600 - -# List of forecast leads to process for each run time (init or valid) -# In hours if units are not specified -# If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} - -# Order of loops to process data - Options are times, processes -# Not relevant if only one item is in the PROCESS_LIST -# times = run all wrappers in the PROCESS_LIST for a single run time, then -# increment the run time and run all wrappers again until all times have -# been evaluated. -# processes = run the first wrapper in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST until all -# wrappers have been run -LOOP_ORDER = times - -# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only -#LOG_GRID_STAT_VERBOSITY = 2 - -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensmean/metplus_final.APCP24.conf - -# Location of MET config file to pass to GridStat -GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped - -# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary -# See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST -GRID_STAT_REGRID_VLD_THRESH = 0.5 -GRID_STAT_REGRID_METHOD = BUDGET -GRID_STAT_REGRID_WIDTH = 2 -GRID_STAT_REGRID_SHAPE = SQUARE - -#GRID_STAT_INTERP_FIELD = BOTH -#GRID_STAT_INTERP_VLD_THRESH = 1.0 -#GRID_STAT_INTERP_SHAPE = SQUARE -#GRID_STAT_INTERP_TYPE_METHOD = NEAREST -#GRID_STAT_INTERP_TYPE_WIDTH = 1 - -#GRID_STAT_GRID_WEIGHT_FLAG = - -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean -FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# set the desc value in the GridStat MET config file -GRID_STAT_DESC = NA - -# List of variables to compare in GridStat - FCST_VAR1 variables correspond -# to OBS_VAR1 variables -# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations -# are needed for different tools - -GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = APCP_24_A24_ENS_MEAN - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file -FCST_VAR1_LEVELS = A24 - -# List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 -BOTH_VAR1_THRESH = gt0.0,ge6.350,ge12.700,ge25.400 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = APCP_24 - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = A24 - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - -# Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. -FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 -FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 -OBS_GRID_STAT_FILE_WINDOW_END = 0 - -# MET GridStat neighborhood values -# See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH - -# width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE - -# cov thresh list passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 - -# Set to true to run GridStat separately for each field specified -# Set to false to create one run of GridStat per run time that -# includes all fields specified. -GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic -FCST_IS_PROB = False - -# Only used if FCST_IS_PROB is true - sets probabilistic threshold -FCST_GRID_STAT_PROB_THRESH = ==0.1 - -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensmean - -# Climatology data -#GRID_STAT_CLIMO_MEAN_FILE_NAME = -#GRID_STAT_CLIMO_MEAN_FIELD = -#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = -#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = -#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = -#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = -#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = -#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_STDEV_FILE_NAME = -#GRID_STAT_CLIMO_STDEV_FIELD = -#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = -#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = -#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = -#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = -#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = -#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = -#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = -#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = - -#GRID_STAT_CLIMO_CDF_BINS = 1 -#GRID_STAT_CLIMO_CDF_CENTER_BINS = False -#GRID_STAT_CLIMO_CDF_WRITE_BINS = True - -GRID_STAT_MASK_GRID = - -# Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT -GRID_STAT_OUTPUT_FLAG_CTC = STAT -GRID_STAT_OUTPUT_FLAG_CTS = STAT -#GRID_STAT_OUTPUT_FLAG_MCTC = NONE -#GRID_STAT_OUTPUT_FLAG_MCTS = NONE -GRID_STAT_OUTPUT_FLAG_CNT = STAT -#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE -#GRID_STAT_OUTPUT_FLAG_VCNT = NONE -#GRID_STAT_OUTPUT_FLAG_PCT = NONE -#GRID_STAT_OUTPUT_FLAG_PSTD = NONE -#GRID_STAT_OUTPUT_FLAG_PJC = NONE -#GRID_STAT_OUTPUT_FLAG_PRC = NONE -#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH -GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT -GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT -GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT -#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH -#GRID_STAT_OUTPUT_FLAG_DMAP = NONE - -# NetCDF matched pairs output file -#GRID_STAT_NC_PAIRS_VAR_NAME = -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 - -# End of [config] section and start of [dir] section -[dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to GridStat -# Not used in this example -GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example -GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_ensmean - -# End of [dir] section and start of [filename_templates] section -[filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a24h.nc - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensmean - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example -GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example -GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_APCP06h.conf b/parm/metplus/GridStat_ensmean_APCPgt01h.conf similarity index 72% rename from parm/metplus/GridStat_APCP06h.conf rename to parm/metplus/GridStat_ensmean_APCPgt01h.conf index eb33a5ab8c..09dd54d68c 100644 --- a/parm/metplus/GridStat_APCP06h.conf +++ b/parm/metplus/GridStat_ensmean_APCPgt01h.conf @@ -1,4 +1,4 @@ -# GridStat METplus Configuration +# Ensemble mean GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -21,10 +21,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. @@ -33,7 +33,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -51,11 +51,11 @@ LOOP_ORDER = times # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/metprd/GridStat/metplus_final.APCP_06h.conf +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET config file to pass to GridStat. # @@ -82,20 +82,19 @@ GRID_STAT_REGRID_SHAPE = SQUARE # # The variable MODEL is recorded in the stat files, and the data in # these files is then plotted (e.g. using METViewer). Here, we add a -# suffix to MODEL that identifies the forecast ensemble member. This -# makes it easier to identify each curve. +# suffix to MODEL that identifies the data as that for the ensemble +# mean. This makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} +MODEL = {{vx_fcst_model_name}}_ensmean FCST_NATIVE_DATA_TYPE = GRIB # # Name to identify observation data in output. # -OBTYPE = CCPA +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB -# -# Value to enter under the DESC column in the output stat file. -# + +# set the desc value in the GridStat MET config file GRID_STAT_DESC = NA # List of variables to compare in GridStat - FCST_VAR1 variables correspond @@ -105,29 +104,55 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; # -# String to search for in the foreast input files for forecast variable -# 1. -# -FCST_VAR1_NAME = APCP_06 +# Name of forecast variable 1 +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by +# MET's pcp_combine tool. The latter reads in grib2 file(s) containing +# 1 hour accumulation data (in this case, from forecasts) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files from pcp_combine name their arrays as specified by +# the environment variable FIELDNAME_IN_MET_OUTPUT. The gen_ens_prod +# tool then takes this array name and, in its output NetCDF files, +# creates arrays whose names consist of the original array name in the +# pcp_combine output (FIELDNAME_IN_MET_OUTPUT) plus a suffix that specifies +# additional properties of the data in the array such as the level (which +# in this case is the accumulation period), the type of statistic, etc. +# In this case, this suffix is "_A3_ENS_MEAN". Thus, below, FCST_VAR1_NAME +# must be set to the value of FIELDNAME_IN_MET_OUTPUT with "_A3_ENS_MEAN" +# appended to it. +# +#FCST_VAR1_NAME = APCP_A3_ENS_MEAN +FCST_VAR1_NAME = {{fieldname_in_met_output}}_A{{accum_no_pad}}_ENS_MEAN # # List of levels to evaluate for forecast variable 1. # -FCST_VAR1_LEVELS = A06 +ACCUM_HH = {{accum_hh}} +FCST_VAR1_LEVELS = A{ACCUM_HH} # # List of thresholds to evaluate for each name/level combination for -# forecast variable 1. +# observation and forecast variable 1. # -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350,ge8.890,ge12.700 +BOTH_VAR1_THRESH = {{field_thresholds}} # -# String to search for in the observation input files for observation -# variable 1. +# Name of observation variable 1. # -OBS_VAR1_NAME = APCP_06 +# Note: +# This is the name of the field in the NetCDF file created by MET's +# pcp_combine tool. This tool reads in the grib2 file(s) containing +# 1 hour accumulation data (in this case, from observations) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files name their arrays as specified by the environment +# variable FIELDNAME_IN_MET_OUTPUT. Thus, that is the value we set +# OBS_VAR1_NAME to here, not to the name of the variable in the grib2 +# file. +# +OBS_VAR1_NAME = {{fieldname_in_met_output}} # # List of levels to evaluate for observation variable 1. Must be the # same length as FCST_VAR1_LEVELS. # -OBS_VAR1_LEVELS = A06 +OBS_VAR1_LEVELS = A{ACCUM_HH} # # Time relative to valid time (in seconds) to allow files to be considered # valid. Set both BEGIN and END to 0 to require the exact time in the @@ -164,7 +189,7 @@ FCST_IS_PROB = False # FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -220,13 +245,13 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE #GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE #GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE @@ -237,11 +262,11 @@ GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE # # Directory containing observation input to GridStat. # -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/PcpCombine_obs +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to GridStat. # -FCST_GRID_STAT_INPUT_DIR = {OUTPUT_BASE}/metprd/PcpCombine_fcst +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to GridStat. Not used in # this example. @@ -255,12 +280,14 @@ GRID_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from GridStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} -# -# Directory for staging data. +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. # -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] @@ -268,16 +295,16 @@ STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h # Template for observation input to GridStat relative to # OBS_GRID_STAT_INPUT_DIR. # -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a{level?fmt=%HH}h.nc +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # # Template for forecast input to GridStat relative to # FCST_GRID_STAT_INPUT_DIR. # -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}_a{level?fmt=%HH}h.nc +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. # -GRID_STAT_OUTPUT_TEMPLATE = metprd/GridStat +GRID_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to GridStat relative to # GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/GridStat_ensmean_REFC.conf b/parm/metplus/GridStat_ensmean_REFC.conf index d7a8df1063..17a1996211 100644 --- a/parm/metplus/GridStat_ensmean_REFC.conf +++ b/parm/metplus/GridStat_ensmean_REFC.conf @@ -1,4 +1,4 @@ -# GridStat METplus Configuration +# Ensemble mean GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensmean/metplus_final.REFC.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -74,13 +76,19 @@ GRID_STAT_INTERP_TYPE_METHOD = NEAREST GRID_STAT_INTERP_TYPE_WIDTH = 1 GRID_STAT_GRID_WEIGHT_FLAG = NONE - -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean -#FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = MRMS +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as that for the ensemble +# mean. This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensmean +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -92,52 +100,66 @@ GRID_STAT_DESC = NA # are needed for different tools GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = REFC_L0_ENS_MEAN - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file +# +# Name of forecast variable 1. +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case +# of forecasts) and outputs NetCDF file(s) in which the array names +# consist of the value of FIELDNAME_IN_MET_OUTPUT plus a suffix that +# specifies additional properties of the data in the array such as the +# level, the type of statistic, etc. In this case, this suffix is +# "_L0_ENS_MEAN". Thus, below, FCST_VAR1_NAME must be set to the value +# of FIELDNAME_IN_MET_OUTPUT with "_L0_ENS_MEAN" appended to it. +# +FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_MEAN +# +# List of levels to evaluate for forecast variable 1. +# FCST_VAR1_LEVELS = L0 #FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; - +# # List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = MergedReflectivityQCComposite - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = Z500 +# observation and forecast variable 1. +# +BOTH_VAR1_THRESH = {{field_thresholds}} +# +# Name of observation variable 1. +# +# Note: +# This is the name of the field in the grib2 observation file. Thus, +# it should not be set to {{fieldname_in_met_output}} because the +# value of fieldname_in_met_output is in general not the same as the +# name of the field in the grib2 observation file (although it can be +# for certain fields). If you do and it doesn't match, you may get an +# error like this from METplus: +# ERROR : VarInfoGrib2::set_dict() -> unrecognized GRIB2 field abbreviation ... +# +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = Z500 OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - +# # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information GRID_STAT_NEIGHBORHOOD_FIELD = BOTH # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 +GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 # shape value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE @@ -149,21 +171,25 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 - -# Set to true if observation data is probabilistic -# Only used if configuring forecast data as the 'OBS' input +# +# Set to true if observation data is probabilistic. Only used if +# configuring forecast data as the 'OBS' input. +# OBS_IS_PROB = false - -# Only used if OBS_IS_PROB is true - sets probabilistic threshold +# +# Only used if OBS_IS_PROB is true - sets probabilistic threshold. +# OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_REFC_{OBTYPE}_ensmean +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -195,7 +221,7 @@ GRID_STAT_CLIMO_CDF_BINS = 1 GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_FHO = STAT GRID_STAT_OUTPUT_FLAG_CTC = STAT GRID_STAT_OUTPUT_FLAG_CTS = STAT #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -219,62 +245,78 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/REFC_ensmean - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensmean - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensmean_RETOP.conf b/parm/metplus/GridStat_ensmean_RETOP.conf index bf61b5d0a2..36c6282671 100644 --- a/parm/metplus/GridStat_ensmean_RETOP.conf +++ b/parm/metplus/GridStat_ensmean_RETOP.conf @@ -1,4 +1,4 @@ -# GridStat METplus Configuration +# Ensemble mean GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensmean/metplus_final.RETOP.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -74,13 +76,19 @@ GRID_STAT_INTERP_TYPE_METHOD = NEAREST GRID_STAT_INTERP_TYPE_WIDTH = 1 GRID_STAT_GRID_WEIGHT_FLAG = NONE - -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean -#FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = MRMS +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as that for the ensemble +# mean. This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensmean +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -92,52 +100,67 @@ GRID_STAT_DESC = NA # are needed for different tools GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; - -# Name of forecast variable 1 -FCST_VAR1_NAME = RETOP_L0_ENS_MEAN - -# List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file +# +# Name of forecast variable 1. +# +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case +# of forecasts) and outputs NetCDF file(s) in which the array names +# consist of the value of fieldname_in_met_output plus a suffix that +# specifies additional properties of the data in the array such as the +# level, the type of statistic, etc. In this case, this suffix is +# "_L0_ENS_MEAN". Thus, below, FCST_VAR1_NAME must be set to the value +# of fieldname_in_met_output with "_L0_ENS_MEAN" appended to it. +# +FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_MEAN +# +# List of levels to evaluate for forecast variable 1. +# FCST_VAR1_LEVELS = L0 FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; - +# # List of thresholds to evaluate for each name/level combination for -# forecast variable 1 -BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 - -#FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 -OBS_VAR1_NAME = EchoTop18 - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = Z500 +# observation and forecast variable 1. +# +BOTH_VAR1_THRESH = {{field_thresholds}} +# +# Name of observation variable 1. +# +# Note: +# This is the name of the field in the grib2 observation file. Thus, +# it should not be set to {{fieldname_in_met_output}} because the +# value of fieldname_in_met_output is in general not the same as the +# name of the field in the grib2 observation file (although it can be +# for certain fields). If you do and it doesn't match, you may get an +# error like this from METplus: +# ERROR : VarInfoGrib2::set_dict() -> unrecognized GRIB2 field abbreviation ... +# +OBS_VAR1_NAME = {{fieldname_in_obs_input}} +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = Z500 OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; - -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 -#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 - -#OBS_GRID_STAT_FILE_TYPE = - +# # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information GRID_STAT_NEIGHBORHOOD_FIELD = BOTH # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 +GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 # shape value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE @@ -149,21 +172,25 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 - -# Set to true if observation data is probabilistic -# Only used if configuring forecast data as the 'OBS' input +# +# Set to true if observation data is probabilistic. Only used if +# configuring forecast data as the 'OBS' input. +# OBS_IS_PROB = false - -# Only used if OBS_IS_PROB is true - sets probabilistic threshold +# +# Only used if OBS_IS_PROB is true - sets probabilistic threshold. +# OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_RETOP_{OBTYPE}_ensmean +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -195,7 +222,7 @@ GRID_STAT_CLIMO_CDF_BINS = 1 GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_FHO = STAT GRID_STAT_OUTPUT_FLAG_CTC = STAT GRID_STAT_OUTPUT_FLAG_CTS = STAT #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -219,62 +246,78 @@ GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_ensmean - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensmean - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensprob_APCP01h.conf b/parm/metplus/GridStat_ensprob_APCP01h.conf index 01c8ae7404..728a80275c 100644 --- a/parm/metplus/GridStat_ensprob_APCP01h.conf +++ b/parm/metplus/GridStat_ensprob_APCP01h.conf @@ -1,4 +1,4 @@ -# Ensemble Prob GridStat METplus Configuration +# Ensemble probabilistic GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensprob/metplus_final.APCP01.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -75,12 +77,21 @@ GRID_STAT_REGRID_SHAPE = SQUARE #GRID_STAT_GRID_WEIGHT_FLAG = -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob -FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as ensemble-probabilistic. +# This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensprob -# Name to identify observation data in output -OBTYPE = CCPA +FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -95,45 +106,91 @@ GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic # Name of forecast variables # thresholds in mm, equal to >0, .01",.05",.10" -FCST_VAR1_NAME = APCP_01_A01_ENS_FREQ_gt0.0 +# FREQ +# Process as probability +FCST_VAR1_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A01 FCST_VAR1_THRESH = ==0.1 -OBS_VAR1_NAME = APCP +OBS_VAR1_NAME = {{fieldname_in_obs_input}} OBS_VAR1_LEVELS = A01 OBS_VAR1_THRESH = >0.0 -FCST_VAR2_NAME = APCP_01_A01_ENS_FREQ_ge0.254 +FCST_VAR2_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_ge0.254 FCST_VAR2_LEVELS = A01 FCST_VAR2_THRESH = ==0.1 -OBS_VAR2_NAME = APCP +OBS_VAR2_NAME = {{fieldname_in_obs_input}} OBS_VAR2_LEVELS = A01 OBS_VAR2_THRESH = >=0.254 -FCST_VAR3_NAME = APCP_01_A01_ENS_FREQ_ge0.508 +FCST_VAR3_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_ge0.508 FCST_VAR3_LEVELS = A01 FCST_VAR3_THRESH = ==0.1 -OBS_VAR3_NAME = APCP +OBS_VAR3_NAME = {{fieldname_in_obs_input}} OBS_VAR3_LEVELS = A01 OBS_VAR3_THRESH = >=0.508 -FCST_VAR4_NAME = APCP_01_A01_ENS_FREQ_ge2.54 +FCST_VAR4_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_ge2.54 FCST_VAR4_LEVELS = A01 FCST_VAR4_THRESH = ==0.1 -OBS_VAR4_NAME = APCP +OBS_VAR4_NAME = {{fieldname_in_obs_input}} OBS_VAR4_LEVELS = A01 OBS_VAR4_THRESH = >=2.54 +#Process as scalars for neighborhood methods +## Note that the number of forecast and obs thresholds must match +## but won't actually be applied to NBRCNT outputs with "nbrhd.field = OBS;" +FCST_VAR5_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_gt0.0 +FCST_VAR5_LEVELS = A01 +FCST_VAR5_THRESH = ==0.1 +FCST_VAR5_OPTIONS = prob = FALSE; + +OBS_VAR5_NAME = {{fieldname_in_obs_input}} +OBS_VAR5_LEVELS = A01 +OBS_VAR5_THRESH = >0.0 +OBS_VAR5_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +FCST_VAR6_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_ge0.254 +FCST_VAR6_LEVELS = A01 +FCST_VAR6_THRESH = ==0.1 +FCST_VAR6_OPTIONS = prob = FALSE; + +OBS_VAR6_NAME = {{fieldname_in_obs_input}} +OBS_VAR6_LEVELS = A01 +OBS_VAR6_THRESH = >=0.254 +OBS_VAR6_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +FCST_VAR7_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_ge0.508 +FCST_VAR7_LEVELS = A01 +FCST_VAR7_THRESH = ==0.1 +FCST_VAR7_OPTIONS = prob = FALSE; + +OBS_VAR7_NAME = {{fieldname_in_obs_input}} +OBS_VAR7_LEVELS = A01 +OBS_VAR7_THRESH = >=0.508 +OBS_VAR7_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +FCST_VAR8_NAME = {{fieldname_in_met_output}}_A01_ENS_FREQ_ge2.54 +FCST_VAR8_LEVELS = A01 +FCST_VAR8_THRESH = ==0.1 +FCST_VAR8_OPTIONS = prob = FALSE; + +OBS_VAR8_NAME = {{fieldname_in_obs_input}} +OBS_VAR8_LEVELS = A01 +OBS_VAR8_THRESH = >=2.54 +OBS_VAR8_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + #FCST_GRID_STAT_FILE_TYPE = #OBS_GRID_STAT_FILE_TYPE = # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 @@ -141,13 +198,13 @@ OBS_GRID_STAT_FILE_WINDOW_END = 0 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH +GRID_STAT_NEIGHBORHOOD_FIELD = # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 +GRID_STAT_NEIGHBORHOOD_WIDTH = # shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +GRID_STAT_NEIGHBORHOOD_SHAPE = # cov thresh list passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 @@ -156,15 +213,17 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensprob +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -196,7 +255,7 @@ GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ens GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_FHO = NONE GRID_STAT_OUTPUT_FLAG_CTC = NONE GRID_STAT_OUTPUT_FLAG_CTS = NONE #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -214,68 +273,83 @@ GRID_STAT_OUTPUT_FLAG_PRC = STAT #GRID_STAT_OUTPUT_FLAG_ECLV = BOTH GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE -GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT #GRID_STAT_OUTPUT_FLAG_GRAD = BOTH #GRID_STAT_OUTPUT_FLAG_DMAP = NONE # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_ensprob - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensprob - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensprob_APCP03h.conf b/parm/metplus/GridStat_ensprob_APCP03h.conf index f9a23196f5..3b3f9a3e20 100644 --- a/parm/metplus/GridStat_ensprob_APCP03h.conf +++ b/parm/metplus/GridStat_ensprob_APCP03h.conf @@ -1,4 +1,4 @@ -# Ensemble Prob GridStat METplus Configuration +# Ensemble probabilistic GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensprob/metplus_final.APCP03.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -75,12 +77,21 @@ GRID_STAT_REGRID_SHAPE = SQUARE #GRID_STAT_GRID_WEIGHT_FLAG = -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob -FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as ensemble-probabilistic. +# This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensprob -# Name to identify observation data in output -OBTYPE = CCPA +FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -93,46 +104,142 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# Name of forecast variables -FCST_VAR1_NAME = APCP_03_A3_ENS_FREQ_gt0.0 +FIELDNAME_IN_MET_OUTPUT = {{fieldname_in_met_output}} +# +# FREQ +# Process as probability + +# +# Name of forecast variable 1 +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by +# MET's pcp_combine tool. The latter reads in grib2 file(s) containing +# 1 hour accumulation data (in this case, from forecasts) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files from pcp_combine name their arrays as specified by +# FIELDNAME_IN_MET_OUTPUT. The gen_ens_prod tool then takes this array +# name and, in its output NetCDF files, creates arrays whose names consist +# of the original array name in the pcp_combine output (FIELDNAME_IN_MET_OUTPUT) +# plus a suffix that specifies additional properties of the data in the +# array such as the level (which in this case is the accumulation period), +# the type of statistic, etc. In this case, this suffix is "_A3_ENS_FREQ_gt0.0". +# Thus, below, FCST_VAR1_NAME must be set to the value of FIELDNAME_IN_MET_OUTPUT +# with "_A3_ENS_FREQ_gt0.0" appended to it. +# The same is true of other forecast fields below except the suffix is +# different. +# +#FCST_VAR1_NAME = APCP_A3_ENS_FREQ_gt0.0 +FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A03 FCST_VAR1_THRESH = ==0.1 - -OBS_VAR1_NAME = APCP_03 +# +# Name of observation variable 1 +# +# Note: +# This is the name of the field in the NetCDF file created by MET's +# pcp_combine tool. This tool reads in the grib2 file(s) containing +# 1 hour accumulation data (in this case, from observations) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files name their arrays as specified by the environment +# variable FIELDNAME_IN_MET_OUTPUT. Thus, that is the value we set +# OBS_VAR1_NAME to here, not to the name of the variable in the grib2 +# file. +# +#OBS_VAR1_NAME = APCP +OBS_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR1_LEVELS = A03 OBS_VAR1_THRESH = >0.0 -FCST_VAR2_NAME = APCP_03_A3_ENS_FREQ_ge0.508 +#FCST_VAR2_NAME = APCP_A3_ENS_FREQ_ge0.508 +FCST_VAR2_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_ge0.508 FCST_VAR2_LEVELS = A03 FCST_VAR2_THRESH = ==0.1 -OBS_VAR2_NAME = APCP_03 +#OBS_VAR2_NAME = APCP +OBS_VAR2_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR2_LEVELS = A03 OBS_VAR2_THRESH = >=0.508 -FCST_VAR3_NAME = APCP_03_A3_ENS_FREQ_ge2.54 +#FCST_VAR3_NAME = APCP_A3_ENS_FREQ_ge2.54 +FCST_VAR3_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_ge2.54 FCST_VAR3_LEVELS = A03 FCST_VAR3_THRESH = ==0.1 -OBS_VAR3_NAME = APCP_03 +#OBS_VAR3_NAME = APCP +OBS_VAR3_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR3_LEVELS = A03 OBS_VAR3_THRESH = >=2.54 -FCST_VAR4_NAME = APCP_03_A3_ENS_FREQ_ge6.350 +#FCST_VAR4_NAME = APCP_A3_ENS_FREQ_ge6.350 +FCST_VAR4_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_ge6.350 FCST_VAR4_LEVELS = A03 FCST_VAR4_THRESH = ==0.1 -OBS_VAR4_NAME = APCP_03 +#OBS_VAR4_NAME = APCP +OBS_VAR4_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR4_LEVELS = A03 OBS_VAR4_THRESH = >=6.350 +#Process as scalars for neighborhood methods +## Note that the number of forecast and obs thresholds must match +## but won't actually be applied to NBRCNT outputs with "nbrhd.field = OBS;" +#FCST_VAR5_NAME = APCP_A3_ENS_FREQ_gt0.0 +FCST_VAR5_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_gt0.0 +FCST_VAR5_LEVELS = A03 +FCST_VAR5_THRESH = ==0.1 +FCST_VAR5_OPTIONS = prob = FALSE; + +#OBS_VAR5_NAME = APCP +OBS_VAR5_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR5_LEVELS = A03 +OBS_VAR5_THRESH = >0.0 +OBS_VAR5_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR6_NAME = APCP_A3_ENS_FREQ_ge0.508 +FCST_VAR6_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_ge0.508 +FCST_VAR6_LEVELS = A03 +FCST_VAR6_THRESH = ==0.1 +FCST_VAR6_OPTIONS = prob = FALSE; + +#OBS_VAR6_NAME = APCP +OBS_VAR6_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR6_LEVELS = A03 +OBS_VAR6_THRESH = >=0.508 +OBS_VAR6_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR7_NAME = APCP_A3_ENS_FREQ_ge2.54 +FCST_VAR7_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_ge2.54 +FCST_VAR7_LEVELS = A03 +FCST_VAR7_THRESH = ==0.1 +FCST_VAR7_OPTIONS = prob = FALSE; + +#OBS_VAR7_NAME = APCP +OBS_VAR7_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR7_LEVELS = A03 +OBS_VAR7_THRESH = >=2.54 +OBS_VAR7_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR8_NAME = APCP_A3_ENS_FREQ_ge6.350 +FCST_VAR8_NAME = {FIELDNAME_IN_MET_OUTPUT}_A3_ENS_FREQ_ge6.350 +FCST_VAR8_LEVELS = A03 +FCST_VAR8_THRESH = ==0.1 +FCST_VAR8_OPTIONS = prob = FALSE; + +#OBS_VAR8_NAME = APCP +OBS_VAR8_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR8_LEVELS = A03 +OBS_VAR8_THRESH = >=6.350 +OBS_VAR8_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + #FCST_GRID_STAT_FILE_TYPE = #OBS_GRID_STAT_FILE_TYPE = # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 @@ -140,13 +247,13 @@ OBS_GRID_STAT_FILE_WINDOW_END = 0 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH +GRID_STAT_NEIGHBORHOOD_FIELD = # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 +GRID_STAT_NEIGHBORHOOD_WIDTH = # shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +GRID_STAT_NEIGHBORHOOD_SHAPE = # cov thresh list passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 @@ -155,15 +262,17 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = True -FCST_PROB_IN_GRIB_PDS = False - +FCST_PROB_IN_GRIB_PDS = False +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensprob +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -195,7 +304,7 @@ GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ens GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_FHO = NONE GRID_STAT_OUTPUT_FLAG_CTC = NONE GRID_STAT_OUTPUT_FLAG_CTS = NONE #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -213,68 +322,83 @@ GRID_STAT_OUTPUT_FLAG_PRC = STAT #GRID_STAT_OUTPUT_FLAG_ECLV = BOTH GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE -GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT #GRID_STAT_OUTPUT_FLAG_GRAD = BOTH #GRID_STAT_OUTPUT_FLAG_DMAP = NONE # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_ensprob - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a03h.nc - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensprob - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensprob_APCP06h.conf b/parm/metplus/GridStat_ensprob_APCP06h.conf index 739c0d08af..d9856518c6 100644 --- a/parm/metplus/GridStat_ensprob_APCP06h.conf +++ b/parm/metplus/GridStat_ensprob_APCP06h.conf @@ -1,4 +1,4 @@ -# Ensemble Prob GridStat METplus Configuration +# Ensemble probabilistic GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensprob/metplus_final.APCP06.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -75,12 +77,21 @@ GRID_STAT_REGRID_SHAPE = SQUARE #GRID_STAT_GRID_WEIGHT_FLAG = -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob -FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as ensemble-probabilistic. +# This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensprob -# Name to identify observation data in output -OBTYPE = CCPA +FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -93,46 +104,142 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# Name of forecast variables -FCST_VAR1_NAME = APCP_06_A6_ENS_FREQ_gt0.0 +FIELDNAME_IN_MET_OUTPUT = {{fieldname_in_met_output}} +# +# FREQ +# Process as probability + +# +# Name of forecast variable 1 +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by +# MET's pcp_combine tool. The latter reads in grib2 file(s) containing +# 1 hour accumulation data (in this case, from forecasts) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files from pcp_combine name their arrays as specified by +# FIELDNAME_IN_MET_OUTPUT. The gen_ens_prod tool then takes this array +# name and, in its output NetCDF files, creates arrays whose names consist +# of the original array name in the pcp_combine output (FIELDNAME_IN_MET_OUTPUT) +# plus a suffix that specifies additional properties of the data in the +# array such as the level (which in this case is the accumulation period), +# the type of statistic, etc. In this case, this suffix is "_A6_ENS_FREQ_gt0.0". +# Thus, below, FCST_VAR1_NAME must be set to the value of FIELDNAME_IN_MET_OUTPUT +# with "_A6_ENS_FREQ_gt0.0" appended to it. +# The same is true of other forecast fields below except the suffix is +# different. +# +#FCST_VAR1_NAME = APCP_A6_ENS_FREQ_gt0.0 +FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A06 FCST_VAR1_THRESH = ==0.1 - -OBS_VAR1_NAME = APCP_06 +# +# Name of observation variable 1 +# +# Note: +# This is the name of the field in the NetCDF file created by MET's +# pcp_combine tool. This tool reads in the grib2 file(s) containing +# 1 hour accumulation data (in this case, from observations) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files name their arrays as specified by the environment +# variable FIELDNAME_IN_MET_OUTPUT. Thus, that is the value we set +# OBS_VAR1_NAME to here, not to the name of the variable in the grib2 +# file. +# +#OBS_VAR1_NAME = APCP +OBS_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR1_LEVELS = A06 OBS_VAR1_THRESH = >0.0 -FCST_VAR2_NAME = APCP_06_A6_ENS_FREQ_ge2.54 +#FCST_VAR2_NAME = APCP_A6_ENS_FREQ_ge2.54 +FCST_VAR2_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_ge2.54 FCST_VAR2_LEVELS = A06 FCST_VAR2_THRESH = ==0.1 -OBS_VAR2_NAME = APCP_06 +#OBS_VAR2_NAME = APCP +OBS_VAR2_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR2_LEVELS = A06 OBS_VAR2_THRESH = >=2.54 -FCST_VAR3_NAME = APCP_06_A6_ENS_FREQ_ge6.350 +#FCST_VAR3_NAME = APCP_A6_ENS_FREQ_ge6.350 +FCST_VAR3_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_ge6.350 FCST_VAR3_LEVELS = A06 FCST_VAR3_THRESH = ==0.1 -OBS_VAR3_NAME = APCP_06 +#OBS_VAR3_NAME = APCP +OBS_VAR3_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR3_LEVELS = A06 OBS_VAR3_THRESH = >=6.350 -FCST_VAR4_NAME = APCP_06_A6_ENS_FREQ_ge12.700 +#FCST_VAR4_NAME = APCP_A6_ENS_FREQ_ge12.700 +FCST_VAR4_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_ge12.700 FCST_VAR4_LEVELS = A06 FCST_VAR4_THRESH = ==0.1 -OBS_VAR4_NAME = APCP_06 +#OBS_VAR4_NAME = APCP +OBS_VAR4_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR4_LEVELS = A06 OBS_VAR4_THRESH = >=12.700 +#Process as scalars for neighborhood methods +## Note that the number of forecast and obs thresholds must match +## but won't actually be applied to NBRCNT outputs with "nbrhd.field = OBS;" +#FCST_VAR5_NAME = APCP_A6_ENS_FREQ_gt0.0 +FCST_VAR5_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_gt0.0 +FCST_VAR5_LEVELS = A06 +FCST_VAR5_THRESH = ==0.1 +FCST_VAR5_OPTIONS = prob = FALSE; + +#OBS_VAR5_NAME = APCP +OBS_VAR5_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR5_LEVELS = A06 +OBS_VAR5_THRESH = >0.0 +OBS_VAR5_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR6_NAME = APCP_A6_ENS_FREQ_ge2.54 +FCST_VAR6_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_ge2.54 +FCST_VAR6_LEVELS = A06 +FCST_VAR6_THRESH = ==0.1 +FCST_VAR6_OPTIONS = prob = FALSE; + +#OBS_VAR6_NAME = APCP +OBS_VAR6_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR6_LEVELS = A06 +OBS_VAR6_THRESH = >=2.54 +OBS_VAR6_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR7_NAME = APCP_A6_ENS_FREQ_ge6.350 +FCST_VAR7_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_ge6.350 +FCST_VAR7_LEVELS = A06 +FCST_VAR7_THRESH = ==0.1 +FCST_VAR7_OPTIONS = prob = FALSE; + +#OBS_VAR7_NAME = APCP +OBS_VAR7_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR7_LEVELS = A06 +OBS_VAR7_THRESH = >=6.350 +OBS_VAR7_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR8_NAME = APCP_A6_ENS_FREQ_ge12.700 +FCST_VAR8_NAME = {FIELDNAME_IN_MET_OUTPUT}_A6_ENS_FREQ_ge12.700 +FCST_VAR8_LEVELS = A06 +FCST_VAR8_THRESH = ==0.1 +FCST_VAR8_OPTIONS = prob = FALSE; + +#OBS_VAR8_NAME = APCP +OBS_VAR8_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR8_LEVELS = A06 +OBS_VAR8_THRESH = >=12.700 +OBS_VAR8_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + #FCST_GRID_STAT_FILE_TYPE = #OBS_GRID_STAT_FILE_TYPE = # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 @@ -140,13 +247,13 @@ OBS_GRID_STAT_FILE_WINDOW_END = 0 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH +GRID_STAT_NEIGHBORHOOD_FIELD = # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 +GRID_STAT_NEIGHBORHOOD_WIDTH = # shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +GRID_STAT_NEIGHBORHOOD_SHAPE = # cov thresh list passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 @@ -155,15 +262,17 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = True -FCST_PROB_IN_GRIB_PDS = False - +FCST_PROB_IN_GRIB_PDS = False +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensprob +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -195,7 +304,7 @@ GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ens GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_FHO = NONE GRID_STAT_OUTPUT_FLAG_CTC = NONE GRID_STAT_OUTPUT_FLAG_CTS = NONE #GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -213,68 +322,83 @@ GRID_STAT_OUTPUT_FLAG_PRC = STAT #GRID_STAT_OUTPUT_FLAG_ECLV = BOTH GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE -GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT #GRID_STAT_OUTPUT_FLAG_GRAD = BOTH #GRID_STAT_OUTPUT_FLAG_DMAP = NONE # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_ensprob - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a06h.nc - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensprob - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensprob_APCP24h.conf b/parm/metplus/GridStat_ensprob_APCP24h.conf index 11befbad4c..4c82f06829 100644 --- a/parm/metplus/GridStat_ensprob_APCP24h.conf +++ b/parm/metplus/GridStat_ensprob_APCP24h.conf @@ -1,4 +1,4 @@ -# Ensemble Prob GridStat METplus Configuration +# Ensemble probabilistic GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensprob/metplus_final.APCP24.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -75,12 +77,21 @@ GRID_STAT_REGRID_SHAPE = SQUARE #GRID_STAT_GRID_WEIGHT_FLAG = -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob -FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as ensemble-probabilistic. +# This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensprob -# Name to identify observation data in output -OBTYPE = CCPA +FCST_NATIVE_DATA_TYPE = GRIB +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -93,46 +104,142 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# Name of forecast variables -FCST_VAR1_NAME = APCP_24_A24_ENS_FREQ_gt0.0 +FIELDNAME_IN_MET_OUTPUT = {{fieldname_in_met_output}} +# +# FREQ +# Process as probability + +# +# Name of forecast variable 1 +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the NetCDF file(s) generated by +# MET's pcp_combine tool. The latter reads in grib2 file(s) containing +# 1 hour accumulation data (in this case, from forecasts) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files from pcp_combine name their arrays as specified by +# FIELDNAME_IN_MET_OUTPUT. The gen_ens_prod tool then takes this array +# name and, in its output NetCDF files, creates arrays whose names consist +# of the original array name in the pcp_combine output (FIELDNAME_IN_MET_OUTPUT) +# plus a suffix that specifies additional properties of the data in the +# array such as the level (which in this case is the accumulation period), +# the type of statistic, etc. In this case, this suffix is "_A24_ENS_FREQ_gt0.0". +# Thus, below, FCST_VAR1_NAME must be set to the value of FIELDNAME_IN_MET_OUTPUT +# with "_A24_ENS_FREQ_gt0.0" appended to it. +# The same is true of other forecast fields below except the suffix is +# different. +# +#FCST_VAR1_NAME = APCP_A24_ENS_FREQ_gt0.0 +FCST_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A24 FCST_VAR1_THRESH = ==0.1 - -OBS_VAR1_NAME = APCP_24 +# +# Name of observation variable 1 +# +# Note: +# This is the name of the field in the NetCDF file created by MET's +# pcp_combine tool. This tool reads in the grib2 file(s) containing +# 1 hour accumulation data (in this case, from observations) and outputs +# NetCDF file(s) with the appropriate > 1 hour accumulation. These +# output NetCDF files name their arrays as specified by the environment +# variable FIELDNAME_IN_MET_OUTPUT. Thus, that is the value we set +# OBS_VAR1_NAME to here, not to the name of the variable in the grib2 +# file. +# +#OBS_VAR1_NAME = APCP +OBS_VAR1_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR1_LEVELS = A24 OBS_VAR1_THRESH = >0.0 -FCST_VAR2_NAME = APCP_24_A24_ENS_FREQ_ge6.350 +#FCST_VAR2_NAME = APCP_A24_ENS_FREQ_ge6.350 +FCST_VAR2_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_ge6.350 FCST_VAR2_LEVELS = A24 FCST_VAR2_THRESH = ==0.1 -OBS_VAR2_NAME = APCP_24 +#OBS_VAR2_NAME = APCP +OBS_VAR2_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR2_LEVELS = A24 OBS_VAR2_THRESH = >=6.350 -FCST_VAR3_NAME = APCP_24_A24_ENS_FREQ_ge12.700 +#FCST_VAR3_NAME = APCP_A24_ENS_FREQ_ge12.700 +FCST_VAR3_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_ge12.700 FCST_VAR3_LEVELS = A24 FCST_VAR3_THRESH = ==0.1 -OBS_VAR3_NAME = APCP_24 +#OBS_VAR3_NAME = APCP +OBS_VAR3_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR3_LEVELS = A24 OBS_VAR3_THRESH = >=12.700 -FCST_VAR4_NAME = APCP_24_A24_ENS_FREQ_ge25.400 +#FCST_VAR4_NAME = APCP_A24_ENS_FREQ_ge25.400 +FCST_VAR4_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_ge25.400 FCST_VAR4_LEVELS = A24 FCST_VAR4_THRESH = ==0.1 -OBS_VAR4_NAME = APCP_24 +#OBS_VAR4_NAME = APCP +OBS_VAR4_NAME = {FIELDNAME_IN_MET_OUTPUT} OBS_VAR4_LEVELS = A24 OBS_VAR4_THRESH = >=25.400 +#Process as scalars for neighborhood methods +### Note that the number of forecast and obs thresholds must match +### but won't actually be applied to NBRCNT outputs with "nbrhd.field = OBS;" +#FCST_VAR5_NAME = APCP_A24_ENS_FREQ_gt0.0 +FCST_VAR5_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_gt0.0 +FCST_VAR5_LEVELS = A24 +FCST_VAR5_THRESH = ==0.1 +FCST_VAR5_OPTIONS = prob = FALSE; + +#OBS_VAR5_NAME = APCP +OBS_VAR5_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR5_LEVELS = A24 +OBS_VAR5_THRESH = >0.0 +OBS_VAR5_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR6_NAME = APCP_A24_ENS_FREQ_ge6.350 +FCST_VAR6_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_ge6.350 +FCST_VAR6_LEVELS = A24 +FCST_VAR6_THRESH = ==0.1 +FCST_VAR6_OPTIONS = prob = FALSE; + +#OBS_VAR6_NAME = APCP +OBS_VAR6_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR6_LEVELS = A24 +OBS_VAR6_THRESH = >=6.350 +OBS_VAR6_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR7_NAME = APCP_A24_ENS_FREQ_ge12.700 +FCST_VAR7_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_ge12.700 +FCST_VAR7_LEVELS = A24 +FCST_VAR7_THRESH = ==0.1 +FCST_VAR7_OPTIONS = prob = FALSE; + +#OBS_VAR7_NAME = APCP +OBS_VAR7_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR7_LEVELS = A24 +OBS_VAR7_THRESH = >=12.700 +OBS_VAR7_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR8_NAME = APCP_A24_ENS_FREQ_ge25.400 +FCST_VAR8_NAME = {FIELDNAME_IN_MET_OUTPUT}_A24_ENS_FREQ_ge25.400 +FCST_VAR8_LEVELS = A24 +FCST_VAR8_THRESH = ==0.1 +FCST_VAR8_OPTIONS = prob = FALSE; + +#OBS_VAR8_NAME = APCP +OBS_VAR8_NAME = {FIELDNAME_IN_MET_OUTPUT} +OBS_VAR8_LEVELS = A24 +OBS_VAR8_THRESH = >=25.400 +OBS_VAR8_OPTIONS = nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + #FCST_GRID_STAT_FILE_TYPE = #OBS_GRID_STAT_FILE_TYPE = # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 @@ -140,13 +247,13 @@ OBS_GRID_STAT_FILE_WINDOW_END = 0 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH +GRID_STAT_NEIGHBORHOOD_FIELD = # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 +GRID_STAT_NEIGHBORHOOD_WIDTH = # shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +GRID_STAT_NEIGHBORHOOD_SHAPE = # cov thresh list passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 @@ -155,15 +262,17 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = True -FCST_PROB_IN_GRIB_PDS = False - +FCST_PROB_IN_GRIB_PDS = False +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ensprob +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -195,12 +304,12 @@ GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_ens GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_FHO = NONE GRID_STAT_OUTPUT_FLAG_CTC = NONE GRID_STAT_OUTPUT_FLAG_CTS = NONE #GRID_STAT_OUTPUT_FLAG_MCTC = NONE #GRID_STAT_OUTPUT_FLAG_MCTS = NONE -GRID_STAT_OUTPUT_FLAG_CNT = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE #GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE #GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE #GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE @@ -213,68 +322,83 @@ GRID_STAT_OUTPUT_FLAG_PRC = STAT #GRID_STAT_OUTPUT_FLAG_ECLV = BOTH GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE -GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT #GRID_STAT_OUTPUT_FLAG_GRAD = BOTH #GRID_STAT_OUTPUT_FLAG_DMAP = NONE # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE 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_NBRHD = TRUE #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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/PcpCombine_obs - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_ensprob - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2_a24h.nc - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensprob - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensprob_REFC.conf b/parm/metplus/GridStat_ensprob_REFC.conf index 32dcea2ba5..2348b46832 100644 --- a/parm/metplus/GridStat_ensprob_REFC.conf +++ b/parm/metplus/GridStat_ensprob_REFC.conf @@ -1,4 +1,4 @@ -# GridStat METplus Configuration +# Ensemble probabilistic GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensprob/metplus_final.REFC.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -74,13 +76,21 @@ GRID_STAT_INTERP_TYPE_METHOD = NEAREST GRID_STAT_INTERP_TYPE_WIDTH = 1 GRID_STAT_GRID_WEIGHT_FLAG = NONE +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as ensemble-probabilistic. +# This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensprob -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob #FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = MRMS +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -93,35 +103,65 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; +# FREQ +# Process as probability + +# # Name of forecast variable 1 -FCST_VAR1_NAME = REFC_L0_ENS_FREQ_ge20 +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case +# of forecasts) and outputs NetCDF file(s) in which the array names +# consist of the value of fieldname_in_met_output plus a suffix that +# specifies additional properties of the data in the array such as the +# level, the type of statistic, etc. In this case, this suffix is +# "_L0_ENS_FREQ_ge20". Thus, below, FCST_VAR1_NAME must be set to the value +# of fieldname_in_met_output with "_L0_ENS_FREQ_ge20" appended to it. +# The same is true of other forecast fields below except the suffix is +# different. +# +#FCST_VAR1_NAME = REFC_L0_ENS_FREQ_ge20 +FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge20 # List of levels to evaluate for forecast variable 1 -# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = L0 #FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; - +# # List of thresholds to evaluate for each name/level combination for -# forecast variable 1 +# forecast variable 1. +# FCST_VAR1_THRESH = ==0.1 #FCST_GRID_STAT_FILE_TYPE = - -# Name of observation variable 1 +# +# Name of observation variable 1. +# +# Note: +# This is the name of the field in the grib2 observation file. Thus, +# it should not be set to {{fieldname_in_met_output}} because the +# value of fieldname_in_met_output is in general not the same as the +# name of the field in the grib2 observation file (although it can be +# for certain fields). If you do and it doesn't match, you may get an +# error like this from METplus: +# ERROR : VarInfoGrib2::set_dict() -> unrecognized GRIB2 field abbreviation ... +# The same is true of other observation fields below. +# OBS_VAR1_NAME = MergedReflectivityQCComposite - -# List of levels to evaluate for observation variable 1 -# (*,*) is NetCDF notation - must include quotes around these values! -# must be the same length as FCST_VAR1_LEVELS -OBS_VAR1_LEVELS = Z500 +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# +OBS_VAR1_LEVELS = Z500 +# +# List of thresholds to evaluate for each name/level combination for +# observation variable 1. +# OBS_VAR1_THRESH = >=20.0 OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; -# List of thresholds to evaluate for each name/level combination for -# observation variable 1 - -FCST_VAR2_NAME = REFC_L0_ENS_FREQ_ge30 +#FCST_VAR2_NAME = REFC_L0_ENS_FREQ_ge30 +FCST_VAR2_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge30 FCST_VAR2_LEVELS = L0 FCST_VAR2_THRESH = ==0.1 @@ -130,7 +170,8 @@ OBS_VAR2_LEVELS = Z500 OBS_VAR2_THRESH = >=30.0 OBS_VAR2_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; -FCST_VAR3_NAME = REFC_L0_ENS_FREQ_ge40 +#FCST_VAR3_NAME = REFC_L0_ENS_FREQ_ge40 +FCST_VAR3_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge40 FCST_VAR3_LEVELS = L0 FCST_VAR3_THRESH = ==0.1 @@ -139,7 +180,8 @@ OBS_VAR3_LEVELS = Z500 OBS_VAR3_THRESH = >=40.0 OBS_VAR3_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; -FCST_VAR4_NAME = REFC_L0_ENS_FREQ_ge50 +#FCST_VAR4_NAME = REFC_L0_ENS_FREQ_ge50 +FCST_VAR4_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge50 FCST_VAR4_LEVELS = L0 FCST_VAR4_THRESH = ==0.1 @@ -148,25 +190,73 @@ OBS_VAR4_LEVELS = Z500 OBS_VAR4_THRESH = >=50.0 OBS_VAR4_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; +#Process as scalars for neighborhood methods +## Note that the number of forecast and obs thresholds must match +## but won't actually be applied to NBRCNT outputs with "nbrhd.field = OBS;" +#FCST_VAR5_NAME = REFC_L0_ENS_FREQ_ge20 +FCST_VAR5_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge20 +FCST_VAR5_LEVELS = L0 +FCST_VAR5_THRESH = ==0.1 +FCST_VAR5_OPTIONS = prob = FALSE; + +OBS_VAR5_NAME = MergedReflectivityQCComposite +OBS_VAR5_LEVELS = Z500 +OBS_VAR5_THRESH = >=20.0 +OBS_VAR5_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR6_NAME = REFC_L0_ENS_FREQ_ge30 +FCST_VAR6_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge30 +FCST_VAR6_LEVELS = L0 +FCST_VAR6_THRESH = ==0.1 +FCST_VAR6_OPTIONS = prob = FALSE; + +OBS_VAR6_NAME = MergedReflectivityQCComposite +OBS_VAR6_LEVELS = Z500 +OBS_VAR6_THRESH = >=30.0 +OBS_VAR6_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR7_NAME = REFC_L0_ENS_FREQ_ge40 +FCST_VAR7_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge40 +FCST_VAR7_LEVELS = L0 +FCST_VAR7_THRESH = ==0.1 +FCST_VAR7_OPTIONS = prob = FALSE; + +OBS_VAR7_NAME = MergedReflectivityQCComposite +OBS_VAR7_LEVELS = Z500 +OBS_VAR7_THRESH = >=40.0 +OBS_VAR7_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR8_NAME = REFC_L0_ENS_FREQ_ge50 +FCST_VAR8_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge50 +FCST_VAR8_LEVELS = L0 +FCST_VAR8_THRESH = ==0.1 +FCST_VAR8_OPTIONS = prob = FALSE; + +OBS_VAR8_NAME = MergedReflectivityQCComposite +OBS_VAR8_LEVELS = Z500 +OBS_VAR8_THRESH = >=50.0 +OBS_VAR8_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + #OBS_GRID_STAT_FILE_TYPE = # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH +GRID_STAT_NEIGHBORHOOD_FIELD = # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 +GRID_STAT_NEIGHBORHOOD_WIDTH = # shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +GRID_STAT_NEIGHBORHOOD_SHAPE = # cov thresh list passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 @@ -175,22 +265,26 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 - -# Set to true if observation data is probabilistic -# Only used if configuring forecast data as the 'OBS' input +# +# Set to true if observation data is probabilistic. Only used if +# configuring forecast data as the 'OBS' input. +# OBS_IS_PROB = false - -# Only used if OBS_IS_PROB is true - sets probabilistic threshold +# +# Only used if OBS_IS_PROB is true - sets probabilistic threshold. +# OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_REFC_{OBTYPE}_ensprob +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -222,7 +316,7 @@ GRID_STAT_CLIMO_CDF_BINS = 1 GRID_STAT_MASK_GRID = # Statistical output types -GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_FHO = NONE GRID_STAT_OUTPUT_FLAG_CTC = NONE GRID_STAT_OUTPUT_FLAG_CTS = NONE GRID_STAT_OUTPUT_FLAG_MCTC = NONE @@ -240,66 +334,82 @@ GRID_STAT_OUTPUT_FLAG_PRC = STAT GRID_STAT_OUTPUT_FLAG_ECLV = NONE GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE -GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT GRID_STAT_OUTPUT_FLAG_GRAD = NONE # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE -GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = TRUE 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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/REFC_ensprob - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensprob - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/GridStat_ensprob_RETOP.conf b/parm/metplus/GridStat_ensprob_RETOP.conf index 26e203e8ae..071d47fdc7 100644 --- a/parm/metplus/GridStat_ensprob_RETOP.conf +++ b/parm/metplus/GridStat_ensprob_RETOP.conf @@ -1,4 +1,4 @@ -# GridStat METplus Configuration +# Ensemble probabilistic GridStat METplus Configuration # section heading for [config] variables - all items below this line and # before the next section heading correspond to the [config] section @@ -14,26 +14,26 @@ PROCESS_LIST = GridStat # VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Format of INIT_BEG and INT_END using % items +# Format of INIT_BEG and INIT_END using % items # %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. # see www.strftime.org for more information # %Y%m%d%H expands to YYYYMMDDHH INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds +# Increment between METplus runs (in seconds if no units are specified). +# Must be >= 60 seconds. INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[fhr_list]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -48,20 +48,22 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only #LOG_GRID_STAT_VERBOSITY = 2 -LOG_DIR = {OUTPUT_BASE}/log - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/GridStat_ensprob/metplus_final.RETOP.conf - -# Location of MET config file to pass to GridStat +# +# Specify the name of the METplus log file. +# +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} +# +# Specify the location and name of the final METplus conf file. +# +METPLUS_CONF = {GRID_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} +# +# Location of MET config file to pass to GridStat. +# GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped # grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary # See MET User's Guide for more information -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_TO_GRID = FCST GRID_STAT_REGRID_VLD_THRESH = 0.5 GRID_STAT_REGRID_METHOD = BUDGET GRID_STAT_REGRID_WIDTH = 2 @@ -74,13 +76,21 @@ GRID_STAT_INTERP_TYPE_METHOD = NEAREST GRID_STAT_INTERP_TYPE_WIDTH = 1 GRID_STAT_GRID_WEIGHT_FLAG = NONE +# +# Name to identify model (forecast) data in output. +# +# The variable MODEL is recorded in the stat files, and the data in +# these files is then plotted (e.g. using METViewer). Here, we add a +# suffix to MODEL that identifies the data as ensemble-probabilistic. +# This makes it easier to identify each curve. +# +MODEL = {{vx_fcst_model_name}}_ensprob -# Name to identify model (forecast) data in output -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob #FCST_NATIVE_DATA_TYPE = GRIB - -# Name to identify observation data in output -OBTYPE = MRMS +# +# Name to identify observation data in output. +# +OBTYPE = {{obtype}} OBS_NATIVE_DATA_TYPE = GRIB # set the desc value in the GridStat MET config file @@ -93,17 +103,58 @@ GRID_STAT_DESC = NA GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# Name of forecast variable 1 -FCST_VAR1_NAME = RETOP_L0_ENS_FREQ_ge20 +# FREQ +# Process as probability + +# +# Name of forecast variable 1. +# +# Note: +# This is the name of the field in the NetCDF file(s) created by MET's +# gen_ens_prod tool. This tool reads in the grib2 file(s) (in this case +# of forecasts) and outputs NetCDF file(s) in which the array names +# consist of the value of fieldname_in_met_output plus a suffix that +# specifies additional properties of the data in the array such as the +# level, the type of statistic, etc. In this case, this suffix is +# "_L0_ENS_FREQ_ge20". Thus, below, FCST_VAR1_NAME must be set to the value +# of fieldname_in_met_output with "_L0_ENS_FREQ_ge20" appended to it. +# The same is true of other forecast fields below except the suffix is +# different. +# +#FCST_VAR1_NAME = RETOP_L0_ENS_FREQ_ge20 +FCST_VAR1_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge20 FCST_VAR1_LEVELS = L0 FCST_VAR1_THRESH = ==0.1 +#FCST_GRID_STAT_FILE_TYPE = +# +# Name of observation variable 1. +# +# Note: +# This is the name of the field in the grib2 observation file. Thus, +# it should not be set to {{fieldname_in_met_output}} because the +# value of fieldname_in_met_output is in general not the same as the +# name of the field in the grib2 observation file (although it can be +# for certain fields). If you do and it doesn't match, you may get an +# error like this from METplus: +# ERROR : VarInfoGrib2::set_dict() -> unrecognized GRIB2 field abbreviation ... +# The same is true of other observation fields below. +# OBS_VAR1_NAME = EchoTop18 +# +# List of levels to evaluate for observation variable 1. Must be the +# same length as FCST_VAR1_LEVELS. +# OBS_VAR1_LEVELS = Z500 +# +# List of thresholds to evaluate for each name/level combination for +# observation variable 1. +# OBS_VAR1_THRESH = >=20.0 OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; -FCST_VAR2_NAME = RETOP_L0_ENS_FREQ_ge30 +#FCST_VAR2_NAME = RETOP_L0_ENS_FREQ_ge30 +FCST_VAR2_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge30 FCST_VAR2_LEVELS = L0 FCST_VAR2_THRESH = ==0.1 @@ -112,7 +163,8 @@ OBS_VAR2_LEVELS = Z500 OBS_VAR2_THRESH = >=30.0 OBS_VAR2_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; -FCST_VAR3_NAME = RETOP_L0_ENS_FREQ_ge40 +#FCST_VAR3_NAME = RETOP_L0_ENS_FREQ_ge40 +FCST_VAR3_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge40 FCST_VAR3_LEVELS = L0 FCST_VAR3_THRESH = ==0.1 @@ -121,7 +173,8 @@ OBS_VAR3_LEVELS = Z500 OBS_VAR3_THRESH = >=40.0 OBS_VAR3_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; -FCST_VAR4_NAME = RETOP_L0_ENS_FREQ_ge50 +#FCST_VAR4_NAME = RETOP_L0_ENS_FREQ_ge50 +FCST_VAR4_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge50 FCST_VAR4_LEVELS = L0 FCST_VAR4_THRESH = ==0.1 @@ -130,26 +183,73 @@ OBS_VAR4_LEVELS = Z500 OBS_VAR4_THRESH = >=50.0 OBS_VAR4_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; +#Process as scalars for neighborhood methods +## Note that the number of forecast and obs thresholds must match +## but won't actually be applied to NBRCNT outputs with "nbrhd.field = OBS;" +#FCST_VAR5_NAME = RETOP_L0_ENS_FREQ_ge20 +FCST_VAR5_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge20 +FCST_VAR5_LEVELS = L0 +FCST_VAR5_THRESH = ==0.1 +FCST_VAR5_OPTIONS = prob = FALSE; + +OBS_VAR5_NAME = EchoTop18 +OBS_VAR5_LEVELS = Z500 +OBS_VAR5_THRESH = >=20.0 +OBS_VAR5_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR6_NAME = RETOP_L0_ENS_FREQ_ge30 +FCST_VAR6_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge30 +FCST_VAR6_LEVELS = L0 +FCST_VAR6_THRESH = ==0.1 +FCST_VAR6_OPTIONS = prob = FALSE; + +OBS_VAR6_NAME = EchoTop18 +OBS_VAR6_LEVELS = Z500 +OBS_VAR6_THRESH = >=30.0 +OBS_VAR6_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR7_NAME = RETOP_L0_ENS_FREQ_ge40 +FCST_VAR7_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge40 +FCST_VAR7_LEVELS = L0 +FCST_VAR7_THRESH = ==0.1 +FCST_VAR7_OPTIONS = prob = FALSE; + +OBS_VAR7_NAME = EchoTop18 +OBS_VAR7_LEVELS = Z500 +OBS_VAR7_THRESH = >=40.0 +OBS_VAR7_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } + +#FCST_VAR8_NAME = RETOP_L0_ENS_FREQ_ge50 +FCST_VAR8_NAME = {{fieldname_in_met_output}}_L0_ENS_FREQ_ge50 +FCST_VAR8_LEVELS = L0 +FCST_VAR8_THRESH = ==0.1 +FCST_VAR8_OPTIONS = prob = FALSE; + +OBS_VAR8_NAME = EchoTop18 +OBS_VAR8_LEVELS = Z500 +OBS_VAR8_THRESH = >=50.0 +OBS_VAR8_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; nbrhd = { field = OBS; shape = SQUARE; width = [ 1 ]; vld_thresh = 1.0; } #OBS_GRID_STAT_FILE_TYPE = # Time relative to valid time (in seconds) to allow files to be considered -# valid. Set both BEGIN and END to 0 to require the exact time in the filename -# Not used in this example. +# valid. Set both BEGIN and END to 0 to require the exact time in the +# filename. Not used in this example. +# #FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 #FCST_GRID_STAT_FILE_WINDOW_END = 0 -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 # MET GridStat neighborhood values # See the MET User's Guide GridStat section for more information -GRID_STAT_NEIGHBORHOOD_FIELD = BOTH +GRID_STAT_NEIGHBORHOOD_FIELD = # width value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 +GRID_STAT_NEIGHBORHOOD_WIDTH = # shape value passed to nbrhd dictionary in the MET config file -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +GRID_STAT_NEIGHBORHOOD_SHAPE = # cov thresh list passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 @@ -158,22 +258,26 @@ GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 # Set to false to create one run of GridStat per run time that # includes all fields specified. GRID_STAT_ONCE_PER_FIELD = False - -# Set to true if forecast data is probabilistic +# +# Set to true if forecast data is probabilistic. +# FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False - +# # Only used if FCST_IS_PROB is true - sets probabilistic threshold +# FCST_GRID_STAT_PROB_THRESH = ==0.1 - -# Set to true if observation data is probabilistic -# Only used if configuring forecast data as the 'OBS' input +# +# Set to true if observation data is probabilistic. Only used if +# configuring forecast data as the 'OBS' input. +# OBS_IS_PROB = false - -# Only used if OBS_IS_PROB is true - sets probabilistic threshold +# +# Only used if OBS_IS_PROB is true - sets probabilistic threshold. +# OBS_GRID_STAT_PROB_THRESH = ==0.1 -GRID_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_RETOP_{OBTYPE}_ensprob +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{{fieldname_in_met_filedir_names}}_{OBTYPE} # Climatology data #GRID_STAT_CLIMO_MEAN_FILE_NAME = @@ -223,66 +327,82 @@ GRID_STAT_OUTPUT_FLAG_PRC = STAT GRID_STAT_OUTPUT_FLAG_ECLV = NONE GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE -GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT GRID_STAT_OUTPUT_FLAG_GRAD = NONE # NetCDF matched pairs output file #GRID_STAT_NC_PAIRS_VAR_NAME = -GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE -GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_LATLON = TRUE +GRID_STAT_NC_PAIRS_FLAG_RAW = TRUE GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE -GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = TRUE 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 -# End of [config] section and start of [dir] section +# End of [config] section and start of [dir] section. [dir] - -# directory containing forecast input to GridStat -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -# directory containing observation input to GridStat -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing observation input to GridStat. +# +OBS_GRID_STAT_INPUT_DIR = {{obs_input_dir}} +# +# Directory containing forecast input to GridStat. +# +FCST_GRID_STAT_INPUT_DIR = {{fcst_input_dir}} +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_MEAN_INPUT_DIR = - -# directory containing climatology mean input to GridStat -# Not used in this example +# +# Directory containing climatology mean input to GridStat. Not used in +# this example. +# GRID_STAT_CLIMO_STDEV_INPUT_DIR = - -# directory to write output from GridStat -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_ensprob - -# End of [dir] section and start of [filename_templates] section +# +# Directory in which to write output from GridStat. +# +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +GRID_STAT_OUTPUT_DIR = {{output_dir}} + +STAGING_DIR = {{staging_dir}} + +# End of [dir] section and start of [filename_templates] section. [filename_templates] - -# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc - -# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/GridStat_ensprob - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR -# Not used in this example +# +# Template for observation input to GridStat relative to +# OBS_GRID_STAT_INPUT_DIR. +# +OBS_GRID_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to GridStat relative to +# FCST_GRID_STAT_INPUT_DIR. +# +FCST_GRID_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} +# +# Template for output from GridStat relative to GRID_STAT_OUTPUT_DIR. +# +GRID_STAT_OUTPUT_TEMPLATE = +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = - -# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR -# Not used in this example +# +# Template for climatology input to GridStat relative to +# GRID_STAT_CLIMO_STDEV_INPUT_DIR. Not used in this example. +# GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = - -# Used to specify one or more verification mask files for GridStat -# Not used for this example +# +# Variable used to specify one or more verification mask files for +# GridStat. Not used for this example. +# GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/parm/metplus/Pb2nc_obs.conf b/parm/metplus/Pb2nc_obs.conf index 3bd2198316..263ad864ed 100644 --- a/parm/metplus/Pb2nc_obs.conf +++ b/parm/metplus/Pb2nc_obs.conf @@ -70,7 +70,7 @@ PB2NC_QUALITY_MARK_THRESH = 9 PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all -PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, D_DPT, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND, D_PRMSL, PRWE +PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, D_DPT, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, D_MLCAPE, MXGS, D_WIND, D_PRMSL, PRWE # Mapping of input BUFR variable names to output variables names. # The default PREPBUFR map, obs_prepbufr_map, is appended to this map. @@ -115,7 +115,7 @@ OUTPUT_BASE = {{output_base}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR. +# Template for prepbufr input to PB2NC relative to PB2NC_INPUT_DIR. # PB2NC_INPUT_TEMPLATE = {{obs_input_fn_template}} # diff --git a/parm/metplus/PointStat_SFC.conf b/parm/metplus/PointStat_SFC.conf index 5a20196774..2d5fe0a2e4 100644 --- a/parm/metplus/PointStat_SFC.conf +++ b/parm/metplus/PointStat_SFC.conf @@ -19,10 +19,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified) # Must be >= 60 seconds. @@ -31,7 +31,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[FHR_LIST]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -46,14 +46,15 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_SFC_mem{ENV[ENSMEM_INDX]}_{ENV[CDATE]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/metprd/PointStat/metplus_final.SFC{ENV[DOT_ENSMEM]}.conf +METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # Location of MET config file to pass to GridStat # References PARM_BASE, which is the location of the parm directory @@ -121,13 +122,22 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} - +MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +# +# Value to enter under the DESC column in the output stat file. Here, +# we store the value of the original lead in this column, i.e. the lead +# with zero corresponding to the actual start time of the forecast (which +# is (cdate - time_lag)), not to cdate. This is just the lead in +# LEAD_SEQ with the time lag (time_lag) of the current forecast member +# added on. +# +# Uncomment this line only after upgrading to METplus 5.x. +#POINT_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} POINT_STAT_DESC = NA # # Name to identify observation data in output. # -OBTYPE = NDAS +OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -135,7 +145,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_{OBTYPE}_ADPSFC +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -159,14 +169,16 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADPSFC -# Variables and levels as specified in the field dictionary of the METplus -# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields POINT_STAT_ONCE_PER_FIELD = False +# +# Variables and levels as specified in the field dictionary of the METplus +# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION +# # fields to compare # Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set @@ -174,51 +186,87 @@ POINT_STAT_ONCE_PER_FIELD = False BOTH_VAR1_NAME = TMP BOTH_VAR1_LEVELS = Z2 +# +# Lead to use both in naming of the output .stat and .nc files and for +# lead values in those files. +# +# The specification of set_attr_lead below causes MET/METplus to use the +# lead values in the variable LEAD_SEQ set above, which are the same for +# all ensemble forecast members (i.e. regardless of whether members are +# time lagged with respect to the nominal cycle date specified by cdate). +# If set_attr_lead were not specified as below, then MET/METplus would +# get the lead from the input forecast file, and that would in general +# differ from one ensemble member to the next depending on whether the +# member is time-lagged. That would cause confusion, so here, we always +# use lead values with zero lead corresponding to cdate. +# +FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR2_NAME = DPT BOTH_VAR2_LEVELS = Z2 +FCST_VAR2_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR3_NAME = RH BOTH_VAR3_LEVELS = Z2 +FCST_VAR3_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR4_NAME = UGRD BOTH_VAR4_LEVELS = Z10 BOTH_VAR4_THRESH = >=2.572 ;; m/s or 5kts +FCST_VAR4_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR5_NAME = VGRD BOTH_VAR5_LEVELS = Z10 BOTH_VAR5_THRESH = >=2.572 ;; m/s or 5kts +FCST_VAR5_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR6_NAME = WIND BOTH_VAR6_LEVELS = Z10 BOTH_VAR6_THRESH = >=2.572, >=2.572&&<5.144, >=5.144, >=10.288, >=15.433 ;; m/s or 5, 10, 20, 30kts -BOTH_VAR6_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind +FCST_VAR6_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind +OBS_VAR6_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind BOTH_VAR7_NAME = PRMSL BOTH_VAR7_LEVELS = Z0 +FCST_VAR7_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; FCST_VAR8_NAME = TCDC FCST_VAR8_LEVELS = L0 -FCST_VAR8_OPTIONS = GRIB_lvl_typ = 200; GRIB2_ipdtmpl_index=[27]; GRIB2_ipdtmpl_val=[255]; interp = { type = [ { method = NEAREST; width = 1; } ]; } +FCST_VAR8_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + GRIB_lvl_typ = 200; + GRIB2_ipdtmpl_index=[27]; + GRIB2_ipdtmpl_val=[255]; + interp = { type = [ { method = NEAREST; width = 1; } ]; } OBS_VAR8_NAME = TCDC OBS_VAR8_LEVELS = L0 BOTH_VAR9_NAME = VIS BOTH_VAR9_LEVELS = L0 BOTH_VAR9_THRESH = <805, <1609, <4828, <8045 ,>=8045, <16090 -BOTH_VAR9_OPTIONS = censor_thresh = [>16090]; censor_val = [16090]; interp = { type = [ { method = NEAREST; width = 1; } ]; } +FCST_VAR9_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + censor_thresh = [>16090]; + censor_val = [16090]; + interp = { type = [ { method = NEAREST; width = 1; } ]; } +OBS_VAR9_OPTIONS = censor_thresh = [>16090]; + censor_val = [16090]; + interp = { type = [ { method = NEAREST; width = 1; } ]; } BOTH_VAR10_NAME = GUST BOTH_VAR10_LEVELS = Z0 +FCST_VAR10_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; FCST_VAR11_NAME = HGT FCST_VAR11_LEVELS = L0 -FCST_VAR11_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING"; FCST_VAR11_THRESH = <152, <305, <914, <1520, <3040, >=914 +FCST_VAR11_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + GRIB_lvl_typ = 215; + desc = "CEILING"; OBS_VAR11_NAME = CEILING OBS_VAR11_LEVELS = L0 -OBS_VAR11_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; } OBS_VAR11_THRESH = <152, <305, <914, <1520, <3040, >=914 +OBS_VAR11_OPTIONS = GRIB_lvl_typ = 215; + interp = { type = [ { method = NEAREST; width = 1; } ]; } BOTH_VAR12_NAME = SPFH BOTH_VAR12_LEVELS = Z2 @@ -260,11 +308,11 @@ OBS_VAR16_THRESH = >=174&&<=176 # # Directory containing observation input to PointStat. # -OBS_POINT_STAT_INPUT_DIR = {ENV[OBS_INPUT_DIR]} +OBS_POINT_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to PointStat. # -FCST_POINT_STAT_INPUT_DIR = {ENV[INPUT_BASE]} +FCST_POINT_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to PointStat. Not used in # this example. @@ -278,34 +326,33 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from PointStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -# # OUTPUT_BASE apparently has to be set to something; it cannot be left # to its default value. But it is not explicitly used elsewhere in this # configuration file. # -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} +OUTPUT_BASE = {{output_base}} +POINT_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # -STAGING_DIR = {OUTPUT_BASE}/stage/SFC +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to PointStat relative to -# FCST_POINT_STAT_INPUT_DIR. -# -FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_ENSMEM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 -# # Template for observation input to PointStat relative to # OBS_POINT_STAT_INPUT_DIR. # -OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE]} +OBS_POINT_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to PointStat relative to +# FCST_POINT_STAT_INPUT_DIR. +# +FCST_POINT_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from PointStat relative to POINT_STAT_OUTPUT_DIR. # -POINT_STAT_OUTPUT_TEMPLATE = metprd/PointStat +POINT_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to PointStat relative to # POINT_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/PointStat_UPA.conf b/parm/metplus/PointStat_UPA.conf index 693e74c1a9..1d20b16fd8 100644 --- a/parm/metplus/PointStat_UPA.conf +++ b/parm/metplus/PointStat_UPA.conf @@ -19,10 +19,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified) # Must be >= 60 seconds. @@ -31,7 +31,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[FHR_LIST]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -45,14 +45,16 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 + +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_UPA_mem{ENV[ENSMEM_INDX]}_{ENV[CDATE]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/metprd/PointStat/metplus_final.UPA{ENV[DOT_ENSMEM]}.conf +METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # Location of MET config file to pass to GridStat # References PARM_BASE, which is the location of the parm directory @@ -120,13 +122,22 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the forecast ensemble member. This # makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_mem{ENV[ENSMEM_INDX]} - +MODEL = {{vx_fcst_model_name}}_mem{ENV[ENSMEM_INDX]} +# +# Value to enter under the DESC column in the output stat file. Here, +# we store the value of the original lead in this column, i.e. the lead +# with zero corresponding to the actual start time of the forecast (which +# is (cdate - time_lag)), not to cdate. This is just the lead in +# LEAD_SEQ with the time lag (time_lag) of the current forecast member +# added on. +# +# Uncomment this line only after upgrading to METplus 5.x. +#POINT_STAT_DESC = {lead?fmt=%H%M%S?shift={{time_lag}}} POINT_STAT_DESC = NA # # Name to identify observation data in output. # -OBTYPE = NDAS +OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -134,7 +145,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {MODEL}_{OBTYPE}_ADPUPA +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -158,14 +169,16 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADPUPA -# Variables and levels as specified in the field dictionary of the METplus -# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields POINT_STAT_ONCE_PER_FIELD = False +# +# Variables and levels as specified in the field dictionary of the METplus +# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION +# # fields to compare # Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set @@ -173,49 +186,75 @@ POINT_STAT_ONCE_PER_FIELD = False BOTH_VAR1_NAME = TMP BOTH_VAR1_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 +# +# Lead to use both in naming of the output .stat and .nc files and for +# lead values in those files. +# +# The specification of set_attr_lead below causes MET/METplus to use the +# lead values in the variable LEAD_SEQ set above, which are the same for +# all ensemble forecast members (i.e. regardless of whether members are +# time lagged with respect to the nominal cycle date specified by cdate). +# If set_attr_lead were not specified as below, then MET/METplus would +# get the lead from the input forecast file, and that would in general +# differ from one ensemble member to the next depending on whether the +# member is time-lagged. That would cause confusion, so here, we always +# use lead values with zero lead corresponding to cdate. +# +FCST_VAR1_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR2_NAME = RH BOTH_VAR2_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250 +FCST_VAR2_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR3_NAME = DPT BOTH_VAR3_LEVELS = P1000, P925, P850, P700, P500, P400, P300 +FCST_VAR3_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR4_NAME = UGRD BOTH_VAR4_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 BOTH_VAR4_THRESH = >=2.572 ;; m/s or 5kts +FCST_VAR4_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR5_NAME = VGRD BOTH_VAR5_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 BOTH_VAR5_THRESH = >=2.572 ;; m/s or 5kts +FCST_VAR5_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR6_NAME = WIND BOTH_VAR6_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 BOTH_VAR6_THRESH = >=2.572, >=2.572&&<5.144, >=5.144, >=10.288, >=15.433, >=20.577, >=25.722 ;; m/s or 5, 10, 20, 30, 40, 50kts +FCST_VAR6_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR7_NAME = HGT BOTH_VAR7_LEVELS = P1000, P950, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 +FCST_VAR7_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; BOTH_VAR8_NAME = SPFH BOTH_VAR8_LEVELS = P1000, P850, P700, P500, P400, P300 +FCST_VAR8_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; FCST_VAR9_NAME = CAPE FCST_VAR9_LEVELS = L0 -FCST_VAR9_OPTIONS = cnt_thresh = [ >0 ]; FCST_VAR9_THRESH = >500, >1000, >1500, >2000, >3000, >4000 +FCST_VAR9_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + cnt_thresh = [ >0 ]; OBS_VAR9_NAME = CAPE OBS_VAR9_LEVELS = L0-100000 -OBS_VAR9_OPTIONS = cnt_thresh = [ >0 ]; cnt_logic = UNION; OBS_VAR9_THRESH = >500, >1000, >1500, >2000, >3000, >4000 +OBS_VAR9_OPTIONS = cnt_thresh = [ >0 ]; + cnt_logic = UNION; FCST_VAR10_NAME = HPBL FCST_VAR10_LEVELS = Z0 +FCST_VAR10_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; OBS_VAR10_NAME = PBL OBS_VAR10_LEVELS = L0 OBS_VAR10_OPTIONS = desc = "TKE"; FCST_VAR11_NAME = HGT FCST_VAR11_LEVELS = L0 -FCST_VAR11_OPTIONS = GRIB_lvl_typ = 220; +FCST_VAR11_OPTIONS = set_attr_lead = "{lead?fmt=%H%M%S}"; + GRIB_lvl_typ = 220; OBS_VAR11_NAME = PBL OBS_VAR11_LEVELS = L0 OBS_VAR11_OPTIONS = desc = "RI"; @@ -234,11 +273,11 @@ OBS_VAR12_THRESH = >500, >1000, >1500, >2000, >3000, >4000 # # Directory containing observation input to PointStat. # -OBS_POINT_STAT_INPUT_DIR = {ENV[OBS_INPUT_DIR]} +OBS_POINT_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to PointStat. # -FCST_POINT_STAT_INPUT_DIR = {ENV[INPUT_BASE]} +FCST_POINT_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to PointStat. Not used in # this example. @@ -252,17 +291,16 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from PointStat. # -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} -# # OUTPUT_BASE apparently has to be set to something; it cannot be left # to its default value. But it is not explicitly used elsewhere in this # configuration file. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} +OUTPUT_BASE = {{output_base}} +POINT_STAT_OUTPUT_DIR = {{output_dir}} # # Directory for staging data. # -STAGING_DIR = {OUTPUT_BASE}/stage/UPA +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] @@ -270,16 +308,16 @@ STAGING_DIR = {OUTPUT_BASE}/stage/UPA # Template for observation input to PointStat relative to # OBS_POINT_STAT_INPUT_DIR. # -OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE]} +OBS_POINT_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} # # Template for forecast input to PointStat relative to # FCST_POINT_STAT_INPUT_DIR. # -FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z{ENV[DOT_ENSMEM]}.prslev.f{lead?fmt=%HHH}.{ENV[POST_OUTPUT_DOMAIN_NAME]}.grib2 +FCST_POINT_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from PointStat relative to POINT_STAT_OUTPUT_DIR. # -POINT_STAT_OUTPUT_TEMPLATE = metprd/PointStat +POINT_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to PointStat relative to # POINT_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/PointStat_ensmean_SFC.conf b/parm/metplus/PointStat_ensmean_SFC.conf index 7f149d618d..9771081456 100644 --- a/parm/metplus/PointStat_ensmean_SFC.conf +++ b/parm/metplus/PointStat_ensmean_SFC.conf @@ -19,10 +19,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. @@ -31,7 +31,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[FHR_LIST]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -45,14 +45,16 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 + +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_ensmean_SFC_{ENV[CDATE]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/PointStat_ensmean/metplus_final.SFC.conf +METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET config file to pass to GridStat # References PARM_BASE, which is the location of the parm directory @@ -121,13 +123,13 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the data as that for the ensemble # mean. This makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean +MODEL = {{vx_fcst_model_name}}_ensmean POINT_STAT_DESC = NA # # Name to identify observation data in output. # -OBTYPE = NDAS +OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -135,7 +137,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_ADPSFC_{OBTYPE}_ensmean +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -159,14 +161,16 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADPSFC -# Variables and levels as specified in the field dictionary of the METplus -# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields POINT_STAT_ONCE_PER_FIELD = False +# +# Variables and levels as specified in the field dictionary of the METplus +# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION +# # fields to compare # Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set @@ -200,12 +204,11 @@ OBS_VAR3_THRESH = >=5, >=10, >=15 # # Directory containing observation input to PointStat. # -OBS_POINT_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/Pb2nc_obs +OBS_POINT_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to PointStat. # -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +FCST_POINT_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to PointStat. Not used in # this example. @@ -219,27 +222,31 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from PointStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +POINT_STAT_OUTPUT_DIR = {{output_dir}} -STAGING_DIR = {OUTPUT_BASE}/stage/SFC_ensmean +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to PointStat relative to -# FCST_POINT_STAT_INPUT_DIR. -# -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -# # Template for observation input to PointStat relative to # OBS_POINT_STAT_INPUT_DIR. # -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas{ENV[DOT_ENSMEM]}.{valid?fmt=%Y%m%d%H}.nc +OBS_POINT_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to PointStat relative to +# FCST_POINT_STAT_INPUT_DIR. +# +FCST_POINT_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from PointStat relative to POINT_STAT_OUTPUT_DIR. # -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/PointStat_ensmean +POINT_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to PointStat relative to # POINT_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/PointStat_ensmean_UPA.conf b/parm/metplus/PointStat_ensmean_UPA.conf index 0ab545d0a8..3fb3f1b790 100644 --- a/parm/metplus/PointStat_ensmean_UPA.conf +++ b/parm/metplus/PointStat_ensmean_UPA.conf @@ -19,10 +19,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. @@ -31,7 +31,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[FHR_LIST]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -45,14 +45,16 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 + +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_ensmean_UPA_{ENV[CDATE]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/PointStat_ensmean/metplus_final.UPA.conf +METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET config file to pass to GridStat # References PARM_BASE, which is the location of the parm directory @@ -121,13 +123,13 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the data as that for the ensemble # mean. This makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensmean +MODEL = {{vx_fcst_model_name}}_ensmean POINT_STAT_DESC = NA # # Name to identify observation data in output. # -OBTYPE = NDAS +OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -135,7 +137,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_ADPUPA_{OBTYPE}_ensmean +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -159,14 +161,16 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADPUPA -# Variables and levels as specified in the field dictionary of the METplus -# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields POINT_STAT_ONCE_PER_FIELD = False +# +# Variables and levels as specified in the field dictionary of the METplus +# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION +# # fields to compare # Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set @@ -275,12 +279,11 @@ OBS_VAR12_THRESH = <500, <1500, >1500 # # Directory containing observation input to PointStat. # -OBS_POINT_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/Pb2nc_obs +OBS_POINT_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to PointStat. # -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +FCST_POINT_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to PointStat. Not used in # this example. @@ -294,27 +297,31 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from PointStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +POINT_STAT_OUTPUT_DIR = {{output_dir}} -STAGING_DIR = {OUTPUT_BASE}/stage/UPA_ensmean +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to PointStat relative to -# FCST_POINT_STAT_INPUT_DIR. -# -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -# # Template for observation input to PointStat relative to # OBS_POINT_STAT_INPUT_DIR. # -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas{ENV[DOT_ENSMEM]}.{valid?fmt=%Y%m%d%H}.nc +OBS_POINT_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to PointStat relative to +# FCST_POINT_STAT_INPUT_DIR. +# +FCST_POINT_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from PointStat relative to POINT_STAT_OUTPUT_DIR. # -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/PointStat_ensmean +POINT_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to PointStat relative to # POINT_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/PointStat_ensprob_SFC.conf b/parm/metplus/PointStat_ensprob_SFC.conf index 100bfa2313..10937c2ec7 100644 --- a/parm/metplus/PointStat_ensprob_SFC.conf +++ b/parm/metplus/PointStat_ensprob_SFC.conf @@ -19,10 +19,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. @@ -31,7 +31,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[FHR_LIST]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -45,14 +45,16 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 + +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_ensprob_SFC_{ENV[CDATE]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/PointStat_ensprob/metplus_final.SFC.conf +METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET config file to pass to GridStat # References PARM_BASE, which is the location of the parm directory @@ -121,13 +123,13 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the data as ensemble-probabilistic. # This makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob +MODEL = {{vx_fcst_model_name}}_ensprob POINT_STAT_DESC = NA # # Name to identify observation data in output. # -OBTYPE = NDAS +OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -135,7 +137,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_ADPSFC_{OBTYPE}_ensprob +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -159,14 +161,16 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADPSFC -# Variables and levels as specified in the field dictionary of the METplus -# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields POINT_STAT_ONCE_PER_FIELD = False +# +# Variables and levels as specified in the field dictionary of the METplus +# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION +# # fields to compare # Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set @@ -378,12 +382,11 @@ FCST_PROB_IN_GRIB_PDS = False # # Directory containing observation input to PointStat. # -OBS_POINT_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/Pb2nc_obs +OBS_POINT_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to PointStat. # -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +FCST_POINT_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to PointStat. Not used in # this example. @@ -397,27 +400,31 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from PointStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +POINT_STAT_OUTPUT_DIR = {{output_dir}} -STAGING_DIR = {OUTPUT_BASE}/stage/SFC_ensprob +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to PointStat relative to -# FCST_POINT_STAT_INPUT_DIR. -# -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -# # Template for observation input to PointStat relative to # OBS_POINT_STAT_INPUT_DIR. # -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas{ENV[DOT_ENSMEM]}.{valid?fmt=%Y%m%d%H}.nc +OBS_POINT_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to PointStat relative to +# FCST_POINT_STAT_INPUT_DIR. +# +FCST_POINT_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from PointStat relative to POINT_STAT_OUTPUT_DIR. # -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/PointStat_ensprob +POINT_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to PointStat relative to # POINT_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/metplus/PointStat_ensprob_UPA.conf b/parm/metplus/PointStat_ensprob_UPA.conf index 3cb0a49375..ea6e380422 100644 --- a/parm/metplus/PointStat_ensprob_UPA.conf +++ b/parm/metplus/PointStat_ensprob_UPA.conf @@ -19,10 +19,10 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG = {ENV[CDATE]} +INIT_BEG = {{cdate}} # End time for METplus run - must match INIT_TIME_FMT -INIT_END = {ENV[CDATE]} +INIT_END = {{cdate}} # Increment between METplus runs (in seconds if no units are specified). # Must be >= 60 seconds. @@ -31,7 +31,7 @@ INIT_INCREMENT = 3600 # List of forecast leads to process for each run time (init or valid) # In hours if units are not specified # If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = {ENV[FHR_LIST]} +LEAD_SEQ = {{fhr_list}} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST @@ -45,14 +45,16 @@ LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 + +FIELDNAME_IN_MET_FILEDIR_NAMES = {{fieldname_in_met_filedir_names}} # # Specify the name of the METplus log file. # -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_ensprob_UPA_{ENV[CDATE]} +LOG_METPLUS = {LOG_DIR}/{{metplus_log_fn}} # # Specify the location and name of the final METplus conf file. # -METPLUS_CONF = {OUTPUT_BASE}/{ENV[CDATE]}/metprd/PointStat_ensprob/metplus_final.UPA.conf +METPLUS_CONF = {POINT_STAT_OUTPUT_DIR}/metplus_final.{{metplus_config_fn}} # # Location of MET config file to pass to GridStat # References PARM_BASE, which is the location of the parm directory @@ -121,13 +123,13 @@ POINT_STAT_OFFSETS = 0 # suffix to MODEL that identifies the data as ensemble-probabilistic. # This makes it easier to identify each curve. # -MODEL = {ENV[VX_FCST_MODEL_NAME]}_ensprob +MODEL = {{vx_fcst_model_name}}_ensprob POINT_STAT_DESC = NA # # Name to identify observation data in output. # -OBTYPE = NDAS +OBTYPE = {{obtype}} # Regrid to specified grid. Indicate NONE if no regridding, or the grid id # (e.g. G212) @@ -135,7 +137,7 @@ POINT_STAT_REGRID_TO_GRID = NONE POINT_STAT_REGRID_METHOD = BILIN POINT_STAT_REGRID_WIDTH = 2 -POINT_STAT_OUTPUT_PREFIX = {ENV[VX_FCST_MODEL_NAME]}_ADPUPA_{OBTYPE}_ensprob +POINT_STAT_OUTPUT_PREFIX = {MODEL}_ADP{FIELDNAME_IN_MET_FILEDIR_NAMES}_{OBTYPE} # sets the -obs_valid_beg command line argument (optional) # not used for this example @@ -159,18 +161,21 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. -POINT_STAT_MESSAGE_TYPE = ADPUPA -# Variables and levels as specified in the field dictionary of the METplus -# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +POINT_STAT_MESSAGE_TYPE = ADP{FIELDNAME_IN_MET_FILEDIR_NAMES} # set to True to run PointStat once for each name/level combination # set to False to run PointStat once per run time including all fields POINT_STAT_ONCE_PER_FIELD = False +# +# Variables and levels as specified in the field dictionary of the METplus +# PointStat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION +# # fields to compare # Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set # To use one variables for both forecast and observation data, set BOTH_VAR_* instead +#FREQ FCST_VAR1_NAME = TMP_P850_ENS_FREQ_ge288 FCST_VAR1_LEVELS = P850 FCST_VAR1_THRESH = ==0.1 @@ -499,12 +504,11 @@ FCST_PROB_IN_GRIB_PDS = False # # Directory containing observation input to PointStat. # -OBS_POINT_STAT_INPUT_DIR = {ENV[OUTPUT_BASE]}/metprd/Pb2nc_obs +OBS_POINT_STAT_INPUT_DIR = {{obs_input_dir}} # # Directory containing forecast input to PointStat. # -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +FCST_POINT_STAT_INPUT_DIR = {{fcst_input_dir}} # # Directory containing climatology mean input to PointStat. Not used in # this example. @@ -518,27 +522,31 @@ POINT_STAT_CLIMO_STDEV_INPUT_DIR = # # Directory in which to write output from PointStat. # -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# OUTPUT_BASE apparently has to be set to something; it cannot be left +# to its default value. But it is not explicitly used elsewhere in this +# configuration file. +# +OUTPUT_BASE = {{output_base}} +POINT_STAT_OUTPUT_DIR = {{output_dir}} -STAGING_DIR = {OUTPUT_BASE}/stage/UPA_ensprob +STAGING_DIR = {{staging_dir}} # End of [dir] section and start of [filename_templates] section. [filename_templates] # -# Template for forecast input to PointStat relative to -# FCST_POINT_STAT_INPUT_DIR. -# -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[VX_FCST_MODEL_NAME]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -# # Template for observation input to PointStat relative to # OBS_POINT_STAT_INPUT_DIR. # -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas{ENV[DOT_ENSMEM]}.{valid?fmt=%Y%m%d%H}.nc +OBS_POINT_STAT_INPUT_TEMPLATE = {{obs_input_fn_template}} +# +# Template for forecast input to PointStat relative to +# FCST_POINT_STAT_INPUT_DIR. +# +FCST_POINT_STAT_INPUT_TEMPLATE = {{fcst_input_fn_template}} # # Template for output from PointStat relative to POINT_STAT_OUTPUT_DIR. # -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/PointStat_ensprob +POINT_STAT_OUTPUT_TEMPLATE = # # Template for climatology input to PointStat relative to # POINT_STAT_CLIMO_MEAN_INPUT_DIR. Not used in this example. diff --git a/parm/wflow/verify.yaml b/parm/wflow/verify.yaml index ffaa3e331e..1a676d3fba 100644 --- a/parm/wflow/verify.yaml +++ b/parm/wflow/verify.yaml @@ -12,8 +12,6 @@ default_task_verify: &default_task LOGDIR: !cycstr "&LOGDIR;" nprocs: '{{ parent.nnodes * parent.ppn }}' FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' - SLASH_ENSMEM_SUBDIR: '&SLASH_ENSMEM_SUBDIR;' - ENSMEM_INDX: "#mem#" join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' memory: '{% if user.MACHINE not in ["WCOSS2", "NOAACLOUD"] %}{{ "2G" }}{% endif %}' native: '{{ platform.SCHED_NATIVE_CMD }}' @@ -70,6 +68,7 @@ task_run_MET_Pb2nc_obs: obs_or_fcst: obs OBTYPE: NDAS OBS_DIR: '&NDAS_OBS_DIR;' + MET_TOOL: 'PB2NC' dependency: and: datadep: @@ -84,8 +83,6 @@ task_run_MET_Pb2nc_obs: task: get_obs_ndas metatask_vx_ens_member: - attrs: - mode: serial var: mem: '{% if global.DO_ENSEMBLE %}{% for m in range(1, global.NUM_ENS_MEMBERS+1) %}{{ "%03d "%m }}{%- endfor -%} {% else %}{{ "000"|string }}{% endif %}' metatask_GridStat_MRMS_mem#mem#: @@ -93,12 +90,16 @@ metatask_vx_ens_member: VAR: REFC RETOP task_run_MET_GridStat_vx_#VAR#_mem#mem#: <<: *default_task - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_VX"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' envars: <<: *default_vars OBS_DIR: '&MRMS_OBS_DIR;' VAR: '#VAR#' ACCUM_HH: '01' + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'MRMS' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' walltime: 02:00:00 dependency: and: @@ -136,15 +137,23 @@ metatask_vx_ens_member: VAR: SFC UPA task_run_MET_PointStat_vx_#VAR#_mem#mem#: <<: *default_task - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_POINTSTAT_VX"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' envars: <<: *default_vars FHR: '#FCST_HR_LIST#' OBS_DIR: '&NDAS_OBS_DIR;' VAR: '#VAR#' + MET_TOOL: 'POINTSTAT' + OBTYPE: 'NDAS' + ACCUM_HH: '01' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' walltime: 01:00:00 dependency: and: + taskdep_pb2nc: + attrs: + task: run_MET_Pb2nc_obs or_do_post: <<: *post_files_exist or_get_obs: # Get obs complete if turned on @@ -161,8 +170,6 @@ metatask_vx_ens_member: task: get_obs_ndas metatask_GridStat_APCP_acc: - attrs: - mode: serial var: ACCUM_HR: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{{ "%02d " % ah }}{% endif %}{% endfor %}' FCST_HR_LIST: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{% for h in range(ah, workflow.FCST_LEN_HRS+1, ah) %}{{ "%02d," % h }}{% endfor %}{% endif %} {% endfor %}' @@ -181,6 +188,7 @@ metatask_GridStat_APCP_acc: obs_or_fcst: obs OBTYPE: CCPA OBS_DIR: '&CCPA_OBS_DIR;' + MET_TOOL: 'PCPCOMBINE' dependency: or: not: @@ -211,6 +219,9 @@ metatask_GridStat_APCP_acc: obs_or_fcst: fcst OBTYPE: CCPA OBS_DIR: '&CCPA_OBS_DIR;' + MET_TOOL: 'PCPCOMBINE' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' dependency: or_do_post: <<: *post_files_exist @@ -219,13 +230,17 @@ metatask_GridStat_APCP_acc: <<: *default_task attrs: maxtries: '2' - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_VX"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX"' envars: <<: *default_vars FHR: '#FCST_HR_LIST#' OBS_DIR: '&CCPA_OBS_DIR;' VAR: APCP ACCUM_HH: '#ACCUM_HR#' + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'CCPA' + ENSMEM_INDX: "#mem#" + SLASH_ENSMEM_SUBDIR_OR_NULL: '{% if global.DO_ENSEMBLE %}{{ "/mem#mem#" }}{% endif %}' walltime: 02:00:00 dependency: and: diff --git a/parm/wflow/verify_ensgrid.yaml b/parm/wflow/verify_ensgrid.yaml index 3842f79fb3..4f8dd65ddf 100644 --- a/parm/wflow/verify_ensgrid.yaml +++ b/parm/wflow/verify_ensgrid.yaml @@ -11,7 +11,6 @@ default_task_verify_ens: &default_task_verify_ens subcyc: !cycstr "@M" LOGDIR: !cycstr "&LOGDIR;" FHR: '{% for h in range(0, workflow.FCST_LEN_HRS+1) %}{{ " %02d" % h }}{% endfor %}' - SLASH_ENSMEM_SUBDIR: '&SLASH_ENSMEM_SUBDIR;' nprocs: '{{ parent.nnodes * parent.ppn }}' join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;' memory: '{% if user.MACHINE not in ["WCOSS2", "NOAACLOUD"] %}{{ "2G" }}{% endif %}' @@ -29,12 +28,14 @@ metatask_EnsembleStat: VAR: REFC RETOP task_run_MET_EnsembleStat_vx_#VAR#: <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_GRID"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' envars: <<: *default_vars ACCUM_HH: '01' OBS_DIR: '&MRMS_OBS_DIR;' VAR: '#VAR#' + MET_TOOL: 'ENSEMBLESTAT' + OBTYPE: 'MRMS' dependency: metataskdep: attrs: @@ -45,12 +46,14 @@ metatask_GridStat_ensprob: VAR: REFC RETOP task_run_MET_GridStat_vx_ensprob_#VAR#: <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENSPROB"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENSPROB"' envars: <<: *default_vars ACCUM_HH: '01' OBS_DIR: '&MRMS_OBS_DIR;' VAR: '#VAR#' + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'MRMS' dependency: taskdep: attrs: @@ -62,13 +65,15 @@ metatask_EnsembleStat_acc: FCST_HR_LIST: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{% for h in range(ah, workflow.FCST_LEN_HRS+1, ah) %}{{ "%02d," % h }}{% endfor %}{% endif %} {% endfor %}' task_run_MET_EnsembleStat_vx_APCP#ACCUM_HR#h: <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_GRID"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' envars: <<: *default_vars ACCUM_HH: '#ACCUM_HR#' FHR: '#FCST_HR_LIST#' OBS_DIR: '&CCPA_OBS_DIR;' VAR: APCP + MET_TOOL: 'ENSEMBLESTAT' + OBTYPE: 'CCPA' dependency: and: or_do_post: &post_files_exist @@ -101,13 +106,15 @@ metatask_ensemble_vx_stats: FCST_HR_LIST: '{% for ah in [1, 3, 6, 24] %}{% if workflow.FCST_LEN_HRS >= ah %}{% for h in range(ah, workflow.FCST_LEN_HRS+1, ah) %}{{ "%02d," % h }}{% endfor %}{% endif %} {% endfor %}' task_run_MET_GridStat_vx_ens#statlc#_APCP#ACCUM_HR#h: <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_VX_ENS#stat#"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENS#stat#"' envars: <<: *default_vars ACCUM_HH: '#ACCUM_HR#' FHR: '#FCST_HR_LIST#' OBS_DIR: '&CCPA_OBS_DIR;' VAR: APCP + MET_TOOL: 'GRIDSTAT' + OBTYPE: 'CCPA' dependency: taskdep: attrs: @@ -117,11 +124,14 @@ metatask_ensemble_vx_stats: VAR: SFC UPA task_run_MET_PointStat_vx_ens#statlc#_#VAR#: <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_POINTSTAT_VX_ENS#stat#"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GRIDSTAT_OR_POINTSTAT_VX_ENS#stat#"' envars: <<: *default_vars OBS_DIR: '&NDAS_OBS_DIR;' VAR: '#VAR#' + MET_TOOL: 'POINTSTAT' + OBTYPE: 'NDAS' + ACCUM_HH: '01' dependency: taskdep: attrs: @@ -132,12 +142,19 @@ metatask_EnsembleStat_point: VAR: SFC UPA task_run_MET_EnsembleStat_vx_#VAR#: <<: *default_task_verify_ens - command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_ENSEMBLESTAT_VX_POINT"' + command: '&LOAD_MODULES_RUN_TASK_FP; "run_vx" "&JOBSdir;/JREGIONAL_RUN_MET_GENENSPROD_OR_ENSEMBLESTAT"' envars: <<: *default_vars OBS_DIR: '&NDAS_OBS_DIR;' VAR: '#VAR#' + MET_TOOL: 'ENSEMBLESTAT' + OBTYPE: 'NDAS' + ACCUM_HH: '01' dependency: - metataskdep: - attrs: - metatask: run_ens_post + and: + metataskdep: + attrs: + metatask: run_ens_post + taskdep: + attrs: + task: run_MET_Pb2nc_obs diff --git a/scripts/exregional_run_met_ensemblestat_vx_grid.sh b/scripts/exregional_run_met_ensemblestat_vx_grid.sh deleted file mode 100755 index dc6e489798..0000000000 --- a/scripts/exregional_run_met_ensemblestat_vx_grid.sh +++ /dev/null @@ -1,185 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_ensgrid|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for ensemble-stat on -the UPP output files by initialization time for all forecast hours for -gridded data. -========================================================================" - -#----------------------------------------------------------------------- -# -# Begin grid-to-grid ensemble vx. -# -#----------------------------------------------------------------------- -# -print_info_msg "$VERBOSE" "Starting ensemble-stat verification" -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Read in FHR and create a comma-separated list -# for METplus to run over. Determine the number padding needed based -# on number of ensemble members. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh - -fhr_last=`echo ${FHR} | awk '{ print $NF }'` -export fhr_last - -fhr_list=`echo ${FHR} | $SED "s/ /,/g"` -export fhr_list - -NUM_PAD=3 - -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMIN - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - ENSMEM_INDX='ZZZ' - INPUT_BASE=$( eval echo ${VX_FCST_INPUT_DIR} ) - export INPUT_BASE=${INPUT_BASE/ZZZ/'*'} - export OUTPUT_BASE=$EXPTDIR - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# - -if [ ${VAR} == "APCP" ]; then - LOG_SUFFIX=EnsembleStat_${VAR}${ACCUM_HH}h_${CDATE} -else - LOG_SUFFIX=EnsembleStat_${VAR}_${CDATE} -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML -# -#----------------------------------------------------------------------- -# -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export NUM_ENS_MEMBERS -export NUM_PAD -export LOG_SUFFIX - -# -#----------------------------------------------------------------------- -# -# Run METplus -# -#----------------------------------------------------------------------- -# -if [ ${VAR} == "APCP" ]; then - acc="${ACCUM_HH}h" # for stats output prefix in EnsembleStatConfig - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/EnsembleStat_${VAR}${acc}.conf -else - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/EnsembleStat_${VAR}.conf -fi - -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus ensemble-stat grid completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_ensemblestat_vx_point.sh b/scripts/exregional_run_met_ensemblestat_vx_point.sh deleted file mode 100755 index b1866dc621..0000000000 --- a/scripts/exregional_run_met_ensemblestat_vx_point.sh +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_enspoint|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for point-stat on -the UPP output files by initialization time for all forecast hours. -========================================================================" - -#----------------------------------------------------------------------- -# -# Begin grid-to-point ensemble vx. -# -#----------------------------------------------------------------------- -# -print_info_msg "$VERBOSE" "Starting point-based ensemble-stat verification" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh - -fhr_last=`echo ${FHR} | awk '{ print $NF }'` -export fhr_last - -fhr_list=`echo ${FHR} | $SED "s/ /,/g"` -export fhr_list - -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMIN - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - ENSMEM_INDX='ZZZ' - INPUT_BASE=$( eval echo ${VX_FCST_INPUT_DIR} ) - export INPUT_BASE=${INPUT_BASE/ZZZ/'*'} - export OUTPUT_BASE=$EXPTDIR - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# -LOG_SUFFIX="EnsembleStat" - -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML and run METplus -# -#----------------------------------------------------------------------- -# -export LOG_SUFFIX -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export NUM_ENS_MEMBERS - -${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/EnsembleStat_${VAR}.conf - -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus ensemble-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_genensprod_or_ensemblestat.sh b/scripts/exregional_run_met_genensprod_or_ensemblestat.sh new file mode 100755 index 0000000000..9f5ddef0b7 --- /dev/null +++ b/scripts/exregional_run_met_genensprod_or_ensemblestat.sh @@ -0,0 +1,441 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHdir/source_util_funcs.sh +source_config_for_task "task_run_vx_ensgrid|task_run_post" ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Source files defining auxiliary functions for verification. +# +#----------------------------------------------------------------------- +# +. $USHdir/get_met_metplus_tool_name.sh +. $USHdir/set_vx_params.sh +. $USHdir/set_vx_fhr_list.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Get the name of the MET/METplus tool in different formats that may be +# needed from the global variable MET_TOOL. +# +#----------------------------------------------------------------------- +# +get_met_metplus_tool_name \ + generic_tool_name="${MET_TOOL}" \ + outvarname_met_tool_name="met_tool_name" \ + outvarname_metplus_tool_name="metplus_tool_name" +# +#----------------------------------------------------------------------- +# +# For debugging purposes, print out values of arguments passed to this +# script. Note that these will be printed out only if VERBOSE is set to +# TRUE. +# +#----------------------------------------------------------------------- +# +print_input_args "valid_args" +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that runs the METplus ${metplus_tool_name} +tool either to generate ensemble products without performing verification +(if running the GenEnsProd tool) or to perform ensemble-based verification +(if running the EnsembleStat tool). +========================================================================" +# +#----------------------------------------------------------------------- +# +# Get the cycle date and time in YYYYMMDDHH format. +# +#----------------------------------------------------------------------- +# +CDATE="${PDY}${cyc}" +# +#----------------------------------------------------------------------- +# +# Set various verification parameters associated with the field to be +# verified. Not all of these are necessarily used later below but are +# set here for consistency with other verification ex-scripts. +# +#----------------------------------------------------------------------- +# +FIELDNAME_IN_OBS_INPUT="" +FIELDNAME_IN_FCST_INPUT="" +FIELDNAME_IN_MET_OUTPUT="" +FIELDNAME_IN_MET_FILEDIR_NAMES="" + +set_vx_params \ + obtype="${OBTYPE}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + outvarname_grid_or_point="grid_or_point" \ + outvarname_field_is_APCPgt01h="field_is_APCPgt01h" \ + outvarname_fieldname_in_obs_input="FIELDNAME_IN_OBS_INPUT" \ + outvarname_fieldname_in_fcst_input="FIELDNAME_IN_FCST_INPUT" \ + outvarname_fieldname_in_MET_output="FIELDNAME_IN_MET_OUTPUT" \ + outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" +# +#----------------------------------------------------------------------- +# +# Set additional field-dependent verification parameters. +# +#----------------------------------------------------------------------- +# +if [ "${grid_or_point}" = "grid" ]; then + + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + FIELD_THRESHOLDS="gt0.0, ge0.254, ge0.508, ge2.54" + ;; + "APCP03h") + FIELD_THRESHOLDS="gt0.0, ge0.508, ge2.54, ge6.350" + ;; + "APCP06h") + FIELD_THRESHOLDS="gt0.0, ge2.54, ge6.350, ge12.700" + ;; + "APCP24h") + FIELD_THRESHOLDS="gt0.0, ge6.350, ge12.700, ge25.400" + ;; + "REFC") + FIELD_THRESHOLDS="ge20, ge30, ge40, ge50" + ;; + "RETOP") + FIELD_THRESHOLDS="ge20, ge30, ge40, ge50" + ;; + *) + print_err_msg_exit "\ +Verification parameters have not been defined for this field +(FIELDNAME_IN_MET_FILEDIR_NAMES): + FIELDNAME_IN_MET_FILEDIR_NAMES = \"${FIELDNAME_IN_MET_FILEDIR_NAMES}\"" + ;; + esac + +elif [ "${grid_or_point}" = "point" ]; then + + FIELD_THRESHOLDS="" + +fi +# +#----------------------------------------------------------------------- +# +# Set paths and file templates for input to and output from the MET/ +# METplus tool to be run as well as other file/directory parameters. +# +#----------------------------------------------------------------------- +# +vx_fcst_input_basedir=$( eval echo "${VX_FCST_INPUT_BASEDIR}" ) +vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +if [ "${RUN_ENVIR}" = "nco" ]; then + slash_cdate_or_null="" +else + slash_cdate_or_null="/${CDATE}" +fi + +if [ "${grid_or_point}" = "grid" ]; then + + OBS_INPUT_FN_TEMPLATE="" + if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + OBS_INPUT_DIR="${vx_output_basedir}/metprd/PcpCombine_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) + FCST_INPUT_DIR="${vx_output_basedir}" + else + OBS_INPUT_DIR="${OBS_DIR}" + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + OBS_INPUT_FN_TEMPLATE="${OBS_CCPA_APCP01h_FN_TEMPLATE}" + ;; + "REFC") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_REFC_FN_TEMPLATE}" + ;; + "RETOP") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_RETOP_FN_TEMPLATE}" + ;; + esac + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) + FCST_INPUT_DIR="${vx_fcst_input_basedir}" + fi + +elif [ "${grid_or_point}" = "point" ]; then + + OBS_INPUT_DIR="${vx_output_basedir}/metprd/Pb2nc_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) + FCST_INPUT_DIR="${vx_fcst_input_basedir}" + +fi +# +# Construct variable that contains a METplus template of the paths to +# the files that the PcpCombine tool has generated (in previous workflow +# tasks). This will be exported to the environment and read by the +# METplus configuration files. +# +NDIGITS_ENSMEM_NAMES=3 +FCST_INPUT_FN_TEMPLATE="" +for (( i=0; i<${NUM_ENS_MEMBERS}; i++ )); do + + mem_indx=$(($i+1)) + mem_indx_fmt=$(printf "%0${NDIGITS_ENSMEM_NAMES}d" "${mem_indx}") + time_lag=$( bc -l <<< "${ENS_TIME_LAG_HRS[$i]}*${SECS_PER_HOUR}" ) + + if [ "${RUN_ENVIR}" = "nco" ]; then + cdate_ensmem_subdir_or_null="" + DOT_ENSMEM_OR_NULL=".mem${mem_indx_fmt}" + else + cdate_ensmem_subdir_or_null="${CDATE}/mem${mem_indx_fmt}" + DOT_ENSMEM_OR_NULL="" + fi + + if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + template="${cdate_ensmem_subdir_or_null:+${cdate_ensmem_subdir_or_null}/}metprd/PcpCombine_fcst/${FCST_FN_METPROC_TEMPLATE}" + else + template="${FCST_SUBDIR_TEMPLATE}/${FCST_FN_TEMPLATE}" + fi + + SLASH_ENSMEM_SUBDIR_OR_NULL="/mem${mem_indx_fmt}" + if [ -z "${FCST_INPUT_FN_TEMPLATE}" ]; then + FCST_INPUT_FN_TEMPLATE=" $(eval echo ${template})" + else + FCST_INPUT_FN_TEMPLATE="\ +${FCST_INPUT_FN_TEMPLATE}, + $(eval echo ${template})" + fi + +done + +OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}" +OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}" +STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" +# +#----------------------------------------------------------------------- +# +# Set the array of forecast hours for which to run the MET/METplus tool. +# +#----------------------------------------------------------------------- +# +set_vx_fhr_list \ + cdate="${CDATE}" \ + fcst_len_hrs="${FCST_LEN_HRS}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + base_dir="${OBS_INPUT_DIR}" \ + fn_template="${OBS_INPUT_FN_TEMPLATE}" \ + check_hourly_files="FALSE" \ + outvarname_fhr_list="FHR_LIST" +# +#----------------------------------------------------------------------- +# +# Make sure the MET/METplus output directory(ies) exists. +# +#----------------------------------------------------------------------- +# +mkdir_vrfy -p "${OUTPUT_DIR}" +# +#----------------------------------------------------------------------- +# +# Check for existence of top-level OBS_DIR. +# +#----------------------------------------------------------------------- +# +if [ ! -d "${OBS_DIR}" ]; then + print_err_msg_exit "\ +OBS_DIR does not exist or is not a directory: + OBS_DIR = \"${OBS_DIR}\"" +fi +# +#----------------------------------------------------------------------- +# +# Export variables needed in the common METplus configuration file (at +# ${METPLUS_CONF}/common.conf). +# +#----------------------------------------------------------------------- +# +export MET_INSTALL_DIR +export METPLUS_PATH +export MET_BIN_EXEC +export METPLUS_CONF +export LOGDIR +# +#----------------------------------------------------------------------- +# +# Do not run METplus if there isn't at least one valid forecast hour for +# which to run it. +# +#----------------------------------------------------------------------- +# +if [ -z "${FHR_LIST}" ]; then + print_err_msg_exit "\ +The list of forecast hours for which to run METplus is empty: + FHR_LIST = [${FHR_LIST}]" +fi +# +#----------------------------------------------------------------------- +# +# Set the names of the template METplus configuration file, the METplus +# configuration file generated from this template, and the METplus log +# file. +# +#----------------------------------------------------------------------- +# +# First, set the base file names. +# +if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + metplus_config_tmpl_fn="APCPgt01h" +else + metplus_config_tmpl_fn="${FIELDNAME_IN_MET_FILEDIR_NAMES}" +fi +metplus_config_tmpl_fn="${metplus_tool_name}_${metplus_config_tmpl_fn}" +metplus_config_fn="${metplus_tool_name}_${FIELDNAME_IN_MET_FILEDIR_NAMES}" +metplus_log_fn="${metplus_config_fn}" +# +# Add prefixes and suffixes (extensions) to the base file names. +# +metplus_config_tmpl_fn="${metplus_config_tmpl_fn}.conf" +metplus_config_fn="${metplus_config_fn}.conf" +metplus_log_fn="metplus.log.${metplus_log_fn}" +# +#----------------------------------------------------------------------- +# +# Generate the METplus configuration file from its jinja template. +# +#----------------------------------------------------------------------- +# +# Set the full paths to the jinja template METplus configuration file +# (which already exists) and the METplus configuration file that will be +# generated from it. +# +metplus_config_tmpl_fp="${METPLUS_CONF}/${metplus_config_tmpl_fn}" +metplus_config_fp="${OUTPUT_DIR}/${metplus_config_fn}" +# +# Define variables that appear in the jinja template. +# +settings="\ +# +# Date and forecast hour information. +# + 'cdate': '$CDATE' + 'fhr_list': '${FHR_LIST}' +# +# Input and output directory/file information. +# + 'metplus_config_fn': '${metplus_config_fn:-}' + 'metplus_log_fn': '${metplus_log_fn:-}' + 'obs_input_dir': '${OBS_INPUT_DIR:-}' + 'obs_input_fn_template': '${OBS_INPUT_FN_TEMPLATE:-}' + 'fcst_input_dir': '${FCST_INPUT_DIR:-}' + 'fcst_input_fn_template': '${FCST_INPUT_FN_TEMPLATE:-}' + 'output_base': '${OUTPUT_BASE}' + 'output_dir': '${OUTPUT_DIR}' + 'output_fn_template': '${OUTPUT_FN_TEMPLATE:-}' + 'staging_dir': '${STAGING_DIR}' + 'vx_fcst_model_name': '${VX_FCST_MODEL_NAME}' +# +# Ensemble and member-specific information. +# + 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'time_lag': '${time_lag:-}' +# +# Field information. +# + 'fieldname_in_obs_input': '${FIELDNAME_IN_OBS_INPUT}' + 'fieldname_in_fcst_input': '${FIELDNAME_IN_FCST_INPUT}' + 'fieldname_in_met_output': '${FIELDNAME_IN_MET_OUTPUT}' + 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' + 'obtype': '${OBTYPE}' + 'accum_hh': '${ACCUM_HH:-}' + 'accum_no_pad': '${ACCUM_NO_PAD:-}' + 'field_thresholds': '${FIELD_THRESHOLDS:-}' +" +# +# Call the python script to generate the METplus configuration file from +# the jinja template. +# +$USHdir/fill_jinja_template.py -q \ + -u "${settings}" \ + -t ${metplus_config_tmpl_fp} \ + -o ${metplus_config_fp} || \ +print_err_msg_exit "\ +Call to python script fill_jinja_template.py to generate a METplus +configuration file from a jinja template failed. Parameters passed +to this script are: + Full path to template METplus configuration file: + metplus_config_tmpl_fp = \"${metplus_config_tmpl_fp}\" + Full path to output METplus configuration file: + metplus_config_fp = \"${metplus_config_fp}\" + Jinja settings specified on command line: + settings = +$settings" +# +#----------------------------------------------------------------------- +# +# Call METplus. +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Calling METplus to run MET's ${met_tool_name} tool for field(s): ${FIELDNAME_IN_MET_FILEDIR_NAMES}" +${METPLUS_PATH}/ush/run_metplus.py \ + -c ${METPLUS_CONF}/common.conf \ + -c ${metplus_config_fp} || \ +print_err_msg_exit " +Call to METplus failed with return code: $? +METplus configuration file used is: + metplus_config_fp = \"${metplus_config_fp}\"" +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +METplus ${metplus_tool_name} tool completed successfully. + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh new file mode 100755 index 0000000000..62e5961f4e --- /dev/null +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx.sh @@ -0,0 +1,421 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHdir/source_util_funcs.sh +source_config_for_task "task_run_vx_gridstat|task_run_vx_pointstat|task_run_post" ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Source files defining auxiliary functions for verification. +# +#----------------------------------------------------------------------- +# +. $USHdir/get_met_metplus_tool_name.sh +. $USHdir/set_vx_params.sh +. $USHdir/set_vx_fhr_list.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Get the name of the MET/METplus tool in different formats that may be +# needed from the global variable MET_TOOL. +# +#----------------------------------------------------------------------- +# +get_met_metplus_tool_name \ + generic_tool_name="${MET_TOOL}" \ + outvarname_met_tool_name="met_tool_name" \ + outvarname_metplus_tool_name="metplus_tool_name" +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that runs the METplus ${metplus_tool_name} +tool to perform deterministic verification of the specified field (VAR) +for a single forecast. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Get the cycle date and time in YYYYMMDDHH format. +# +#----------------------------------------------------------------------- +# +CDATE="${PDY}${cyc}" +# +#----------------------------------------------------------------------- +# +# Set various verification parameters associated with the field to be +# verified. Not all of these are necessarily used later below but are +# set here for consistency with other verification ex-scripts. +# +#----------------------------------------------------------------------- +# +FIELDNAME_IN_OBS_INPUT="" +FIELDNAME_IN_FCST_INPUT="" +FIELDNAME_IN_MET_OUTPUT="" +FIELDNAME_IN_MET_FILEDIR_NAMES="" + +set_vx_params \ + obtype="${OBTYPE}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + outvarname_grid_or_point="grid_or_point" \ + outvarname_field_is_APCPgt01h="field_is_APCPgt01h" \ + outvarname_fieldname_in_obs_input="FIELDNAME_IN_OBS_INPUT" \ + outvarname_fieldname_in_fcst_input="FIELDNAME_IN_FCST_INPUT" \ + outvarname_fieldname_in_MET_output="FIELDNAME_IN_MET_OUTPUT" \ + outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" +# +#----------------------------------------------------------------------- +# +# If performing ensemble verification, get the time lag (if any) of the +# current ensemble forecast member. The time lag is the duration (in +# seconds) by which the current forecast member was initialized before +# the current cycle date and time (with the latter specified by CDATE). +# For example, a time lag of 3600 means that the current member was +# initialized 1 hour before the current CDATE, while a time lag of 0 +# means the current member was initialized on CDATE. +# +# Note that if we're not running ensemble verification (i.e. if we're +# running verification for a single deterministic forecast), the time +# lag gets set to 0. +# +#----------------------------------------------------------------------- +# +time_lag=$(( (${MEM_INDX_OR_NULL:+${ENS_TIME_LAG_HRS[${MEM_INDX_OR_NULL}-1]}}+0) )) +# Convert to seconds. We do this as a separate step using bc because +# bash's $((...)) arithmetic operator can't handle floats well. +time_lag=$( bc -l <<< "${time_lag}*${SECS_PER_HOUR}" ) +# +#----------------------------------------------------------------------- +# +# Set additional field-dependent verification parameters. +# +#----------------------------------------------------------------------- +# +if [ "${grid_or_point}" = "grid" ]; then + + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + FIELD_THRESHOLDS="gt0.0, ge0.254, ge0.508, ge1.27, ge2.54" + ;; + "APCP03h") + FIELD_THRESHOLDS="gt0.0, ge0.254, ge0.508, ge1.27, ge2.54, ge3.810, ge6.350" + ;; + "APCP06h") + FIELD_THRESHOLDS="gt0.0, ge0.254, ge0.508, ge1.27, ge2.54, ge3.810, ge6.350, ge8.890, ge12.700" + ;; + "APCP24h") + FIELD_THRESHOLDS="gt0.0, ge0.254, ge0.508, ge1.27, ge2.54, ge3.810, ge6.350, ge8.890, ge12.700, ge25.400" + ;; + "REFC") + FIELD_THRESHOLDS="ge20, ge30, ge40, ge50" + ;; + "RETOP") + FIELD_THRESHOLDS="ge20, ge30, ge40, ge50" + ;; + *) + print_err_msg_exit "\ +Verification parameters have not been defined for this field +(FIELDNAME_IN_MET_FILEDIR_NAMES): + FIELDNAME_IN_MET_FILEDIR_NAMES = \"${FIELDNAME_IN_MET_FILEDIR_NAMES}\"" + ;; + esac + +elif [ "${grid_or_point}" = "point" ]; then + + FIELD_THRESHOLDS="" + +fi +# +#----------------------------------------------------------------------- +# +# Set paths and file templates for input to and output from the MET/ +# METplus tool to be run as well as other file/directory parameters. +# +#----------------------------------------------------------------------- +# +vx_fcst_input_basedir=$( eval echo "${VX_FCST_INPUT_BASEDIR}" ) +vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +if [ "${RUN_ENVIR}" = "nco" ]; then + if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then + ENSMEM=$( echo ${SLASH_ENSMEM_SUBDIR_OR_NULL} | cut -d"/" -f2 ) + DOT_ENSMEM_OR_NULL=".$ENSMEM" + else + DOT_ENSMEM_OR_NULL="" + fi +else + DOT_ENSMEM_OR_NULL="" +fi + +if [ "${grid_or_point}" = "grid" ]; then + + OBS_INPUT_FN_TEMPLATE="" + if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + OBS_INPUT_DIR="${vx_output_basedir}/metprd/PcpCombine_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) + FCST_INPUT_DIR="${vx_output_basedir}/${CDATE}/mem${ENSMEM_INDX}/metprd/PcpCombine_fcst" + FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_FN_METPROC_TEMPLATE} ) + else + OBS_INPUT_DIR="${OBS_DIR}" + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + OBS_INPUT_FN_TEMPLATE="${OBS_CCPA_APCP01h_FN_TEMPLATE}" + ;; + "REFC") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_REFC_FN_TEMPLATE}" + ;; + "RETOP") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_RETOP_FN_TEMPLATE}" + ;; + esac + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) + FCST_INPUT_DIR="${vx_fcst_input_basedir}" + FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_SUBDIR_TEMPLATE:+${FCST_SUBDIR_TEMPLATE}/}${FCST_FN_TEMPLATE} ) + fi + +elif [ "${grid_or_point}" = "point" ]; then + + OBS_INPUT_DIR="${vx_output_basedir}/metprd/Pb2nc_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) + FCST_INPUT_DIR="${vx_fcst_input_basedir}" + FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_SUBDIR_TEMPLATE:+${FCST_SUBDIR_TEMPLATE}/}${FCST_FN_TEMPLATE} ) + +fi + +OUTPUT_BASE="${vx_output_basedir}/${CDATE}/mem${ENSMEM_INDX}" +OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}" +STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" +# +#----------------------------------------------------------------------- +# +# Set the array of forecast hours for which to run the MET/METplus tool. +# +#----------------------------------------------------------------------- +# +set_vx_fhr_list \ + cdate="${CDATE}" \ + fcst_len_hrs="${FCST_LEN_HRS}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + base_dir="${OBS_INPUT_DIR}" \ + fn_template="${OBS_INPUT_FN_TEMPLATE}" \ + check_hourly_files="FALSE" \ + outvarname_fhr_list="FHR_LIST" +# +#----------------------------------------------------------------------- +# +# Make sure the MET/METplus output directory(ies) exists. +# +#----------------------------------------------------------------------- +# +mkdir_vrfy -p "${OUTPUT_DIR}" +# +#----------------------------------------------------------------------- +# +# Check for existence of top-level OBS_DIR. +# +#----------------------------------------------------------------------- +# +if [ ! -d "${OBS_DIR}" ]; then + print_err_msg_exit "\ +OBS_DIR does not exist or is not a directory: + OBS_DIR = \"${OBS_DIR}\"" +fi +# +#----------------------------------------------------------------------- +# +# Export variables needed in the common METplus configuration file (at +# ${METPLUS_CONF}/common.conf). +# +#----------------------------------------------------------------------- +# +export MET_INSTALL_DIR +export METPLUS_PATH +export MET_BIN_EXEC +export METPLUS_CONF +export LOGDIR +# +#----------------------------------------------------------------------- +# +# Do not run METplus if there isn't at least one valid forecast hour for +# which to run it. +# +#----------------------------------------------------------------------- +# +if [ -z "${FHR_LIST}" ]; then + print_err_msg_exit "\ +The list of forecast hours for which to run METplus is empty: + FHR_LIST = [${FHR_LIST}]" +fi +# +#----------------------------------------------------------------------- +# +# Set the names of the template METplus configuration file, the METplus +# configuration file generated from this template, and the METplus log +# file. +# +#----------------------------------------------------------------------- +# +# First, set the base file names. +# +if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + metplus_config_tmpl_fn="APCPgt01h" +else + metplus_config_tmpl_fn="${FIELDNAME_IN_MET_FILEDIR_NAMES}" +fi +metplus_config_tmpl_fn="${metplus_tool_name}_${metplus_config_tmpl_fn}" +metplus_config_fn="${metplus_tool_name}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_mem${ENSMEM_INDX}" +metplus_log_fn="${metplus_config_fn}" +# +# Add prefixes and suffixes (extensions) to the base file names. +# +metplus_config_tmpl_fn="${metplus_config_tmpl_fn}.conf" +metplus_config_fn="${metplus_config_fn}.conf" +metplus_log_fn="metplus.log.${metplus_log_fn}" +# +#----------------------------------------------------------------------- +# +# Generate the METplus configuration file from its jinja template. +# +#----------------------------------------------------------------------- +# +# Set the full paths to the jinja template METplus configuration file +# (which already exists) and the METplus configuration file that will be +# generated from it. +# +metplus_config_tmpl_fp="${METPLUS_CONF}/${metplus_config_tmpl_fn}" +metplus_config_fp="${OUTPUT_DIR}/${metplus_config_fn}" +# +# Define variables that appear in the jinja template. +# +settings="\ +# +# Date and forecast hour information. +# + 'cdate': '$CDATE' + 'fhr_list': '${FHR_LIST}' +# +# Input and output directory/file information. +# + 'metplus_config_fn': '${metplus_config_fn:-}' + 'metplus_log_fn': '${metplus_log_fn:-}' + 'obs_input_dir': '${OBS_INPUT_DIR:-}' + 'obs_input_fn_template': '${OBS_INPUT_FN_TEMPLATE:-}' + 'fcst_input_dir': '${FCST_INPUT_DIR:-}' + 'fcst_input_fn_template': '${FCST_INPUT_FN_TEMPLATE:-}' + 'output_base': '${OUTPUT_BASE}' + 'output_dir': '${OUTPUT_DIR}' + 'output_fn_template': '${OUTPUT_FN_TEMPLATE:-}' + 'staging_dir': '${STAGING_DIR}' + 'vx_fcst_model_name': '${VX_FCST_MODEL_NAME}' +# +# Ensemble and member-specific information. +# + 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'time_lag': '${time_lag:-}' +# +# Field information. +# + 'fieldname_in_obs_input': '${FIELDNAME_IN_OBS_INPUT}' + 'fieldname_in_fcst_input': '${FIELDNAME_IN_FCST_INPUT}' + 'fieldname_in_met_output': '${FIELDNAME_IN_MET_OUTPUT}' + 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' + 'obtype': '${OBTYPE}' + 'accum_hh': '${ACCUM_HH:-}' + 'accum_no_pad': '${ACCUM_NO_PAD:-}' + 'field_thresholds': '${FIELD_THRESHOLDS:-}' +" +# +# Call the python script to generate the METplus configuration file from +# the jinja template. +# +$USHdir/fill_jinja_template.py -q \ + -u "${settings}" \ + -t ${metplus_config_tmpl_fp} \ + -o ${metplus_config_fp} || \ +print_err_msg_exit "\ +Call to python script fill_jinja_template.py to generate a METplus +configuration file from a jinja template failed. Parameters passed +to this script are: + Full path to template METplus configuration file: + metplus_config_tmpl_fp = \"${metplus_config_tmpl_fp}\" + Full path to output METplus configuration file: + metplus_config_fp = \"${metplus_config_fp}\" + Jinja settings specified on command line: + settings = +$settings" +# +#----------------------------------------------------------------------- +# +# Call METplus. +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Calling METplus to run MET's ${met_tool_name} tool for field(s): ${FIELDNAME_IN_MET_FILEDIR_NAMES}" +${METPLUS_PATH}/ush/run_metplus.py \ + -c ${METPLUS_CONF}/common.conf \ + -c ${metplus_config_fp} || \ +print_err_msg_exit " +Call to METplus failed with return code: $? +METplus configuration file used is: + metplus_config_fp = \"${metplus_config_fp}\"" +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +METplus ${metplus_tool_name} tool completed successfully. + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh new file mode 100755 index 0000000000..15c2e34a56 --- /dev/null +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensmean.sh @@ -0,0 +1,407 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHdir/source_util_funcs.sh +source_config_for_task "task_run_vx_ensgrid_mean|task_run_vx_enspoint_mean|task_run_post" ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Source files defining auxiliary functions for verification. +# +#----------------------------------------------------------------------- +# +. $USHdir/get_met_metplus_tool_name.sh +. $USHdir/set_vx_params.sh +. $USHdir/set_vx_fhr_list.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Get the name of the MET/METplus tool in different formats that may be +# needed from the global variable MET_TOOL. +# +#----------------------------------------------------------------------- +# +get_met_metplus_tool_name \ + generic_tool_name="${MET_TOOL}" \ + outvarname_met_tool_name="met_tool_name" \ + outvarname_metplus_tool_name="metplus_tool_name" +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that runs the METplus ${metplus_tool_name} +tool to perform verification of the specified field (VAR) on the ensemble +mean. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Get the cycle date and time in YYYYMMDDHH format. +# +#----------------------------------------------------------------------- +# +CDATE="${PDY}${cyc}" +# +#----------------------------------------------------------------------- +# +# Set various verification parameters associated with the field to be +# verified. Not all of these are necessarily used later below but are +# set here for consistency with other verification ex-scripts. +# +#----------------------------------------------------------------------- +# +FIELDNAME_IN_OBS_INPUT="" +FIELDNAME_IN_FCST_INPUT="" +FIELDNAME_IN_MET_OUTPUT="" +FIELDNAME_IN_MET_FILEDIR_NAMES="" + +set_vx_params \ + obtype="${OBTYPE}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + outvarname_grid_or_point="grid_or_point" \ + outvarname_field_is_APCPgt01h="field_is_APCPgt01h" \ + outvarname_fieldname_in_obs_input="FIELDNAME_IN_OBS_INPUT" \ + outvarname_fieldname_in_fcst_input="FIELDNAME_IN_FCST_INPUT" \ + outvarname_fieldname_in_MET_output="FIELDNAME_IN_MET_OUTPUT" \ + outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" +# +#----------------------------------------------------------------------- +# +# Set additional field-dependent verification parameters. +# +#----------------------------------------------------------------------- +# +if [ "${grid_or_point}" = "grid" ]; then + + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + FIELD_THRESHOLDS="gt0.0, ge0.254, ge0.508, ge2.54" + ;; + "APCP03h") + FIELD_THRESHOLDS="gt0.0, ge0.508, ge2.54, ge6.350" + ;; + "APCP06h") + FIELD_THRESHOLDS="gt0.0, ge2.54, ge6.350, ge12.700" + ;; + "APCP24h") + FIELD_THRESHOLDS="gt0.0, ge6.350, ge12.700, ge25.400" + ;; + "REFC") + FIELD_THRESHOLDS="ge20, ge30, ge40, ge50" + ;; + "RETOP") + FIELD_THRESHOLDS="ge20, ge30, ge40, ge50" + ;; + *) + print_err_msg_exit "\ +Verification parameters have not been defined for this field +(FIELDNAME_IN_MET_FILEDIR_NAMES): + FIELDNAME_IN_MET_FILEDIR_NAMES = \"${FIELDNAME_IN_MET_FILEDIR_NAMES}\"" + ;; + esac + +elif [ "${grid_or_point}" = "point" ]; then + + FIELD_THRESHOLDS="" + +fi +# +#----------------------------------------------------------------------- +# +# Set paths and file templates for input to and output from the MET/ +# METplus tool to be run as well as other file/directory parameters. +# +#----------------------------------------------------------------------- +# +vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +if [ "${RUN_ENVIR}" = "nco" ]; then + slash_cdate_or_null="" +else + slash_cdate_or_null="/${CDATE}" +fi + +if [ "${grid_or_point}" = "grid" ]; then + + OBS_INPUT_FN_TEMPLATE="" + if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + OBS_INPUT_DIR="${vx_output_basedir}/metprd/PcpCombine_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) + else + OBS_INPUT_DIR="${OBS_DIR}" + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + OBS_INPUT_FN_TEMPLATE="${OBS_CCPA_APCP01h_FN_TEMPLATE}" + ;; + "REFC") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_REFC_FN_TEMPLATE}" + ;; + "RETOP") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_RETOP_FN_TEMPLATE}" + ;; + esac + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) + fi +# Keep for when splitting GenEnsProd from EnsembleStat. +# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" +# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) + FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" + FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + +elif [ "${grid_or_point}" = "point" ]; then + + OBS_INPUT_DIR="${vx_output_basedir}/metprd/Pb2nc_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) +# Keep for when splitting GenEnsProd from EnsembleStat. +# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" +# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) + FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" + FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + +fi + +OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}" +OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}_ensmean" +STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}_ensmean" +# +#----------------------------------------------------------------------- +# +# Set the array of forecast hours for which to run the MET/METplus tool. +# +#----------------------------------------------------------------------- +# +set_vx_fhr_list \ + cdate="${CDATE}" \ + fcst_len_hrs="${FCST_LEN_HRS}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + base_dir="${OBS_INPUT_DIR}" \ + fn_template="${OBS_INPUT_FN_TEMPLATE}" \ + check_hourly_files="FALSE" \ + outvarname_fhr_list="FHR_LIST" +# +#----------------------------------------------------------------------- +# +# Make sure the MET/METplus output directory(ies) exists. +# +#----------------------------------------------------------------------- +# +mkdir_vrfy -p "${OUTPUT_DIR}" +# +#----------------------------------------------------------------------- +# +# Check for existence of top-level OBS_DIR. +# +#----------------------------------------------------------------------- +# +if [ ! -d "${OBS_DIR}" ]; then + print_err_msg_exit "\ +OBS_DIR does not exist or is not a directory: + OBS_DIR = \"${OBS_DIR}\"" +fi +# +#----------------------------------------------------------------------- +# +# Set variable containing accumulation period without leading zero +# padding. This may be needed in the METplus configuration files. +# +#----------------------------------------------------------------------- +# +ACCUM_NO_PAD=$( printf "%0d" "${ACCUM_HH}" ) +# +#----------------------------------------------------------------------- +# +# Export variables needed in the common METplus configuration file (at +# ${METPLUS_CONF}/common.conf). +# +#----------------------------------------------------------------------- +# +export MET_INSTALL_DIR +export METPLUS_PATH +export MET_BIN_EXEC +export METPLUS_CONF +export LOGDIR +# +#----------------------------------------------------------------------- +# +# Do not run METplus if there isn't at least one valid forecast hour for +# which to run it. +# +#----------------------------------------------------------------------- +# +if [ -z "${FHR_LIST}" ]; then + print_err_msg_exit "\ +The list of forecast hours for which to run METplus is empty: + FHR_LIST = [${FHR_LIST}]" +fi +# +#----------------------------------------------------------------------- +# +# Set the names of the template METplus configuration file, the METplus +# configuration file generated from this template, and the METplus log +# file. +# +#----------------------------------------------------------------------- +# +# First, set the base file names. +# +if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + metplus_config_tmpl_fn="APCPgt01h" +else + metplus_config_tmpl_fn="${FIELDNAME_IN_MET_FILEDIR_NAMES}" +fi +metplus_config_tmpl_fn="${metplus_tool_name}_ensmean_${metplus_config_tmpl_fn}" +metplus_config_fn="${metplus_tool_name}_ensmean_${FIELDNAME_IN_MET_FILEDIR_NAMES}" +metplus_log_fn="${metplus_config_fn}" +# +# Add prefixes and suffixes (extensions) to the base file names. +# +metplus_config_tmpl_fn="${metplus_config_tmpl_fn}.conf" +metplus_config_fn="${metplus_config_fn}.conf" +metplus_log_fn="metplus.log.${metplus_log_fn}" +# +#----------------------------------------------------------------------- +# +# Generate the METplus configuration file from its jinja template. +# +#----------------------------------------------------------------------- +# +# Set the full paths to the jinja template METplus configuration file +# (which already exists) and the METplus configuration file that will be +# generated from it. +# +metplus_config_tmpl_fp="${METPLUS_CONF}/${metplus_config_tmpl_fn}" +metplus_config_fp="${OUTPUT_DIR}/${metplus_config_fn}" +# +# Define variables that appear in the jinja template. +# +settings="\ +# +# Date and forecast hour information. +# + 'cdate': '$CDATE' + 'fhr_list': '${FHR_LIST}' +# +# Input and output directory/file information. +# + 'metplus_config_fn': '${metplus_config_fn:-}' + 'metplus_log_fn': '${metplus_log_fn:-}' + 'obs_input_dir': '${OBS_INPUT_DIR:-}' + 'obs_input_fn_template': '${OBS_INPUT_FN_TEMPLATE:-}' + 'fcst_input_dir': '${FCST_INPUT_DIR:-}' + 'fcst_input_fn_template': '${FCST_INPUT_FN_TEMPLATE:-}' + 'output_base': '${OUTPUT_BASE}' + 'output_dir': '${OUTPUT_DIR}' + 'output_fn_template': '${OUTPUT_FN_TEMPLATE:-}' + 'staging_dir': '${STAGING_DIR}' + 'vx_fcst_model_name': '${VX_FCST_MODEL_NAME}' +# +# Ensemble and member-specific information. +# + 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'time_lag': '${time_lag:-}' +# +# Field information. +# + 'fieldname_in_obs_input': '${FIELDNAME_IN_OBS_INPUT}' + 'fieldname_in_fcst_input': '${FIELDNAME_IN_FCST_INPUT}' + 'fieldname_in_met_output': '${FIELDNAME_IN_MET_OUTPUT}' + 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' + 'obtype': '${OBTYPE}' + 'accum_hh': '${ACCUM_HH:-}' + 'accum_no_pad': '${ACCUM_NO_PAD:-}' + 'field_thresholds': '${FIELD_THRESHOLDS:-}' +" +# +# Call the python script to generate the METplus configuration file from +# the jinja template. +# +$USHdir/fill_jinja_template.py -q \ + -u "${settings}" \ + -t ${metplus_config_tmpl_fp} \ + -o ${metplus_config_fp} || \ +print_err_msg_exit "\ +Call to python script fill_jinja_template.py to generate a METplus +configuration file from a jinja template failed. Parameters passed +to this script are: + Full path to template METplus configuration file: + metplus_config_tmpl_fp = \"${metplus_config_tmpl_fp}\" + Full path to output METplus configuration file: + metplus_config_fp = \"${metplus_config_fp}\" + Jinja settings specified on command line: + settings = +$settings" +# +#----------------------------------------------------------------------- +# +# Call METplus. +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Calling METplus to run MET's ${met_tool_name} tool for field(s): ${FIELDNAME_IN_MET_FILEDIR_NAMES}" +${METPLUS_PATH}/ush/run_metplus.py \ + -c ${METPLUS_CONF}/common.conf \ + -c ${metplus_config_fp} || \ +print_err_msg_exit " +Call to METplus failed with return code: $? +METplus configuration file used is: + metplus_config_fp = \"${metplus_config_fp}\"" +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +METplus ${metplus_tool_name} tool completed successfully. + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh new file mode 100755 index 0000000000..fb33760892 --- /dev/null +++ b/scripts/exregional_run_met_gridstat_or_pointstat_vx_ensprob.sh @@ -0,0 +1,369 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. $USHdir/source_util_funcs.sh +source_config_for_task "task_run_vx_ensgrid_prob|task_run_vx_enspoint_prob|task_run_post" ${GLOBAL_VAR_DEFNS_FP} +# +#----------------------------------------------------------------------- +# +# Source files defining auxiliary functions for verification. +# +#----------------------------------------------------------------------- +# +. $USHdir/get_met_metplus_tool_name.sh +. $USHdir/set_vx_params.sh +. $USHdir/set_vx_fhr_list.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Get the name of the MET/METplus tool in different formats that may be +# needed from the global variable MET_TOOL. +# +#----------------------------------------------------------------------- +# +get_met_metplus_tool_name \ + generic_tool_name="${MET_TOOL}" \ + outvarname_met_tool_name="met_tool_name" \ + outvarname_metplus_tool_name="metplus_tool_name" +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that runs the METplus ${metplus_tool_name} +tool to perform verification of the specified field (VAR) on the ensemble +frequencies/probabilities. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Get the cycle date and time in YYYYMMDDHH format. +# +#----------------------------------------------------------------------- +# +CDATE="${PDY}${cyc}" +# +#----------------------------------------------------------------------- +# +# Set various verification parameters associated with the field to be +# verified. Not all of these are necessarily used later below but are +# set here for consistency with other verification ex-scripts. +# +#----------------------------------------------------------------------- +# +FIELDNAME_IN_OBS_INPUT="" +FIELDNAME_IN_FCST_INPUT="" +FIELDNAME_IN_MET_OUTPUT="" +FIELDNAME_IN_MET_FILEDIR_NAMES="" + +set_vx_params \ + obtype="${OBTYPE}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + outvarname_grid_or_point="grid_or_point" \ + outvarname_field_is_APCPgt01h="field_is_APCPgt01h" \ + outvarname_fieldname_in_obs_input="FIELDNAME_IN_OBS_INPUT" \ + outvarname_fieldname_in_fcst_input="FIELDNAME_IN_FCST_INPUT" \ + outvarname_fieldname_in_MET_output="FIELDNAME_IN_MET_OUTPUT" \ + outvarname_fieldname_in_MET_filedir_names="FIELDNAME_IN_MET_FILEDIR_NAMES" +# +#----------------------------------------------------------------------- +# +# Set paths and file templates for input to and output from the MET/ +# METplus tool to be run as well as other file/directory parameters. +# +#----------------------------------------------------------------------- +# +vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +if [ "${RUN_ENVIR}" = "nco" ]; then + slash_cdate_or_null="" +else + slash_cdate_or_null="/${CDATE}" +fi + +if [ "${grid_or_point}" = "grid" ]; then + + OBS_INPUT_FN_TEMPLATE="" + if [ "${field_is_APCPgt01h}" = "TRUE" ]; then + OBS_INPUT_DIR="${vx_output_basedir}/metprd/PcpCombine_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) + else + OBS_INPUT_DIR="${OBS_DIR}" + case "${FIELDNAME_IN_MET_FILEDIR_NAMES}" in + "APCP01h") + OBS_INPUT_FN_TEMPLATE="${OBS_CCPA_APCP01h_FN_TEMPLATE}" + ;; + "REFC") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_REFC_FN_TEMPLATE}" + ;; + "RETOP") + OBS_INPUT_FN_TEMPLATE="${OBS_MRMS_RETOP_FN_TEMPLATE}" + ;; + esac + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_INPUT_FN_TEMPLATE} ) + fi +# Keep for when splitting GenEnsProd from EnsembleStat. +# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" +# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) + FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" + FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + +elif [ "${grid_or_point}" = "point" ]; then + + OBS_INPUT_DIR="${vx_output_basedir}/metprd/Pb2nc_obs" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) +# Keep for when splitting GenEnsProd from EnsembleStat. +# FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/gen_ens_prod" +# FCST_INPUT_FN_TEMPLATE=$( eval echo 'gen_ens_prod_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V.nc' ) + FCST_INPUT_DIR="${vx_output_basedir}${slash_cdate_or_null}/metprd/EnsembleStat" + FCST_INPUT_FN_TEMPLATE=$( eval echo 'ensemble_stat_${VX_FCST_MODEL_NAME}_ADP${FIELDNAME_IN_MET_FILEDIR_NAMES}_${OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc' ) + +fi + +OUTPUT_BASE="${vx_output_basedir}${slash_cdate_or_null}" +OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}_ensprob" +STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}_ensprob" +# +#----------------------------------------------------------------------- +# +# Set the array of forecast hours for which to run the MET/METplus tool. +# +#----------------------------------------------------------------------- +# +set_vx_fhr_list \ + cdate="${CDATE}" \ + fcst_len_hrs="${FCST_LEN_HRS}" \ + field="$VAR" \ + accum_hh="${ACCUM_HH}" \ + base_dir="${OBS_INPUT_DIR}" \ + fn_template="${OBS_INPUT_FN_TEMPLATE}" \ + check_hourly_files="FALSE" \ + outvarname_fhr_list="FHR_LIST" +# +#----------------------------------------------------------------------- +# +# Make sure the MET/METplus output directory(ies) exists. +# +#----------------------------------------------------------------------- +# +mkdir_vrfy -p "${OUTPUT_DIR}" +# +#----------------------------------------------------------------------- +# +# Check for existence of top-level OBS_DIR. +# +#----------------------------------------------------------------------- +# +if [ ! -d "${OBS_DIR}" ]; then + print_err_msg_exit "\ +OBS_DIR does not exist or is not a directory: + OBS_DIR = \"${OBS_DIR}\"" +fi +# +#----------------------------------------------------------------------- +# +# Set variable containing accumulation period without leading zero +# padding. This may be needed in the METplus configuration files. +# +#----------------------------------------------------------------------- +# +ACCUM_NO_PAD=$( printf "%0d" "${ACCUM_HH}" ) +# +#----------------------------------------------------------------------- +# +# Export variables needed in the common METplus configuration file (at +# ${METPLUS_CONF}/common.conf). +# +#----------------------------------------------------------------------- +# +export MET_INSTALL_DIR +export METPLUS_PATH +export MET_BIN_EXEC +export METPLUS_CONF +export LOGDIR +# +#----------------------------------------------------------------------- +# +# Do not run METplus if there isn't at least one valid forecast hour for +# which to run it. +# +#----------------------------------------------------------------------- +# +if [ -z "${FHR_LIST}" ]; then + print_err_msg_exit "\ +The list of forecast hours for which to run METplus is empty: + FHR_LIST = [${FHR_LIST}]" +fi +# +#----------------------------------------------------------------------- +# +# Set the names of the template METplus configuration file, the METplus +# configuration file generated from this template, and the METplus log +# file. +# +#----------------------------------------------------------------------- +# +# First, set the base file names. +# +if [ "${field_is_APCPgt01h}" = "TRUE" ]; then +# Haven't combined the METplus conf jinja template files for APCP > 01h +# for probabilistic ensemble vx tasks yet... +# metplus_config_tmpl_fn="APCPgt01h" + metplus_config_tmpl_fn="${FIELDNAME_IN_MET_FILEDIR_NAMES}" +else + metplus_config_tmpl_fn="${FIELDNAME_IN_MET_FILEDIR_NAMES}" +fi +metplus_config_tmpl_fn="${metplus_tool_name}_ensprob_${metplus_config_tmpl_fn}" +metplus_config_fn="${metplus_tool_name}_ensprob_${FIELDNAME_IN_MET_FILEDIR_NAMES}" +metplus_log_fn="${metplus_config_fn}" +# +# Add prefixes and suffixes (extensions) to the base file names. +# +metplus_config_tmpl_fn="${metplus_config_tmpl_fn}.conf" +metplus_config_fn="${metplus_config_fn}.conf" +metplus_log_fn="metplus.log.${metplus_log_fn}" +# +#----------------------------------------------------------------------- +# +# Generate the METplus configuration file from its jinja template. +# +#----------------------------------------------------------------------- +# +# Set the full paths to the jinja template METplus configuration file +# (which already exists) and the METplus configuration file that will be +# generated from it. +# +metplus_config_tmpl_fp="${METPLUS_CONF}/${metplus_config_tmpl_fn}" +metplus_config_fp="${OUTPUT_DIR}/${metplus_config_fn}" +# +# Define variables that appear in the jinja template. +# +settings="\ +# +# Date and forecast hour information. +# + 'cdate': '$CDATE' + 'fhr_list': '${FHR_LIST}' +# +# Input and output directory/file information. +# + 'metplus_config_fn': '${metplus_config_fn:-}' + 'metplus_log_fn': '${metplus_log_fn:-}' + 'obs_input_dir': '${OBS_INPUT_DIR:-}' + 'obs_input_fn_template': '${OBS_INPUT_FN_TEMPLATE:-}' + 'fcst_input_dir': '${FCST_INPUT_DIR:-}' + 'fcst_input_fn_template': '${FCST_INPUT_FN_TEMPLATE:-}' + 'output_base': '${OUTPUT_BASE}' + 'output_dir': '${OUTPUT_DIR}' + 'output_fn_template': '${OUTPUT_FN_TEMPLATE:-}' + 'staging_dir': '${STAGING_DIR}' + 'vx_fcst_model_name': '${VX_FCST_MODEL_NAME}' +# +# Ensemble and member-specific information. +# + 'num_ens_members': '${NUM_ENS_MEMBERS}' + 'time_lag': '${time_lag:-}' +# +# Field information. +# + 'fieldname_in_obs_input': '${FIELDNAME_IN_OBS_INPUT}' + 'fieldname_in_fcst_input': '${FIELDNAME_IN_FCST_INPUT}' + 'fieldname_in_met_output': '${FIELDNAME_IN_MET_OUTPUT}' + 'fieldname_in_met_filedir_names': '${FIELDNAME_IN_MET_FILEDIR_NAMES}' + 'obtype': '${OBTYPE}' + 'accum_hh': '${ACCUM_HH:-}' + 'accum_no_pad': '${ACCUM_NO_PAD:-}' + 'field_thresholds': '${FIELD_THRESHOLDS:-}' +" +# +# Call the python script to generate the METplus configuration file from +# the jinja template. +# +$USHdir/fill_jinja_template.py -q \ + -u "${settings}" \ + -t ${metplus_config_tmpl_fp} \ + -o ${metplus_config_fp} || \ +print_err_msg_exit "\ +Call to python script fill_jinja_template.py to generate a METplus +configuration file from a jinja template failed. Parameters passed +to this script are: + Full path to template METplus configuration file: + metplus_config_tmpl_fp = \"${metplus_config_tmpl_fp}\" + Full path to output METplus configuration file: + metplus_config_fp = \"${metplus_config_fp}\" + Jinja settings specified on command line: + settings = +$settings" +# +#----------------------------------------------------------------------- +# +# Call METplus. +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Calling METplus to run MET's ${met_tool_name} tool for field(s): ${FIELDNAME_IN_MET_FILEDIR_NAMES}" +${METPLUS_PATH}/ush/run_metplus.py \ + -c ${METPLUS_CONF}/common.conf \ + -c ${metplus_config_fp} || \ +print_err_msg_exit " +Call to METplus failed with return code: $? +METplus configuration file used is: + metplus_config_fp = \"${metplus_config_fp}\"" +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +METplus ${metplus_tool_name} tool completed successfully. + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_gridstat_vx.sh b/scripts/exregional_run_met_gridstat_vx.sh deleted file mode 100755 index af46454b92..0000000000 --- a/scripts/exregional_run_met_gridstat_vx.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_gridstat|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for grid-stat on -the UPP output files by initialization time for all forecast hours. -========================================================================" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh - -fhr_last=`echo ${FHR} | awk '{ print $NF }'` -export fhr_last - -fhr_list=`echo ${FHR} | $SED "s/ /,/g"` -export fhr_list - -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMIN - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - export INPUT_BASE=$( eval echo ${VX_FCST_INPUT_DIR} ) - export OUTPUT_BASE=${VX_OUTPUT_BASEDIR}/${CDATE}/mem${ENSMEM_INDX} - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# -if [ ${VAR} == "APCP" ]; then - LOG_SUFFIX=GridStat_${VAR}${ACCUM_HH}h_mem${ENSMEM_INDX}_${CDATE} -else - LOG_SUFFIX=GridStat_${VAR}_mem${ENSMEM_INDX}_${CDATE} -fi - -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." - exit -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML -# -#----------------------------------------------------------------------- -# -export EXPTDIR -export LOG_SUFFIX -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME - -# -#----------------------------------------------------------------------- -# -# Run METplus -# -#----------------------------------------------------------------------- -# -if [ ${VAR} == "APCP" ]; then - export acc="${ACCUM_HH}h" # for stats output prefix in GridStatConfig - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/GridStat_${VAR}${acc}.conf -else - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/GridStat_${VAR}.conf -fi - -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus grid-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_gridstat_vx_ensmean.sh b/scripts/exregional_run_met_gridstat_vx_ensmean.sh deleted file mode 100755 index eab1f3a4e1..0000000000 --- a/scripts/exregional_run_met_gridstat_vx_ensmean.sh +++ /dev/null @@ -1,191 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_ensgrid_mean|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for grid-stat on -the UPP output files by initialization time for all forecast hours for -gridded data. -========================================================================" - -#----------------------------------------------------------------------- -# -# Begin grid-to-grid vx on ensemble output. -# -#----------------------------------------------------------------------- -# -print_info_msg "$VERBOSE" "Starting grid-stat verification" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh - -fhr_last=`echo ${FHR} | awk '{ print $NF }'` -export fhr_last - -fhr_list=`echo ${FHR} | $SED "s/ /,/g"` -export fhr_list - -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMOUT/metout/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - export INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$EXPTDIR - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# - -if [ ${VAR} == "APCP" ]; then - LOG_SUFFIX=GridStat_ensmean_${VAR}${ACCUM_HH}h_${CDATE} -else - LOG_SUFFIX=GridStat_ensmean_${VAR}_${CDATE} -fi - -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML -# -#----------------------------------------------------------------------- -# -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export LOG_SUFFIX - -# -#----------------------------------------------------------------------- -# -# Run METplus -# -#----------------------------------------------------------------------- -# -if [ ${VAR} == "APCP" ]; then - export acc="${ACCUM_HH}h" - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/GridStat_ensmean_${VAR}${acc}.conf -else - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/GridStat_ensmean_${VAR}.conf -fi - -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus grid-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_gridstat_vx_ensprob.sh b/scripts/exregional_run_met_gridstat_vx_ensprob.sh deleted file mode 100755 index 9450ae1195..0000000000 --- a/scripts/exregional_run_met_gridstat_vx_ensprob.sh +++ /dev/null @@ -1,191 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_ensgrid_prob|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for grid-stat on -the UPP output files by initialization time for all forecast hours for -gridded data. -========================================================================" - -#----------------------------------------------------------------------- -# -# Begin grid-to-grid vx on ensemble output. -# -#----------------------------------------------------------------------- -# -print_info_msg "$VERBOSE" "Starting grid-stat verification" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh - -fhr_last=`echo ${FHR} | awk '{ print $NF }'` -export fhr_last - -fhr_list=`echo ${FHR} | $SED "s/ /,/g"` -export fhr_list - -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMOUT/metout/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - export INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$EXPTDIR - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# - -if [ ${VAR} == "APCP" ]; then - LOG_SUFFIX=GridStat_ensprob_${VAR}${ACCUM_HH}h_${CDATE} -else - LOG_SUFFIX=GridStat_ensprob_${VAR}_${CDATE} -fi - -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML -# -#----------------------------------------------------------------------- -# -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export LOG_SUFFIX - -# -#----------------------------------------------------------------------- -# -# Run METplus -# -#----------------------------------------------------------------------- -# -if [ ${VAR} == "APCP" ]; then - export acc="${ACCUM_HH}h" - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/GridStat_ensprob_${VAR}${acc}.conf -else - ${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/GridStat_ensprob_${VAR}.conf -fi - -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus grid-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_pb2nc_obs.sh b/scripts/exregional_run_met_pb2nc_obs.sh index 19e2072879..528e7743dc 100755 --- a/scripts/exregional_run_met_pb2nc_obs.sh +++ b/scripts/exregional_run_met_pb2nc_obs.sh @@ -16,6 +16,7 @@ source_config_for_task "task_run_met_pb2nc_obs" ${GLOBAL_VAR_DEFNS_FP} # #----------------------------------------------------------------------- # +. $USHdir/get_met_metplus_tool_name.sh . $USHdir/set_vx_params.sh . $USHdir/set_vx_fhr_list.sh # @@ -30,7 +31,7 @@ source_config_for_task "task_run_met_pb2nc_obs" ${GLOBAL_VAR_DEFNS_FP} # #----------------------------------------------------------------------- # -# Get the full path to the file in which this script/function is located +# Get the full path to the file in which this script/function is located # (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in # which the file is located (scrfunc_dir). # @@ -42,15 +43,15 @@ scrfunc_dir=$( dirname "${scrfunc_fp}" ) # #----------------------------------------------------------------------- # -# Set the name of the MET/METplus tool this task will call. (Note: "sc" -# is for "snake case", i.e. using underscores as separators, and "pc" is -# for "Pascal case", i.e. no separators but first letter of each word -# capitalized.) +# Get the name of the MET/METplus tool in different formats that may be +# needed from the global variable MET_TOOL. # #----------------------------------------------------------------------- # -met_tool_sc="pb2nc" -met_tool_pc="Pb2nc" +get_met_metplus_tool_name \ + generic_tool_name="${MET_TOOL}" \ + outvarname_met_tool_name="met_tool_name" \ + outvarname_metplus_tool_name="metplus_tool_name" # #----------------------------------------------------------------------- # @@ -63,7 +64,7 @@ print_info_msg " Entering script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" -This is the ex-script for the task that runs the METplus tool ${met_tool_pc} +This is the ex-script for the task that runs the METplus tool ${metplus_tool_name} to convert NDAS prep buffer observation files to NetCDF format. ========================================================================" # @@ -106,13 +107,25 @@ set_vx_params \ # #----------------------------------------------------------------------- # +vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +if [ "${RUN_ENVIR}" = "nco" ]; then + if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then + ENSMEM=$( echo ${SLASH_ENSMEM_SUBDIR_OR_NULL} | cut -d"/" -f2 ) + DOT_ENSMEM_OR_NULL=".$ENSMEM" + else + DOT_ENSMEM_OR_NULL="" + fi +else + DOT_ENSMEM_OR_NULL="" +fi + OBS_INPUT_DIR="${OBS_DIR}" OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_TEMPLATE} ) -OUTPUT_BASE="${VX_OUTPUT_BASEDIR}" -OUTPUT_DIR="${OUTPUT_BASE}/metprd/${met_tool_pc}_obs" +OUTPUT_BASE="${vx_output_basedir}" +OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}_obs" OUTPUT_FN_TEMPLATE="${OBS_INPUT_FN_TEMPLATE}.nc" -STAGING_DIR="${OUTPUT_BASE}/stage/${met_tool_pc}_obs" +STAGING_DIR="${OUTPUT_BASE}/stage/${metplus_tool_name}_obs" # #----------------------------------------------------------------------- # @@ -186,16 +199,25 @@ fi # # First, set the base file names. # -metplus_config_tmpl_fn="${met_tool_pc}_obs" +metplus_config_tmpl_fn="${metplus_tool_name}_obs" # -# If operating on observation files, # Note that we append the cycle date to the name of the configuration # file because we are considering only observations when using Pb2NC, so # the output files from METplus are not placed under cycle directories. # Thus, another method is necessary to associate the configuration file # with the cycle for which it is used. # -metplus_config_fn="${metplus_config_tmpl_fn}_$CDATE" +# Note also that if considering an ensemble forecast, we include the +# ensemble member name to the config file name. This is necessary in +# NCO mode (i.e. when RUN_ENVIR = "nco") because in that mode, the +# directory tree under which the configuration file is placed does not +# contain member information, so the file names must include it. It is +# not necessary in community mode (i.e. when RUN_ENVIR = "community") +# because in that case, the directory structure does contain the member +# information, but we still include that info in the file name so that +# the behavior in the two modes is as similar as possible. +# +metplus_config_fn="${metplus_config_tmpl_fn}_${CDATE}" metplus_log_fn="${metplus_config_fn}" # # Add prefixes and suffixes (extensions) to the base file names. @@ -272,7 +294,7 @@ to this script are: metplus_config_tmpl_fp = \"${metplus_config_tmpl_fp}\" Full path to output METplus configuration file: metplus_config_fp = \"${metplus_config_fp}\" - Namelist settings specified on command line: + Jinja settings specified on command line: settings = $settings" # @@ -283,7 +305,7 @@ $settings" #----------------------------------------------------------------------- # print_info_msg "$VERBOSE" " -Calling METplus to run MET's ${met_tool_sc} tool on observations of type: ${OBTYPE}" +Calling METplus to run MET's ${met_tool_name} tool on observations of type: ${OBTYPE}" ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${metplus_config_fp} || \ @@ -300,7 +322,7 @@ METplus configuration file used is: # print_info_msg " ======================================================================== -METplus ${met_tool_pc} tool completed successfully. +METplus ${metplus_tool_name} tool completed successfully. Exiting script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" diff --git a/scripts/exregional_run_met_pcpcombine.sh b/scripts/exregional_run_met_pcpcombine.sh index cb2a7b28f3..0ff30d270a 100755 --- a/scripts/exregional_run_met_pcpcombine.sh +++ b/scripts/exregional_run_met_pcpcombine.sh @@ -16,6 +16,7 @@ source_config_for_task "task_run_met_pcpcombine|task_run_post" ${GLOBAL_VAR_DEFN # #----------------------------------------------------------------------- # +. $USHdir/get_met_metplus_tool_name.sh . $USHdir/set_vx_params.sh . $USHdir/set_vx_fhr_list.sh # @@ -30,7 +31,7 @@ source_config_for_task "task_run_met_pcpcombine|task_run_post" ${GLOBAL_VAR_DEFN # #----------------------------------------------------------------------- # -# Get the full path to the file in which this script/function is located +# Get the full path to the file in which this script/function is located # (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in # which the file is located (scrfunc_dir). # @@ -42,15 +43,15 @@ scrfunc_dir=$( dirname "${scrfunc_fp}" ) # #----------------------------------------------------------------------- # -# Set the name of the MET/METplus tool this task will call. (Note: "sc" -# is for "snake case", i.e. using underscores as separators, and "pc" is -# for "Pascal case", i.e. no separators but first letter of each word -# capitalized.) +# Get the name of the MET/METplus tool in different formats that may be +# needed from the global variable MET_TOOL. # #----------------------------------------------------------------------- # -met_tool_sc="pcp_combine" -met_tool_pc="PcpCombine" +get_met_metplus_tool_name \ + generic_tool_name="${MET_TOOL}" \ + outvarname_met_tool_name="met_tool_name" \ + outvarname_metplus_tool_name="metplus_tool_name" # #----------------------------------------------------------------------- # @@ -63,8 +64,8 @@ print_info_msg " Entering script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" -This is the ex-script for the task that runs the METplus ${met_tool_pc} -that combines hourly accumulated precipitation (APCP) data to generate +This is the ex-script for the task that runs the METplus ${metplus_tool_name} +tool to combine hourly accumulated precipitation (APCP) data to generate files containing multi-hour accumulated precipitation (e.g. 3-hour, 6- hour, 24-hour). The input files can come from either observations or a forecast. @@ -112,7 +113,7 @@ set_vx_params \ # was initialized 1 hour before the current CDATE, while a time lag of 0 # means the current member was initialized on CDATE. # -# Note that if we're not running ensemble verification (i.e. if we're +# Note that if we're not running ensemble verification (i.e. if we're # running verification for a single deterministic forecast), the time # lag gets set to 0. # @@ -121,7 +122,7 @@ set_vx_params \ time_lag="0" if [ "${obs_or_fcst}" = "fcst" ]; then time_lag=$(( (${MEM_INDX_OR_NULL:+${ENS_TIME_LAG_HRS[${MEM_INDX_OR_NULL}-1]}}+0) )) -# Convert to seconds. We do this as a separate step using bc because +# Convert to seconds. We do this as a separate step using bc because # bash's $((...)) arithmetic operator can't handle floats well. time_lag=$( bc -l <<< "${time_lag}*${SECS_PER_HOUR}" ) fi @@ -133,6 +134,19 @@ fi # #----------------------------------------------------------------------- # +vx_fcst_input_basedir=$( eval echo "${VX_FCST_INPUT_BASEDIR}" ) +vx_output_basedir=$( eval echo "${VX_OUTPUT_BASEDIR}" ) +if [ "${RUN_ENVIR}" = "nco" ]; then + if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then + ENSMEM=$( echo ${SLASH_ENSMEM_SUBDIR_OR_NULL} | cut -d"/" -f2 ) + DOT_ENSMEM_OR_NULL=".$ENSMEM" + else + DOT_ENSMEM_OR_NULL="" + fi +else + DOT_ENSMEM_OR_NULL="" +fi + OBS_INPUT_DIR="" OBS_INPUT_FN_TEMPLATE="" FCST_INPUT_DIR="" @@ -140,21 +154,21 @@ FCST_INPUT_FN_TEMPLATE="" if [ "${obs_or_fcst}" = "obs" ]; then - OBS_INPUT_DIR="${OBS_DIR}" - OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCP01h_FN_TEMPLATE} ) + OBS_INPUT_DIR="${OBS_DIR}" + OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCP01h_FN_TEMPLATE} ) - OUTPUT_BASE="${VX_OUTPUT_BASEDIR}" - OUTPUT_DIR="${OUTPUT_BASE}/metprd/${met_tool_pc}_obs" - OUTPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) - STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" + OUTPUT_BASE="${vx_output_basedir}" + OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}_obs" + OUTPUT_FN_TEMPLATE=$( eval echo ${OBS_CCPA_APCPgt01h_FN_TEMPLATE} ) + STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" elif [ "${obs_or_fcst}" = "fcst" ]; then - FCST_INPUT_DIR="$( eval echo ${VX_FCST_INPUT_DIR} )" - FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_FN_TEMPLATE} ) + FCST_INPUT_DIR="${vx_fcst_input_basedir}" + FCST_INPUT_FN_TEMPLATE=$( eval echo ${FCST_SUBDIR_TEMPLATE:+${FCST_SUBDIR_TEMPLATE}/}${FCST_FN_TEMPLATE} ) - OUTPUT_BASE="${VX_OUTPUT_BASEDIR}/${CDATE}/mem${ENSMEM_INDX}" - OUTPUT_DIR="${OUTPUT_BASE}/metprd/${met_tool_pc}_fcst" + OUTPUT_BASE="${vx_output_basedir}/${CDATE}/mem${ENSMEM_INDX}" + OUTPUT_DIR="${OUTPUT_BASE}/metprd/${metplus_tool_name}_fcst" OUTPUT_FN_TEMPLATE=$( eval echo ${FCST_FN_METPROC_TEMPLATE} ) STAGING_DIR="${OUTPUT_BASE}/stage/${FIELDNAME_IN_MET_FILEDIR_NAMES}" @@ -238,11 +252,16 @@ fi # #----------------------------------------------------------------------- # +uscore_ensmem_name_or_null="" +if [ "${obs_or_fcst}" = "fcst" ]; then + uscore_ensmem_name_or_null="_mem${ENSMEM_INDX}" +fi +# # First, set the base file names. # -metplus_config_tmpl_fn="${met_tool_pc}_${obs_or_fcst}" -metplus_config_fn="${metplus_config_tmpl_fn}_${FIELDNAME_IN_MET_FILEDIR_NAMES}" -metplus_log_fn="${metplus_config_fn}_mem${ENSMEM_INDX}_$CDATE" +metplus_config_tmpl_fn="${metplus_tool_name}_${obs_or_fcst}" +metplus_config_fn="${metplus_config_tmpl_fn}_${FIELDNAME_IN_MET_FILEDIR_NAMES}${uscore_ensmem_name_or_null}" +metplus_log_fn="${metplus_config_fn}_$CDATE" # # If operating on observation files, append the cycle date to the name # of the configuration file because in this case, the output files from @@ -328,7 +347,7 @@ to this script are: metplus_config_tmpl_fp = \"${metplus_config_tmpl_fp}\" Full path to output METplus configuration file: metplus_config_fp = \"${metplus_config_fp}\" - Namelist settings specified on command line: + Jinja settings specified on command line: settings = $settings" # @@ -339,7 +358,7 @@ $settings" #----------------------------------------------------------------------- # print_info_msg "$VERBOSE" " -Calling METplus to run MET's ${met_tool_sc} tool for field(s): ${FIELDNAME_IN_MET_FILEDIR_NAMES}" +Calling METplus to run MET's ${met_tool_name} tool for field(s): ${FIELDNAME_IN_MET_FILEDIR_NAMES}" ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${metplus_config_fp} || \ @@ -356,7 +375,7 @@ METplus configuration file used is: # print_info_msg " ======================================================================== -METplus ${met_tool_pc} tool completed successfully. +METplus ${metplus_tool_name} tool completed successfully. Exiting script: \"${scrfunc_fn}\" In directory: \"${scrfunc_dir}\" diff --git a/scripts/exregional_run_met_pointstat_vx.sh b/scripts/exregional_run_met_pointstat_vx.sh deleted file mode 100755 index 5db4511da0..0000000000 --- a/scripts/exregional_run_met_pointstat_vx.sh +++ /dev/null @@ -1,185 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_pointstat|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Source files defining auxiliary functions for verification. -# -#----------------------------------------------------------------------- -# -. $USHdir/set_vx_params.sh -. $USHdir/set_vx_fhr_list.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for point-stat on -the UPP output files by initialization time for all forecast hours. -========================================================================" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMIN - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - export INPUT_BASE=$( eval echo ${VX_FCST_INPUT_DIR} ) - export OUTPUT_BASE=${VX_OUTPUT_BASEDIR}/${CDATE}/mem${ENSMEM_INDX} - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create INPUT_BASE to read into METplus conf files. -# -#----------------------------------------------------------------------- -# -LOG_SUFFIX="PointStat" - -# -#----------------------------------------------------------------------- -# -# Set the array of forecast hours for which to run the MET/METplus tool. -# -#----------------------------------------------------------------------- -# -export OBS_INPUT_DIR="${VX_OUTPUT_BASEDIR}/metprd/Pb2nc_obs" -OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) - -set_vx_fhr_list \ - cdate="${CDATE}" \ - fcst_len_hrs="${FCST_LEN_HRS}" \ - field="$VAR" \ - accum_hh="${ACCUM_HH:-}" \ - base_dir="${OBS_INPUT_DIR}" \ - fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ - outvarname_fhr_list="FHR_LIST" -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML and run METplus -# -#----------------------------------------------------------------------- -# -export LOG_SUFFIX -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) -export FHR_LIST - -${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/PointStat_${VAR}.conf -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus point-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_pointstat_vx_ensmean.sh b/scripts/exregional_run_met_pointstat_vx_ensmean.sh deleted file mode 100755 index 07e8965d16..0000000000 --- a/scripts/exregional_run_met_pointstat_vx_ensmean.sh +++ /dev/null @@ -1,193 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_enspoint_mean|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Source files defining auxiliary functions for verification. -# -#----------------------------------------------------------------------- -# -. $USHdir/set_vx_params.sh -. $USHdir/set_vx_fhr_list.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for point-stat on -the UPP output files by initialization time for all forecast hours. -========================================================================" - -# -#----------------------------------------------------------------------- -# -# Begin grid-to-point vx on ensemble output. -# -#----------------------------------------------------------------------- -# -print_info_msg "$VERBOSE" "Starting point-stat verification" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMOUT/metout/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - export INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$EXPTDIR - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# -LOG_SUFFIX="PointStat" - -# -#----------------------------------------------------------------------- -# -# Set the array of forecast hours for which to run the MET/METplus tool. -# -#----------------------------------------------------------------------- -# -export OBS_INPUT_DIR="${VX_OUTPUT_BASEDIR}/metprd/Pb2nc_obs" -OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) - -set_vx_fhr_list \ - cdate="${CDATE}" \ - fcst_len_hrs="${FCST_LEN_HRS}" \ - field="$VAR" \ - accum_hh="${ACCUM_HH:-}" \ - base_dir="${OBS_INPUT_DIR}" \ - fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ - outvarname_fhr_list="FHR_LIST" -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML and run METplus -# -#----------------------------------------------------------------------- -# -export LOG_SUFFIX -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export FHR_LIST - -${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/PointStat_ensmean_${VAR}.conf -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus ensemble-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/scripts/exregional_run_met_pointstat_vx_ensprob.sh b/scripts/exregional_run_met_pointstat_vx_ensprob.sh deleted file mode 100755 index b618cfe8f8..0000000000 --- a/scripts/exregional_run_met_pointstat_vx_ensprob.sh +++ /dev/null @@ -1,193 +0,0 @@ -#!/bin/bash - -# -#----------------------------------------------------------------------- -# -# Source the variable definitions file and the bash utility functions. -# -#----------------------------------------------------------------------- -# -. $USHdir/source_util_funcs.sh -source_config_for_task "task_run_vx_enspoint_prob|task_run_post" ${GLOBAL_VAR_DEFNS_FP} -# -#----------------------------------------------------------------------- -# -# Source files defining auxiliary functions for verification. -# -#----------------------------------------------------------------------- -# -. $USHdir/set_vx_params.sh -. $USHdir/set_vx_fhr_list.sh -# -#----------------------------------------------------------------------- -# -# Save current shell options (in a global array). Then set new options -# for this script/function. -# -#----------------------------------------------------------------------- -# -{ save_shell_opts; . $USHdir/preamble.sh; } > /dev/null 2>&1 -# -#----------------------------------------------------------------------- -# -# Get the full path to the file in which this script/function is located -# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in -# which the file is located (scrfunc_dir). -# -#----------------------------------------------------------------------- -# -scrfunc_fp=$( $READLINK -f "${BASH_SOURCE[0]}" ) -scrfunc_fn=$( basename "${scrfunc_fp}" ) -scrfunc_dir=$( dirname "${scrfunc_fp}" ) -# -#----------------------------------------------------------------------- -# -# Print message indicating entry into script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -Entering script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" - -This is the ex-script for the task that runs METplus for point-stat on -the UPP output files by initialization time for all forecast hours. -========================================================================" - -# -#----------------------------------------------------------------------- -# -# Begin grid-to-point vx on ensemble output. -# -#----------------------------------------------------------------------- -# -print_info_msg "$VERBOSE" "Starting point-stat verification" - -# -#----------------------------------------------------------------------- -# -# Get the cycle date and hour (in formats of yyyymmdd and hh, respect- -# ively) from CDATE. Also read in FHR and create a comma-separated list -# for METplus to run over. -# -#----------------------------------------------------------------------- -# -yyyymmdd=${PDY} -hh=${cyc} -export CDATE -export hh -# -#----------------------------------------------------------------------- -# -# Pick a directory structure for METplus output files -# -#----------------------------------------------------------------------- -# -if [ $RUN_ENVIR = "nco" ]; then - export INPUT_BASE=$COMOUT/metout/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$COMOUT/metout - export MEM_BASE=$OUTPUT_BASE - export LOG_DIR=$LOGDIR - - export POSTPRD= - export MEM_STAR= - export MEM_CUSTOM= - export DOT_MEM_CUSTOM=".{custom?fmt=%s}" -else - export INPUT_BASE=${EXPTDIR}/${CDATE}/metprd/EnsembleStat - export OUTPUT_BASE=$EXPTDIR - export MEM_BASE=$EXPTDIR/$CDATE - export LOG_DIR=${EXPTDIR}/log - - export POSTPRD="postprd/" - export MEM_STAR="mem*/" - export MEM_CUSTOM="{custom?fmt=%s}/" - export DOT_MEM_CUSTOM= -fi -export DOT_ENSMEM=${dot_ensmem} - -# -#----------------------------------------------------------------------- -# -# Create INPUT_BASE and LOG_SUFFIX to read into METplus conf files. -# -#----------------------------------------------------------------------- -# -LOG_SUFFIX="PointStat" - -# -#----------------------------------------------------------------------- -# -# Set the array of forecast hours for which to run the MET/METplus tool. -# -#----------------------------------------------------------------------- -# -export OBS_INPUT_DIR="${VX_OUTPUT_BASEDIR}/metprd/Pb2nc_obs" -OBS_INPUT_FN_TEMPLATE=$( eval echo ${OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE} ) - -set_vx_fhr_list \ - cdate="${CDATE}" \ - fcst_len_hrs="${FCST_LEN_HRS}" \ - field="$VAR" \ - accum_hh="${ACCUM_HH:-}" \ - base_dir="${OBS_INPUT_DIR}" \ - fn_template="${OBS_INPUT_FN_TEMPLATE}" \ - check_hourly_files="FALSE" \ - outvarname_fhr_list="FHR_LIST" -# -#----------------------------------------------------------------------- -# -# Check for existence of top-level OBS_DIR -# -#----------------------------------------------------------------------- -# -if [[ ! -d "$OBS_DIR" ]]; then - print_err_msg_exit "\ - Exiting: OBS_DIR does not exist." -fi - -# -#----------------------------------------------------------------------- -# -# Export some environment variables passed in by the XML and run METplus -# -#----------------------------------------------------------------------- -# -export LOG_SUFFIX -export MET_INSTALL_DIR -export MET_BIN_EXEC -export METPLUS_PATH -export METPLUS_CONF -export MET_CONFIG -export VX_FCST_MODEL_NAME -export NET -export POST_OUTPUT_DOMAIN_NAME -export FHR_LIST - -${METPLUS_PATH}/ush/run_metplus.py \ - -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/PointStat_ensprob_${VAR}.conf -# -#----------------------------------------------------------------------- -# -# Print message indicating successful completion of script. -# -#----------------------------------------------------------------------- -# -print_info_msg " -======================================================================== -METplus ensemble-stat completed successfully. - -Exiting script: \"${scrfunc_fn}\" -In directory: \"${scrfunc_dir}\" -========================================================================" -# -#----------------------------------------------------------------------- -# -# Restore the shell options saved at the beginning of this script/func- -# tion. -# -#----------------------------------------------------------------------- -# -{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/tests/WE2E/monitor_jobs.py b/tests/WE2E/monitor_jobs.py index c5e9c78d34..1a19951936 100755 --- a/tests/WE2E/monitor_jobs.py +++ b/tests/WE2E/monitor_jobs.py @@ -80,6 +80,19 @@ def monitor_jobs(expts_dict: dict, monitor_file: str = '', procs: int = 1, debug running_expts[expt]["walltime"] = str(walltime) logging.info(f'Experiment {expt} is {running_expts[expt]["status"]}') + + # If failures, check how many experiments were successful + if debug: + if running_expts[expt]["status"] != "COMPLETE": + i=j=0 + for task in running_expts[expt]: + # Skip non-task entries + if task in ["expt_dir","status","start_time","walltime"]: + continue + j+=1 + if running_expts[expt][task]["status"] == "SUCCEEDED": + i+=1 + logging.debug(f'{i} of {j} tasks were successful') logging.info(f'{walltimestr}will no longer monitor.') running_expts.pop(expt) continue diff --git a/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml b/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml new file mode 100644 index 0000000000..0c545761ab --- /dev/null +++ b/tests/WE2E/test_configs/verification/config.MET_ensemble_verification_only_vx.yaml @@ -0,0 +1,66 @@ +metadata: + description: |- + This test is to ensure that the workflow running in community mode + can successfully run the MET ensemble verification tasks but using + staged observation and forecast files (i.e. with other tasks such as + pre-processing, forecast, and post-processing deactivated). + +user: + RUN_ENVIR: community + +workflow: + PREDEF_GRID_NAME: RRFS_CONUS_25km + DATE_FIRST_CYCL: '2019061500' + DATE_LAST_CYCL: '2019061500' + FCST_LEN_HRS: 6 + PREEXISTING_DIR_METHOD: rename + +rocoto: + tasks: + taskgroups: '{{ ["parm/wflow/verify.yaml", "parm/wflow/verify_ensgrid.yaml"]|include }}' + task_get_obs_ccpa: + task_get_obs_mrms: + task_get_obs_ndas: + metatask_vx_ens_member: + metatask_GridStat_MRMS_mem#mem#: + task_run_MET_GridStat_vx_#VAR#_mem#mem#: + dependency: + metatask_PointStat_mem#mem#: + task_run_MET_PointStat_vx_#VAR#_mem#mem#: + dependency: + and: + or_do_post: + or_get_obs: + + metatask_GridStat_APCP_acc: + metatask_vx_ens_member_acc: + task_run_MET_PcpCombine_fcst_APCP#ACCUM_HR#h_mem#mem#: + dependency: + metatask_EnsembleStat_acc: + task_run_MET_GridStat_vx_ensprob_#VAR#: + dependency: + task_run_MET_EnsembleStat_vx_APCP#ACCUM_HR#h: + dependency: + and: + metataskdep: + attrs: + metatask: GridStat_APCP_acc + metatask_EnsembleStat: + task_run_MET_EnsembleStat_vx_#VAR#: + dependency: + metatask_EnsembleStat_point: + task_run_MET_EnsembleStat_vx_#VAR#: + dependency: + and: + metataskdep: + taskdep: + attrs: + task: run_MET_Pb2nc_obs + +global: + DO_ENSEMBLE: true + NUM_ENS_MEMBERS: 2 + +verification: + VX_FCST_MODEL_NAME: FV3_GFS_v15p2_CONUS_25km + VX_FCST_INPUT_BASEDIR: '{{ platform.get("TEST_VX_FCST_INPUT_BASEDIR") }}' diff --git a/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml b/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml index 44fea42c25..57d1ca3d53 100644 --- a/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml +++ b/tests/WE2E/test_configs/verification/config.MET_verification_only_vx.yaml @@ -32,6 +32,9 @@ rocoto: metatask_PointStat_mem#mem#: task_run_MET_PointStat_vx_#VAR#_mem#mem#: dependency: + and: + or_do_post: + or_get_obs: metatask_GridStat_APCP_acc: metatask_vx_ens_member_acc: task_run_MET_PcpCombine_fcst_APCP#ACCUM_HR#h_mem#mem#: @@ -39,5 +42,5 @@ rocoto: verification: VX_FCST_MODEL_NAME: FV3_GFS_v15p2_CONUS_25km - VX_FCST_INPUT_DIR: '{{ platform.get("TEST_VX_FCST_INPUT_DIR") }}' + VX_FCST_INPUT_BASEDIR: '{{ platform.get("TEST_VX_FCST_INPUT_BASEDIR") }}' diff --git a/tests/WE2E/utils.py b/tests/WE2E/utils.py index c0a2f5329e..ba862bd855 100755 --- a/tests/WE2E/utils.py +++ b/tests/WE2E/utils.py @@ -349,7 +349,7 @@ def update_expt_status(expt: dict, name: str, refresh: bool = False, debug: bool # are past the first initial iteration of job submissions if not refresh: logging.warning(dedent( - """WARNING:Tasks have not yet been submitted for experiment {name}; + f"""WARNING:Tasks have not yet been submitted for experiment {name}; it could be that your jobs are being throttled at the system level. If you continue to see this message, there may be an error with your diff --git a/ush/config_defaults.yaml b/ush/config_defaults.yaml index fdec9cab6e..e8ad654430 100644 --- a/ush/config_defaults.yaml +++ b/ush/config_defaults.yaml @@ -332,7 +332,6 @@ platform: # #----------------------------------------------------------------------- # - MODEL: "" MET_INSTALL_DIR: "" MET_BIN_EXEC: "" METPLUS_PATH: "" @@ -2318,10 +2317,12 @@ global: #----------------------------- verification: # - # Templates for CCPA observation files. + # Templates for CCPA, MRMS, and NDAS observation files. # OBS_CCPA_APCP01h_FN_TEMPLATE: '{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2' OBS_CCPA_APCPgt01h_FN_TEMPLATE: '${OBS_CCPA_APCP01h_FN_TEMPLATE}_a${ACCUM_HH}h.nc' + OBS_MRMS_REFC_FN_TEMPLATE: '{valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2' + OBS_MRMS_RETOP_FN_TEMPLATE: '{valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2' OBS_NDAS_SFCorUPA_FN_TEMPLATE: 'prepbufr.ndas.{valid?fmt=%Y%m%d%H}' OBS_NDAS_SFCorUPA_FN_METPROC_TEMPLATE: '${OBS_NDAS_SFCorUPA_FN_TEMPLATE}.nc' # @@ -2332,20 +2333,22 @@ verification: # VX_FCST_MODEL_NAME: '{{ nco.NET }}.{{ task_run_post.POST_OUTPUT_DOMAIN_NAME }}' # - # VX_FCST_INPUT_DIR: - # Directory template for the path containing forecast (but not obs) files - # that will be used as input into METplus for verification. + # VX_FCST_INPUT_BASEDIR: + # Template for top-level directory containing forecast (but not obs) + # files that will be used as input into METplus for verification. # # VX_OUTPUT_BASEDIR: - # Top-level directory in which METplus will place its output. + # Template for top-level directory in which METplus will place its + # output. # - VX_FCST_INPUT_DIR: '{{ workflow.EXPTDIR }}/${CDATE}{% if global.DO_ENSEMBLE %}"/mem${ENSMEM_INDX}"{% endif %}/postprd' - VX_OUTPUT_BASEDIR: '{{ workflow.EXPTDIR }}' + VX_FCST_INPUT_BASEDIR: '{% if user.RUN_ENVIR == "nco" %}$COMOUT/../..{% else %}{{ workflow.EXPTDIR }}{% endif %}' + VX_OUTPUT_BASEDIR: '{% if user.RUN_ENVIR == "nco" %}$COMOUT/metout{% else %}{{ workflow.EXPTDIR }}{% endif %}' # - # File name and path templates are used in the verification tasks. + # File name and path templates used in the verification tasks. # - FCST_FN_TEMPLATE: '${NET}.t{init?fmt=%H?shift=-${time_lag}}z.prslev.f{lead?fmt=%HHH?shift=${time_lag}}.${POST_OUTPUT_DOMAIN_NAME}.grib2' - FCST_FN_METPROC_TEMPLATE: '${NET}.t{init?fmt=%H}z.prslev.f{lead?fmt=%HHH}.${POST_OUTPUT_DOMAIN_NAME}_a${ACCUM_HH}h.nc' + FCST_SUBDIR_TEMPLATE: '{% if user.RUN_ENVIR == "nco" %}${NET}.{init?fmt=%Y%m%d?shift=-${time_lag}}/{init?fmt=%H?shift=-${time_lag}}{% else %}{init?fmt=%Y%m%d%H?shift=-${time_lag}}${SLASH_ENSMEM_SUBDIR_OR_NULL}/postprd{% endif %}' + FCST_FN_TEMPLATE: '${NET}.t{init?fmt=%H?shift=-${time_lag}}z{% if user.RUN_ENVIR == "nco" %}${DOT_ENSMEM_OR_NULL}{% endif %}.prslev.f{lead?fmt=%HHH?shift=${time_lag}}.${POST_OUTPUT_DOMAIN_NAME}.grib2' + FCST_FN_METPROC_TEMPLATE: '${NET}.t{init?fmt=%H}z{% if user.RUN_ENVIR == "nco" %}${DOT_ENSMEM_OR_NULL}{% endif %}.prslev.f{lead?fmt=%HHH}.${POST_OUTPUT_DOMAIN_NAME}_a${ACCUM_HH}h.nc' # # For verification tasks that need observational data, this specifies # the maximum number of observation files that may be missing. If more diff --git a/ush/get_met_metplus_tool_name.sh b/ush/get_met_metplus_tool_name.sh new file mode 100644 index 0000000000..9ecadfbcb8 --- /dev/null +++ b/ush/get_met_metplus_tool_name.sh @@ -0,0 +1,124 @@ +# +#----------------------------------------------------------------------- +# +# This file defines a function that uses the given generic name of a MET/ +# METplus tool (generic_tool_name; this is a name that does not contain +# any separators like underscores and that may be in upper or lower case) +# to set its name in MET (met_tool_name) and in METplus (metplus_tool_name). +# Note that the tool name in MET is in "snake case" (i.e. uses underscores +# as separators with all lower case) while that in METplus is in "pascal +# case" (i.e. no separators and with first letter of each word capitalized). +# +#----------------------------------------------------------------------- +# +function get_met_metplus_tool_name() { +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# + { save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Specify the set of valid argument names for this script/function. Then +# process the arguments provided to this script/function (which should +# consist of a set of name-value pairs of the form arg1="value1", etc). +# +#----------------------------------------------------------------------- +# + local valid_args=( \ + "generic_tool_name" \ + "outvarname_met_tool_name" \ + "outvarname_metplus_tool_name" \ + ) + process_args valid_args "$@" +# +#----------------------------------------------------------------------- +# +# For debugging purposes, print out values of arguments passed to this +# script. Note that these will be printed out only if VERBOSE is set to +# TRUE. +# +#----------------------------------------------------------------------- +# + print_input_args "valid_args" +# +#----------------------------------------------------------------------- +# +# Declare local variables. +# +#----------------------------------------------------------------------- +# + local _generic_tool_name_name_ \ + _metplus_tool_name_ +# +#----------------------------------------------------------------------- +# +# Create array containing set of forecast hours for which we will check +# for the existence of corresponding observation or forecast file. +# +#----------------------------------------------------------------------- +# + generic_tool_name=${generic_tool_name,,} + valid_vals_generic_tool_name=( \ + "PB2NC" "PCPCOMBINE" "GRIDSTAT" "POINTSTAT" "ENSEMBLESTAT" \ + "pb2nc" "pcpcombine" "gridstat" "pointstat" "ensemblestat" \ + ) + check_var_valid_value "generic_tool_name" "valid_vals_generic_tool_name" + + case "${generic_tool_name}" in + "pb2nc") + _met_tool_name_="pb2nc" + _metplus_tool_name_="Pb2nc" + ;; + "pcpcombine") + _met_tool_name_="pcp_combine" + _metplus_tool_name_="PcpCombine" + ;; + "gridstat") + _met_tool_name_="grid_stat" + _metplus_tool_name_="GridStat" + ;; + "pointstat") + _met_tool_name_="point_stat" + _metplus_tool_name_="PointStat" + ;; + "ensemblestat") + _met_tool_name_="ensemble_stat" + _metplus_tool_name_="EnsembleStat" + ;; + *) + print_err_msg_exit "\ +Generic name specified for MET/METplus tool (generic_tool_name) is +unupported: + generic_tool_name = \"${generic_tool_name}\"" + ;; + esac +# +#----------------------------------------------------------------------- +# +# Set output variables. +# +#----------------------------------------------------------------------- +# + if [ ! -z "${outvarname_met_tool_name}" ]; then + printf -v ${outvarname_met_tool_name} "%s" "${_met_tool_name_}" + fi + + if [ ! -z "${outvarname_metplus_tool_name}" ]; then + printf -v ${outvarname_metplus_tool_name} "%s" "${_metplus_tool_name_}" + fi +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/function. +# +#----------------------------------------------------------------------- +# + { restore_shell_opts; } > /dev/null 2>&1 + +} diff --git a/ush/machine/hera.yaml b/ush/machine/hera.yaml index 3d87f45acc..472356de94 100644 --- a/ush/machine/hera.yaml +++ b/ush/machine/hera.yaml @@ -28,7 +28,7 @@ platform: TEST_PREGEN_BASEDIR: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/FV3LAM_pregen TEST_ALT_EXTRN_MDL_SYSBASEDIR_ICS: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/dummy_FV3GFS_sys_dir TEST_ALT_EXTRN_MDL_SYSBASEDIR_LBCS: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/dummy_FV3GFS_sys_dir - TEST_VX_FCST_INPUT_DIR: '{{ "/scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/output_data/fcst_" }}{{ "ens" if (global.NUM_ENS_MEMBERS > 0) else "det" }}{{ "/{{workflow.PREDEF_GRID_NAME}}/${CDATE}/postprd" }}{% raw %}{% endraw %}' + TEST_VX_FCST_INPUT_BASEDIR: '{{ "/scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/output_data/fcst_" }}{{ "ens" if (global.NUM_ENS_MEMBERS > 0) else "det" }}{{ "/{{workflow.PREDEF_GRID_NAME}}" }}{% raw %}{% endraw %}' FIXaer: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_aer FIXgsi: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_gsi FIXgsm: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_am @@ -37,8 +37,8 @@ platform: FIXsfc: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/fix/fix_sfc_climo FIXshp: /scratch1/NCEPDEV/nems/role.epic/UFS_SRW_data/develop/NaturalEarth EXTRN_MDL_DATA_STORES: hpss aws nomads - - + + rocoto: tasks: metatask_run_ensemble: @@ -49,7 +49,7 @@ rocoto: nnodes: nodesize: ppn: - + data: obs: RAP_obs: /scratch2/BMC/public/data/grids/rap/obs