From b5c3c3dc42703b7da3d22264dd2df1fe96ed2f1d Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Mon, 8 Jul 2024 22:39:43 +0000 Subject: [PATCH 1/8] initial copy of apps --- .../file/metoffice/Ascii2nc_Aircraft.conf | 15 +++ .../file/metoffice/Ascii2nc_MET.conf | 42 +++++++ .../file/metoffice/Ascii2nc_Radiosonde.conf | 15 +++ .../file/metoffice/Ascii2nc_Satwind.conf | 15 +++ .../file/metoffice/Ascii2nc_Srew.conf | 15 +++ .../file/metoffice/Ascii2nc_Surface.conf | 15 +++ .../file/metoffice/Ascii2nc_SurfaceStn.conf | 15 +++ .../file/metoffice/Ascii2nc_UKSurface.conf | 15 +++ .../file/metoffice/Ascii2nc_UKSurfaceStn.conf | 15 +++ .../file/metoffice/ascii2nc.conf | 115 ++++++++++++++++++ .../file/metoffice/user_system_local.conf | 15 +++ .../file/niwa/ASCII2NC_python_embedding.conf | 87 +++++++++++++ .../file/niwa/python/read_ascii_point.py | 68 +++++++++++ .../opt/rose-app-metoffice.conf | 8 ++ 14 files changed, 455 insertions(+) create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Aircraft.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_MET.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Radiosonde.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Satwind.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Srew.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Surface.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_SurfaceStn.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurface.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurfaceStn.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf create mode 100755 cset-workflow/app/metplus_ascii2nc/file/metoffice/user_system_local.conf create mode 100644 cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf create mode 100755 cset-workflow/app/metplus_ascii2nc/file/niwa/python/read_ascii_point.py create mode 100644 cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Aircraft.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Aircraft.conf new file mode 100644 index 000000000..4405bf354 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Aircraft.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -180M +ASCII2NC_WINDOW_END = 179M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Aircraft_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/Aircraft_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_MET.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_MET.conf new file mode 100644 index 000000000..0b5999d52 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_MET.conf @@ -0,0 +1,42 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Default ascii2nc configuration file +// +//////////////////////////////////////////////////////////////////////////////// + +// +// The parameters listed below are used to summarize the ASCII data read in +// + +// +// Time periods for the summarization +// obs_var (string array) is added and works like grib_code (int array) +// when the obs name is given instead of grib_code +// +${METPLUS_TIME_SUMMARY_DICT} + +// +// Mapping of input little_r report types to output message types +// +message_type_map = [ + { key = "FM-12 SYNOP"; val = "ADPSFC"; }, + { key = "FM-13 SHIP"; val = "SFCSHP"; }, + { key = "FM-15 METAR"; val = "ADPSFC"; }, + { key = "FM-18 BUOY"; val = "SFCSHP"; }, + { key = "FM-281 QSCAT"; val = "ASCATW"; }, + { key = "FM-32 PILOT"; val = "ADPUPA"; }, + { key = "FM-35 TEMP"; val = "ADPUPA"; }, + { key = "FM-88 SATOB"; val = "SATWND"; }, + { key = "FM-97 ACARS"; val = "AIRCFT"; } +]; + +//message_type_group_map = [ +// { key = "SURFACE"; val = "METAR"; } +// ]; +// +// Indicate a version number for the contents of this configuration file. +// The value should generally not be modified. +// +//version = "V10.0"; + +${METPLUS_MET_CONFIG_OVERRIDES} diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Radiosonde.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Radiosonde.conf new file mode 100644 index 000000000..4d0b9aaba --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Radiosonde.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -180M +ASCII2NC_WINDOW_END = 179M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Sonde_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/Sonde_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Satwind.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Satwind.conf new file mode 100644 index 000000000..3c77a6456 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Satwind.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -180M +ASCII2NC_WINDOW_END = 179M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Satwind_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/Satwind_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Srew.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Srew.conf new file mode 100644 index 000000000..baa0cb148 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Srew.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -30M +ASCII2NC_WINDOW_END = 30M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Srew_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Surface.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Surface.conf new file mode 100644 index 000000000..867f4f092 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_Surface.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -150M +ASCII2NC_WINDOW_END = 30M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Surface_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_SurfaceStn.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_SurfaceStn.conf new file mode 100644 index 000000000..9b0e113a0 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_SurfaceStn.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -150M +ASCII2NC_WINDOW_END = 30M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}Stn/Surface_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurface.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurface.conf new file mode 100644 index 000000000..df3ad5380 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurface.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -30M +ASCII2NC_WINDOW_END = 30M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Surface_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurfaceStn.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurfaceStn.conf new file mode 100644 index 000000000..99b240a9d --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/Ascii2nc_UKSurfaceStn.conf @@ -0,0 +1,15 @@ +[config] + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -30M +ASCII2NC_WINDOW_END = 30M + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}Stn/Surface_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf new file mode 100644 index 000000000..ca193a560 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf @@ -0,0 +1,115 @@ +[config] +## Configuration-related settings such as the process list, begin and end times, etc. + +# List of applications to run - only ASCII2NC for this case +PROCESS_LIST = ASCII2NC + +# 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 = VALID + +# Format of VALID_BEG and VALID_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 +VALID_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match VALID_TIME_FMT +VALID_BEG = {TIMESTRING} + +# End time for METplus run - must match VALID_TIME_FMT +VALID_END = {TIMESTRING} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +VALID_INCREMENT = 60M + +# List of forecast leads to process for each run time (init or valid) +# If unset, defaults to 0 (don't loop through forecast leads +LEAD_SEQ = 0 + +# 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 ASCII2NC only +LOG_ASCII2NC_VERBOSITY = 4 + +# MET Configuration file for ASCII2NC +# References CONFIG_DIR from the [dir] section +#ASCII2NC_CONFIG_FILE = {CONFIG_DIR}/Ascii2NcConfig_wrapped +ASCII2NC_CONFIG_FILE =/data/users/cfrd/METplus_playaround/Ascii2NcConfig_Robversion + +# Time relative to valid time (in seconds if no units are specified) 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. +ASCII2NC_FILE_WINDOW_BEGIN = 0 +ASCII2NC_FILE_WINDOW_END = 0 + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. +ASCII2NC_WINDOW_BEGIN = -150M +ASCII2NC_WINDOW_END = 30M + +# Value to pass with the -format argument to ascii2nc. See MET User's Guide for more information +ASCII2NC_INPUT_FORMAT = + +# Value to pass with the -mask_grid argument to ascii2nc. See MET User's Guide for more information +ASCII2NC_MASK_GRID = + +# Value to pass with the -mask_poly argument to ascii2nc. See MET User's Guide for more information +ASCII2NC_MASK_POLY = + +# Value to pass with the -mask_sid argument to ascii2nc. See MET User's Guide for more information +ASCII2NC_MASK_SID = + +ASCII2NC_MESSAGE_TYPE = + +# For defining the time periods for summarization +# False for no time summary, True otherwise +# The rest of the ASCII2NC_TIME_SUMMARY variables are ignored if set to False +# See the MET User's Guide section regarding ASCII2NC time summary options for more information. +ASCII2NC_TIME_SUMMARY_FLAG = False +ASCII2NC_TIME_SUMMARY_RAW_DATA = False +ASCII2NC_TIME_SUMMARY_BEG = 000000 +ASCII2NC_TIME_SUMMARY_END = 235959 +ASCII2NC_TIME_SUMMARY_STEP = 300 +ASCII2NC_TIME_SUMMARY_WIDTH = 600 +ASCII2NC_TIME_SUMMARY_GRIB_CODES = +ASCII2NC_TIME_SUMMARY_VAR_NAMES = +ASCII2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 +ASCII2NC_TIME_SUMMARY_VALID_FREQ = 0 +ASCII2NC_TIME_SUMMARY_VALID_THRESH = 0.0 + + +# End of [config] section and start of [dir] section +[dir] +# location of configuration files used by MET applications +#CONFIG_DIR={PARM_BASE}/met_config + +# Input/Output directories can be left empty if the corresponding template contains the full path to the files +ASCII2NC_INPUT_DIR = +ASCII2NC_OUTPUT_DIR = + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for input to ASCII2NC relative to ASCII2NC_INPUT_DIR +#ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_OBSERVATION}/Surface_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii +#ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_RAWOB}/Sonde_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii +#ASCII2NC_INPUT_TEMPLATE = {INPUT_BASE_RAWOB}/Aircraft_{valid?fmt=%Y%m%d}_{valid?fmt=%H}00.ascii + +# Template to use to write output from ASCII2NC +#ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE_OBSERVATION}/lndsyn_{valid?fmt=%Y%m%d%H}.nc +#ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/ascii2nc_canned_global/lndsyn_{valid?fmt=%Y%m%d%H}.nc +#ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/ascii2nc_canned_global/sonde_{valid?fmt=%Y%m%d%H}.nc +#ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/ascii2nc_canned_global/aircraft_{valid?fmt=%Y%m%d%H}.nc diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/user_system_local.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/user_system_local.conf new file mode 100755 index 000000000..1a11b48b9 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/user_system_local.conf @@ -0,0 +1,15 @@ +[dir] +# any {ENV[]} variable is defined within [env] section of the rose-app.conf + +INPUT_BASE_OBSERVATION = {ENV[ASCII_INOB]} +OUTPUT_BASE_OBSERVATION = {ENV[ASCII_OUTOB]} + +OUTPUT_BASE={ENV[metout]} + +MET_INSTALL_DIR={ENV[VERSION_MET]} + +# TIMESTRING is linked to whattime in rose-app.conf, linked to the suite.rc so that the time formats in the suite.rc and the METplus' PointStat.conf match up. +TIMESTRING={ENV[DATESTAMP]} + +# Additional config files required to run Ascii2nc +ADD_CONFIG={ENV[ADD_CONFIG_ASC]}/{ENV[MET_config_ASC]} diff --git a/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf b/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf new file mode 100644 index 000000000..0fa07afdd --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf @@ -0,0 +1,87 @@ +[dir] +INPUT_BASE = {ENV[METPLUS_OBS_DIR]} +OUTPUT_BASE = {ENV[CYLC_WORKFLOW_SHARE_DIR]} +# INPUT_READ_SCRIPT = {ENV[INPUT_READ_SCRIPT]} +MET_INSTALL_DIR = {ENV[MET_INSTALL_DIR]} +TIME_START = {ENV[TIME_START]} + +[config] + +# Documentation for this use case can be found at +# https://metplus.readthedocs.io/en/latest/generated/met_tool_wrapper/ASCII2NC/ASCII2NC_python_embedding.html + +# For additional information, please see the METplus Users Guide. +# https://metplus.readthedocs.io/en/latest/Users_Guide + +### +# Processes to run +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list +### + +PROCESS_LIST = ASCII2NC + + +### +# Time Info +# LOOP_BY options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be seti# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +# LEAD_SEQ is the list of forecast leads to process +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control +### + +LOOP_BY = INIT +INIT_TIME_FMT = %Y%m%dT%H +INIT_BEG = {ENV[TASK_TIME]} +INIT_END = {ENV[TASK_ENDTIME]} +INIT_INCREMENT = 6H + +LEAD_SEQ = begin_end_incr(0,5,1) + + +### +# File I/O +# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info +### +ASCII2NC_FILE_WINDOW_BEGIN = -1800 +ASCII2NC_FILE_WINDOW_END = 1800 + +ASCII2NC_INPUT_DIR = +ASCII2NC_INPUT_TEMPLATE = "niwa/python/{ENV[INPUT_READ_SCRIPT]} {INPUT_BASE}/Surface.NiwaList.{init?fmt=%Y%m%dT%2H} {valid?fmt=%Y%m%dT%2H?shift=-10800}00 {ASCII2NC_FILE_WINDOW_BEGIN} {ASCII2NC_FILE_WINDOW_END}" + +ASCII2NC_OUTPUT_DIR = +ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/obs_nc/ascii2nc_python_niwa_{valid?fmt=%Y%m%dT%2H?shift=-10800}00.nc + +ASCII2NC_SKIP_IF_OUTPUT_EXISTS = False + + + +### +# ASCII2NC Settings +# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ascii2nc +### + +#LOG_ASCII2NC_VERBOSITY = 1 +#ASCII2NC_CONFIG_FILE = + +ASCII2NC_WINDOW_BEGIN = 0 +ASCII2NC_WINDOW_END = 0 + +ASCII2NC_INPUT_FORMAT = python + +ASCII2NC_MASK_GRID = +ASCII2NC_MASK_POLY = +ASCII2NC_MASK_SID = + +ASCII2NC_TIME_SUMMARY_FLAG = False +ASCII2NC_TIME_SUMMARY_RAW_DATA = False +ASCII2NC_TIME_SUMMARY_BEG = 000000 +ASCII2NC_TIME_SUMMARY_END = 235959 +ASCII2NC_TIME_SUMMARY_STEP = 300 +ASCII2NC_TIME_SUMMARY_WIDTH = 600 +ASCII2NC_TIME_SUMMARY_GRIB_CODES = 11, 204, 211 +ASCII2NC_TIME_SUMMARY_VAR_NAMES = +ASCII2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 +ASCII2NC_TIME_SUMMARY_VALID_FREQ = 0 +ASCII2NC_TIME_SUMMARY_VALID_THRESH = 0.0 diff --git a/cset-workflow/app/metplus_ascii2nc/file/niwa/python/read_ascii_point.py b/cset-workflow/app/metplus_ascii2nc/file/niwa/python/read_ascii_point.py new file mode 100755 index 000000000..f22251b13 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/file/niwa/python/read_ascii_point.py @@ -0,0 +1,68 @@ +"""Read ASCII point data for METplus.""" + +import os +import sys + +import pandas as pd +from met_point_obs import convert_point_data + +######################################################################## + +print(f"Python Script:\t{sys.argv[0]}") + +## +# input file specified on the command line +# load the data into the numpy array +## + +if len(sys.argv) != 2: + print("ERROR: read_ascii_point.py -> Must specify exactly one input file.") + sys.exit(1) + +# Read the input file as the first argument +input_file = os.path.expandvars(sys.argv[1]) +try: + print("Input File:\t" + repr(input_file)) + + # Read and format the input 11-column observations: + # (1) string: Message_Type + # (2) string: Station_ID + # (3) string: Valid_Time(YYYYMMDD_HHMMSS) + # (4) numeric: Lat(Deg North) + # (5) numeric: Lon(Deg East) + # (6) numeric: Elevation(msl) + # (7) string: Var_Name(or GRIB_Code) + # (8) numeric: Level + # (9) numeric: Height(msl or agl) + # (10) string: QC_String + # (11) numeric: Observation_Value + + point_data = pd.read_csv( + input_file, + header=None, + delim_whitespace=True, + keep_default_na=False, + names=[ + "typ", + "sid", + "vld", + "lat", + "lon", + "elv", + "var", + "lvl", + "hgt", + "qc", + "obs", + ], + dtype={"typ": "str", "sid": "str", "vld": "str", "var": "str", "qc": "str"}, + ).values.tolist() + print(f" point_data: Data Length:\t{len(point_data)}") + print(f" point_data: Data Type:\t{type(point_data)}") + met_point_data = convert_point_data(point_data) + print(f" met_point_data: Data Type:\t{type(met_point_data)}") +except NameError: + print("Can't find the input file") + sys.exit(1) + +######################################################################## diff --git a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf new file mode 100644 index 000000000..9230a9f68 --- /dev/null +++ b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf @@ -0,0 +1,8 @@ +[command] +default=app_env_wrapper run_metplus.py metoffice/ascii2nc.conf metoffice/Ascii2nc_${types}.conf metoffice/user_system_local.conf + +[env] +CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} +METPLUS_OBS_DIR=${METPLUS_OBS_DIR} +TASK_TIME=${TASK_TIME} +TASK_ENDTIME=${TASK_TIME} From 5084295fb918c12ef256f76298b3b71e093e2c5e Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Mon, 8 Jul 2024 22:42:55 +0000 Subject: [PATCH 2/8] clean up --- .../file/ASCII2NC_python_embedding.conf | 101 ------------------ .../file/python/read_ascii_point.py | 68 ------------ .../metplus_ascii2nc/opt/rose-app-niwa.conf | 2 +- 3 files changed, 1 insertion(+), 170 deletions(-) delete mode 100644 cset-workflow/app/metplus_ascii2nc/file/ASCII2NC_python_embedding.conf delete mode 100755 cset-workflow/app/metplus_ascii2nc/file/python/read_ascii_point.py diff --git a/cset-workflow/app/metplus_ascii2nc/file/ASCII2NC_python_embedding.conf b/cset-workflow/app/metplus_ascii2nc/file/ASCII2NC_python_embedding.conf deleted file mode 100644 index ddc13381c..000000000 --- a/cset-workflow/app/metplus_ascii2nc/file/ASCII2NC_python_embedding.conf +++ /dev/null @@ -1,101 +0,0 @@ -[dir] -INPUT_BASE = {ENV[METPLUS_OBS_DIR]} -OUTPUT_BASE = {ENV[CYLC_WORKFLOW_SHARE_DIR]} -# INPUT_READ_SCRIPT = {ENV[INPUT_READ_SCRIPT]} -MET_INSTALL_DIR = {ENV[MET_INSTALL_DIR]} -TIME_START = {ENV[TIME_START]} - -[config] - -# Documentation for this use case can be found at -# https://metplus.readthedocs.io/en/latest/generated/met_tool_wrapper/ASCII2NC/ASCII2NC_python_embedding.html - -# For additional information, please see the METplus Users Guide. -# https://metplus.readthedocs.io/en/latest/Users_Guide - -### -# Processes to run -# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list -### - -PROCESS_LIST = ASCII2NC - - -### -# Time Info -# LOOP_BY options are INIT, VALID, RETRO, and REALTIME -# If set to INIT or RETRO: -# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be seti# If set to VALID or REALTIME: -# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set -# LEAD_SEQ is the list of forecast leads to process -# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control -### - -LOOP_BY = INIT -INIT_TIME_FMT = %Y%m%dT%H -INIT_BEG = {ENV[TASK_TIME]} -INIT_END = {ENV[TASK_ENDTIME]} -INIT_INCREMENT = 6H - -LEAD_SEQ = begin_end_incr(0,5,1) - - -### -# File I/O -# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info -### - -ASCII2NC_INPUT_DIR = -ASCII2NC_INPUT_TEMPLATE = "python/{ENV[INPUT_READ_SCRIPT]} {INPUT_BASE}" - -ASCII2NC_OUTPUT_DIR = -ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/obs_{TIME_START}.nc - -ASCII2NC_SKIP_IF_OUTPUT_EXISTS = False - -ASCII2NC_FILE_WINDOW_BEGIN = 0 -ASCII2NC_FILE_WINDOW_END = 0 - - -########################################### -ASCII2NC_FILE_WINDOW_BEGIN = -1800 -ASCII2NC_FILE_WINDOW_END = 1800 - -ASCII2NC_INPUT_DIR = -ASCII2NC_INPUT_TEMPLATE = "python/{ENV[INPUT_READ_SCRIPT]} {INPUT_BASE}/Surface.NiwaList.{init?fmt=%Y%m%dT%2H} {valid?fmt=%Y%m%dT%2H?shift=-10800}00 {ASCII2NC_FILE_WINDOW_BEGIN} {ASCII2NC_FILE_WINDOW_END}" - -ASCII2NC_OUTPUT_DIR = -ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/obs_nc/ascii2nc_python_niwa_{valid?fmt=%Y%m%dT%2H?shift=-10800}00.nc - -ASCII2NC_SKIP_IF_OUTPUT_EXISTS = False - - - -### -# ASCII2NC Settings -# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ascii2nc -### - -#LOG_ASCII2NC_VERBOSITY = 1 -#ASCII2NC_CONFIG_FILE = - -ASCII2NC_WINDOW_BEGIN = 0 -ASCII2NC_WINDOW_END = 0 - -ASCII2NC_INPUT_FORMAT = python - -ASCII2NC_MASK_GRID = -ASCII2NC_MASK_POLY = -ASCII2NC_MASK_SID = - -ASCII2NC_TIME_SUMMARY_FLAG = False -ASCII2NC_TIME_SUMMARY_RAW_DATA = False -ASCII2NC_TIME_SUMMARY_BEG = 000000 -ASCII2NC_TIME_SUMMARY_END = 235959 -ASCII2NC_TIME_SUMMARY_STEP = 300 -ASCII2NC_TIME_SUMMARY_WIDTH = 600 -ASCII2NC_TIME_SUMMARY_GRIB_CODES = 11, 204, 211 -ASCII2NC_TIME_SUMMARY_VAR_NAMES = -ASCII2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 -ASCII2NC_TIME_SUMMARY_VALID_FREQ = 0 -ASCII2NC_TIME_SUMMARY_VALID_THRESH = 0.0 diff --git a/cset-workflow/app/metplus_ascii2nc/file/python/read_ascii_point.py b/cset-workflow/app/metplus_ascii2nc/file/python/read_ascii_point.py deleted file mode 100755 index f22251b13..000000000 --- a/cset-workflow/app/metplus_ascii2nc/file/python/read_ascii_point.py +++ /dev/null @@ -1,68 +0,0 @@ -"""Read ASCII point data for METplus.""" - -import os -import sys - -import pandas as pd -from met_point_obs import convert_point_data - -######################################################################## - -print(f"Python Script:\t{sys.argv[0]}") - -## -# input file specified on the command line -# load the data into the numpy array -## - -if len(sys.argv) != 2: - print("ERROR: read_ascii_point.py -> Must specify exactly one input file.") - sys.exit(1) - -# Read the input file as the first argument -input_file = os.path.expandvars(sys.argv[1]) -try: - print("Input File:\t" + repr(input_file)) - - # Read and format the input 11-column observations: - # (1) string: Message_Type - # (2) string: Station_ID - # (3) string: Valid_Time(YYYYMMDD_HHMMSS) - # (4) numeric: Lat(Deg North) - # (5) numeric: Lon(Deg East) - # (6) numeric: Elevation(msl) - # (7) string: Var_Name(or GRIB_Code) - # (8) numeric: Level - # (9) numeric: Height(msl or agl) - # (10) string: QC_String - # (11) numeric: Observation_Value - - point_data = pd.read_csv( - input_file, - header=None, - delim_whitespace=True, - keep_default_na=False, - names=[ - "typ", - "sid", - "vld", - "lat", - "lon", - "elv", - "var", - "lvl", - "hgt", - "qc", - "obs", - ], - dtype={"typ": "str", "sid": "str", "vld": "str", "var": "str", "qc": "str"}, - ).values.tolist() - print(f" point_data: Data Length:\t{len(point_data)}") - print(f" point_data: Data Type:\t{type(point_data)}") - met_point_data = convert_point_data(point_data) - print(f" met_point_data: Data Type:\t{type(met_point_data)}") -except NameError: - print("Can't find the input file") - sys.exit(1) - -######################################################################## diff --git a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf index 63b665273..f49be2df6 100644 --- a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf +++ b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf @@ -1,5 +1,5 @@ [command] -default=app_env_wrapper run_metplus.py ASCII2NC_python_embedding.conf +default=app_env_wrapper run_metplus.py niwa/ASCII2NC_python_embedding_niwa.conf [env] CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} From 700c4c9d5c58d64dfc7b993dabf8e5bcc9ad20f9 Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Wed, 10 Jul 2024 05:50:05 +0000 Subject: [PATCH 3/8] start alignment of configurations where possible --- .../app/metplus_ascii2nc/file/metoffice/ascii2nc.conf | 4 ++-- .../file/niwa/ASCII2NC_python_embedding.conf | 6 +++--- .../app/metplus_ascii2nc/opt/rose-app-metoffice.conf | 9 ++++++--- .../app/metplus_ascii2nc/opt/rose-app-niwa.conf | 6 +++--- .../app/metplus_point_stat/opt/rose-app-niwa.conf | 4 ++-- cset-workflow/flow.cylc | 2 +- cset-workflow/includes/point_stat.cylc | 5 +++++ 7 files changed, 22 insertions(+), 14 deletions(-) diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf index ca193a560..f410efcfb 100644 --- a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf @@ -18,10 +18,10 @@ LOOP_BY = VALID VALID_TIME_FMT = %Y%m%d%H # Start time for METplus run - must match VALID_TIME_FMT -VALID_BEG = {TIMESTRING} +VALID_BEG = {ENV[TASK_INIT_TIME]} # End time for METplus run - must match VALID_TIME_FMT -VALID_END = {TIMESTRING} +VALID_END = {ENV[TASK_END_TIME]} # Increment between METplus runs (in seconds if no units are specified) # Must be >= 60 seconds diff --git a/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf b/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf index 0fa07afdd..2328c34e3 100644 --- a/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf +++ b/cset-workflow/app/metplus_ascii2nc/file/niwa/ASCII2NC_python_embedding.conf @@ -32,9 +32,9 @@ PROCESS_LIST = ASCII2NC ### LOOP_BY = INIT -INIT_TIME_FMT = %Y%m%dT%H -INIT_BEG = {ENV[TASK_TIME]} -INIT_END = {ENV[TASK_ENDTIME]} +INIT_TIME_FMT = %Y%m%d%H +INIT_BEG = {ENV[TASK_INIT_TIME]} +INIT_END = {ENV[TASK_END_TIME]} INIT_INCREMENT = 6H LEAD_SEQ = begin_end_incr(0,5,1) diff --git a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf index 9230a9f68..ddd9278e3 100644 --- a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf +++ b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf @@ -3,6 +3,9 @@ default=app_env_wrapper run_metplus.py metoffice/ascii2nc.conf metoffice/Ascii2n [env] CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} -METPLUS_OBS_DIR=${METPLUS_OBS_DIR} -TASK_TIME=${TASK_TIME} -TASK_ENDTIME=${TASK_TIME} +METPLUS_OBS_DIR = ${METPLUS_OBS_DIR} +ASCII_INOB = ${METPLUS_OBS_DIR} +ASCII_OUTOB = +metout = +VERSION_MET = ${MET_INSTALL_DIR} +DATESTAMP = ${TASK_INIT_TIME} diff --git a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf index f49be2df6..45255e971 100644 --- a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf +++ b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-niwa.conf @@ -1,9 +1,9 @@ [command] -default=app_env_wrapper run_metplus.py niwa/ASCII2NC_python_embedding_niwa.conf +default=app_env_wrapper run_metplus.py niwa/ASCII2NC_python_embedding.conf [env] CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} METPLUS_OBS_DIR=${METPLUS_OBS_DIR} INPUT_READ_SCRIPT=restricted_read_ascii_point_niwa.py -TASK_TIME=20230705T00 -TASK_ENDTIME=20230706T18 +TASK_INIT_TIME=$TASK_INIT_TIME +TASK_END_TIME=$TASK_END_TIME diff --git a/cset-workflow/app/metplus_point_stat/opt/rose-app-niwa.conf b/cset-workflow/app/metplus_point_stat/opt/rose-app-niwa.conf index c0fd2c647..e2c2fd897 100644 --- a/cset-workflow/app/metplus_point_stat/opt/rose-app-niwa.conf +++ b/cset-workflow/app/metplus_point_stat/opt/rose-app-niwa.conf @@ -1,7 +1,7 @@ [command] -default=app_env_wrapper run_metplus.py restricted_PointStat_cycling_niwa.conf restricted_PointStat_science_niwa.conf +default=app_env_wrapper run_metplus.py niwa/restricted_PointStat_cycling.conf niwa/restricted_PointStat_science.conf [env] CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} METPLUS_FCST_DIR = ${METPLUS_FCST_DIR} -TIME_START=20230705T00 +TASK_INIT_TIME = ${TASK_INIT_TIME} diff --git a/cset-workflow/flow.cylc b/cset-workflow/flow.cylc index 11bb6646c..e43b4bdb8 100644 --- a/cset-workflow/flow.cylc +++ b/cset-workflow/flow.cylc @@ -91,10 +91,10 @@ URL = https://metoffice.github.io/CSET [[[environment]]] {% if METPLUS_GRID_STAT %} METPLUS_ANA_DIR = {{METPLUS_ANA_DIR}} + {% endif %} METPLUS_FCST_DIR = {{METPLUS_FCST_DIR}} METPLUS_OBS_DIR = {{METPLUS_OBS_DIR}} ROSE_APP_OPT_CONF_KEYS = {{METPLUS_OPT_CONFIG_KEYS}} - {% endif %} # Dummy tasks needed for workflow scheduling. [[process_finish]] diff --git a/cset-workflow/includes/point_stat.cylc b/cset-workflow/includes/point_stat.cylc index 7540e18f9..aefb29984 100644 --- a/cset-workflow/includes/point_stat.cylc +++ b/cset-workflow/includes/point_stat.cylc @@ -9,8 +9,13 @@ [[metplus_ascii2nc]] # Runs METplus wrappers for ASCII to nc ingestion of obs. inherit = METPLUS + [[[environment]]] + TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) + TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H --offset-hours={{FORECAST_LENGHT}}) [[metplus_point_stat]] # Runs METplus wrappers for point stat calculations. inherit = METPLUS + [[[environment]]] + TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) {% endif %} From 496d8f38d53a8d6a1c4781de0afb6d4e2e4f60a7 Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Sun, 8 Dec 2024 21:37:06 +0000 Subject: [PATCH 4/8] changes to includes for METPlus tasks --- cset-workflow/includes/metplus_grid_stat.cylc | 16 +++++++++++++--- cset-workflow/includes/point_stat.cylc | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/cset-workflow/includes/metplus_grid_stat.cylc b/cset-workflow/includes/metplus_grid_stat.cylc index c08182fb1..ea976df99 100644 --- a/cset-workflow/includes/metplus_grid_stat.cylc +++ b/cset-workflow/includes/metplus_grid_stat.cylc @@ -1,9 +1,19 @@ {% if METPLUS_GRID_STAT|default(False) %} [scheduling] [[graph]] - {{CSET_CYCLE_PERIOD}} = """ - metplus_grid_stat => housekeeping_full - """ + {% if CSET_CYCLING_MODE == "case_study" %} + # Runs for every forecast initiation time to process the data in parallel. + {% for date in CSET_CASE_DATES %} + R1/{{date}} = """ + metplus_grid_stat => housekeeping_full + """ + {% endfor %} + {% elif CSET_CYCLING_MODE == "trial" %} + # Analyse from each forecast. + {{CSET_TRIAL_CYCLE_PERIOD}} = """ + metplus_grid_stat => housekeeping_full + """ + {% endif %} [runtime] [[metplus_grid_stat]] diff --git a/cset-workflow/includes/point_stat.cylc b/cset-workflow/includes/point_stat.cylc index 38b568c0a..8b88f9457 100644 --- a/cset-workflow/includes/point_stat.cylc +++ b/cset-workflow/includes/point_stat.cylc @@ -1,9 +1,19 @@ {% if METPLUS_POINT_STAT|default(False) %} [scheduling] [[graph]] - {{CSET_CYCLE_PERIOD}} = """ - metplus_ascii2nc => metplus_point_stat => housekeeping_full - """ + {% if CSET_CYCLING_MODE == "case_study" %} + # Runs for every forecast initiation time to process the data in parallel. + {% for date in CSET_CASE_DATES %} + R1/{{date}} = """ + metplus_ascii2nc => metplus_point_stat => housekeeping_full + """ + {% endfor %} + {% elif CSET_CYCLING_MODE == "trial" %} + # Analyse from each forecast. + {{CSET_TRIAL_CYCLE_PERIOD}} = """ + metplus_ascii2nc => metplus_point_stat => housekeeping_full + """ + {% endif %} [runtime] [[metplus_ascii2nc]] From 1bf30ec5debdbc5381c1bee06f689e09b3690ae2 Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Sun, 8 Dec 2024 23:45:12 +0000 Subject: [PATCH 5/8] enable cycling over obstypes --- .../file/metoffice/ascii2nc.conf | 2 +- .../opt/rose-app-metoffice.conf | 2 +- cset-workflow/includes/point_stat.cylc | 40 +++++++++++++------ 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf index f410efcfb..c896a23d4 100644 --- a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf @@ -29,7 +29,7 @@ VALID_INCREMENT = 60M # List of forecast leads to process for each run time (init or valid) # If unset, defaults to 0 (don't loop through forecast leads -LEAD_SEQ = 0 +LEAD_SEQ = {ENV[FORECATS_LENGTH]} # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST diff --git a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf index ddd9278e3..e1ed3ae8a 100644 --- a/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf +++ b/cset-workflow/app/metplus_ascii2nc/opt/rose-app-metoffice.conf @@ -1,5 +1,5 @@ [command] -default=app_env_wrapper run_metplus.py metoffice/ascii2nc.conf metoffice/Ascii2nc_${types}.conf metoffice/user_system_local.conf +default=app_env_wrapper run_metplus.py metoffice/ascii2nc.conf metoffice/Ascii2nc_${metplus_obs_type}.conf metoffice/user_system_local.conf [env] CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} diff --git a/cset-workflow/includes/point_stat.cylc b/cset-workflow/includes/point_stat.cylc index 8b88f9457..6ed3492eb 100644 --- a/cset-workflow/includes/point_stat.cylc +++ b/cset-workflow/includes/point_stat.cylc @@ -1,31 +1,45 @@ {% if METPLUS_POINT_STAT|default(False) %} [scheduling] [[graph]] - {% if CSET_CYCLING_MODE == "case_study" %} - # Runs for every forecast initiation time to process the data in parallel. - {% for date in CSET_CASE_DATES %} + {% for metplus_obs_type in METPLUS_OBS_TYPES %} + {% if CSET_CYCLING_MODE == "case_study" %} + # Runs for every forecast initiation time to process the data in parallel. + {% for date in CSET_CASE_DATES %} R1/{{date}} = """ - metplus_ascii2nc => metplus_point_stat => housekeeping_full + metplus_ascii2nc_{{metplus_obs_type}} => metplus_point_stat_{{metplus_obs_type}} => housekeeping_full """ - {% endfor %} - {% elif CSET_CYCLING_MODE == "trial" %} - # Analyse from each forecast. - {{CSET_TRIAL_CYCLE_PERIOD}} = """ - metplus_ascii2nc => metplus_point_stat => housekeeping_full - """ - {% endif %} + {% endfor %} + {% elif CSET_CYCLING_MODE == "trial" %} + # Analyse from each forecast. + {{CSET_TRIAL_CYCLE_PERIOD}} = """ + metplus_ascii2nc_{{metplus_obs_type}} => metplus_point_stat_{{metplus_obs_type}} => housekeeping_full + """ + {% endif %} + {% endfor %} [runtime] - [[metplus_ascii2nc]] + {% for metplus_obs_type in METPLUS_OBS_TYPES %} + [[metplus_ascii2nc__{{metplus_obs_type}}]] # Runs METplus wrappers for ASCII to nc ingestion of obs. + # Note that the setting of FORECAST_LENGTH maight be done better in the gui using metadata inherit = METPLUS [[[environment]]] TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) - TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H --offset-hours={{FORECAST_LENGHT}}) + {% if CSET_CYCLING_MODE == "case_study" %} + TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H --offset-hours={{FORECAST_LENGHT}}) + FORECAST_LENGTH = {{FORECAST_LENGHT}} + {% elif CSET_CYCLING_MODE == "trial" %} + TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H) + FORECAST_LENGTH = 0 + {% endif %} + metplus_obs_type = {{metplus_obs_type}} [[metplus_point_stat]] # Runs METplus wrappers for point stat calculations. inherit = METPLUS [[[environment]]] TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) + FORECAST_LENGTH = {{FORECAST_LENGHT}} + metplus_obs_type = {{metplus_obs_type}} + {% endif %} From 33540c8a1402ebc6cd400ac3ce8a905438f96124 Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Mon, 9 Dec 2024 02:24:00 +0000 Subject: [PATCH 6/8] correct LEAD_SEQ value in ascii2nc --- cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf index c896a23d4..11426b184 100644 --- a/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf +++ b/cset-workflow/app/metplus_ascii2nc/file/metoffice/ascii2nc.conf @@ -29,7 +29,7 @@ VALID_INCREMENT = 60M # List of forecast leads to process for each run time (init or valid) # If unset, defaults to 0 (don't loop through forecast leads -LEAD_SEQ = {ENV[FORECATS_LENGTH]} +LEAD_SEQ = begin_end_incr(0,{ENV[FORECATS_LENGTH]},1) # Order of loops to process data - Options are times, processes # Not relevant if only one item is in the PROCESS_LIST From f04ddbdb10b5f49a5fd4f444c90c45dd6fa83f40 Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Mon, 9 Dec 2024 08:38:47 +0000 Subject: [PATCH 7/8] add metoffice pointstat configuration files --- .../file/metoffice/PointStat_UKV_Areas.conf | 109 +++++ .../file/metoffice/PointStat_UKV_Areas0.conf | 103 +++++ .../file/metoffice/PointStat_UKV_HiRA.conf | 83 ++++ .../metoffice/PointStat_UKV_HiRA_CBH.conf | 59 +++ .../metoffice/PointStat_UKV_HiRA_PMSL.conf | 59 +++ .../file/metoffice/PointStat_UKV_HiRA_RH.conf | 59 +++ .../metoffice/PointStat_UKV_HiRA_TCC.conf | 59 +++ .../metoffice/PointStat_UKV_HiRA_TCCalt.conf | 59 +++ .../metoffice/PointStat_UKV_HiRA_Temp.conf | 59 +++ .../metoffice/PointStat_UKV_HiRA_Vis.conf | 59 +++ .../metoffice/PointStat_UKV_SondeV_Areas.conf | 232 +++++++++++ .../metoffice/PointStat_UKV_SondeV_Stns.conf | 234 +++++++++++ .../metoffice/PointStat_UKV_Sonde_Areas.conf | 303 ++++++++++++++ .../metoffice/PointStat_UKV_Sonde_Stns.conf | 300 ++++++++++++++ .../file/metoffice/PointStat_UKV_Stns.conf | 144 +++++++ .../file/metoffice/PointStat_UKV_Stns0.conf | 90 ++++ .../metoffice/PointStat_UKV_StnsPrecip6.conf | 390 ++++++++++++++++++ .../metoffice/PointStat_UKV_StnsSrew1.conf | 267 ++++++++++++ .../metoffice/PointStat_UKV_StnsSrew12.conf | 137 ++++++ .../metoffice/PointStat_UKV_StnsSrew24.conf | 137 ++++++ .../metoffice/PointStat_UKV_StnsSrew6.conf | 285 +++++++++++++ .../metoffice/PointStat_UKV_SurfV_Areas.conf | 96 +++++ .../metoffice/PointStat_UKV_SurfV_Stns.conf | 86 ++++ .../file/metoffice/Pointstat_MET_UKV.conf | 177 ++++++++ .../file/metoffice/Pointstat_METplus_UKV.conf | 195 +++++++++ .../file/metoffice/pointstat_wrapper.sh | 109 +++++ .../file/metoffice/user_system_local.conf | 22 + .../opt/rose-app-metoffice.conf | 7 + 28 files changed, 3919 insertions(+) create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas0.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_CBH.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_PMSL.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_RH.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCC.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCCalt.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Temp.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Vis.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Areas.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Stns.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Areas.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Stns.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns0.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsPrecip6.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew1.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew12.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew24.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew6.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Areas.conf create mode 100644 cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Stns.conf create mode 100755 cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_MET_UKV.conf create mode 100755 cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_METplus_UKV.conf create mode 100755 cset-workflow/app/metplus_point_stat/file/metoffice/pointstat_wrapper.sh create mode 100755 cset-workflow/app/metplus_point_stat/file/metoffice/user_system_local.conf create mode 100644 cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas.conf new file mode 100644 index 000000000..878a446f4 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas.conf @@ -0,0 +1,109 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +#POINT_STAT_OBS_QUALITY_INC = 08388928 +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_pressure_at_sea_level +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_THRESH = [<=98000.0, <=98500.0, <=99000.0, <=99500.0, <=100000.0, <=100500.0, <=101000.0, <=101500.0, <=102000.0] +FCST_VAR1_OPTIONS = set_attr_name="PMSL"; set_attr_level="Z0" +OBS_VAR1_NAME = PMSL +OBS_VAR1_OPTIONS = +OBS_VAR1_THRESH = [<=98000.0, <=98500.0, <=99000.0, <=99500.0, <=100000.0, <=100500.0, <=101000.0, <=101500.0, <=102000.0] +OBS_VAR1_LEVELS = Z0 +FCST_VAR2_NAME = air_temperature +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_THRESH = [<=273.15, <=278.15, <=283.15, <=288.15, <=293.15] +FCST_VAR2_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR2_NAME = TMP +OBS_VAR2_OPTIONS = set_attr_name="T2M" +OBS_VAR2_THRESH = [<=273.15, <=278.15, <=283.15, <=288.15, <=293.15] +OBS_VAR2_LEVELS = Z0 +FCST_VAR3_NAME = visibility_in_air +FCST_VAR3_LEVELS = "(*,*)" +FCST_VAR3_THRESH = [<=200, <=1000, <=4000, <=5000] +FCST_VAR3_OPTIONS = set_attr_level="Z0"; +OBS_VAR3_NAME = VIS +OBS_VAR3_OPTIONS = set_attr_level="Z0"; +OBS_VAR3_THRESH = [<=200, <=1000, <=4000, <=5000] +OBS_VAR3_LEVELS = Z0 +FCST_VAR4_NAME = visibility_in_air +FCST_VAR4_LEVELS = "(*,*)" +FCST_VAR4_THRESH = [<=2.3, <=3, <=3.6, <=3.7] +FCST_VAR4_OPTIONS = set_attr_name="vis_log10"; set_attr_level="Z0"; set_attr_units="m(log10)"; convert(a) = log10(a); +OBS_VAR4_NAME = VIS +OBS_VAR4_OPTIONS = set_attr_name="vis_log10"; set_attr_level="Z0"; set_attr_units="m(log10)"; convert(a) = log10(a); +OBS_VAR4_THRESH = [<=2.3, <=3, <=3.6, <=3.7] +OBS_VAR4_LEVELS = Z0 +FCST_VAR5_NAME = m01s09i233 +FCST_VAR5_LEVELS = "(*,*)" +FCST_VAR5_THRESH = [<=0.3125, <=0.5625, <=0.8125] +FCST_VAR5_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC_9233" +OBS_VAR5_NAME = TCDC +OBS_VAR5_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8); +OBS_VAR5_THRESH = [<=0.3125, <=0.5625, <=0.8125] +OBS_VAR5_LEVELS = Z0 +FCST_VAR6_NAME = relative_humidity +FCST_VAR6_LEVELS = "(*,*)" +FCST_VAR6_OPTIONS = set_attr_level="Z0"; set_attr_name="RH"; +OBS_VAR6_NAME = RH +OBS_VAR6_OPTIONS = set_attr_level="Z0" +OBS_VAR6_LEVELS = Z0 +FCST_VAR7_NAME = cloud_base_altitude_assuming_only_consider_cloud_area_fraction_greater_than_2p5_oktas +FCST_VAR7_LEVELS = "(*,*)" +FCST_VAR7_OPTIONS = set_attr_level="Z0"; set_attr_name="CLD_HGT2.5"; cat_thresh = [ <=100, <=300, <=500, <=1000, <=1500 ]; convert(x) = min(99999.0,1000 * FT_to_M(x)); +OBS_VAR7_NAME = CLD_HGT2.5 +OBS_VAR7_OPTIONS = cat_thresh = [ <=100, <=300, <=500, <=1000, <=1500 ]; set_attr_units="m"; +OBS_VAR7_LEVELS = Z0 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns +POINT_STAT_MASK_LLPNT= + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_surf_{lead?fmt=%3H}_ukv.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas0.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas0.conf new file mode 100644 index 000000000..d567e2901 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Areas0.conf @@ -0,0 +1,103 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +#POINT_STAT_OBS_QUALITY_INC = 08388928 +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_pressure_at_sea_level +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_THRESH = [<=98000.0, <=98500.0, <=99000.0, <=99500.0, <=100000.0, <=100500.0, <=101000.0, <=101500.0, <=102000.0] +FCST_VAR1_OPTIONS = set_attr_name="PRMSL"; set_attr_level="Z0" +OBS_VAR1_NAME = PRMSL +OBS_VAR1_OPTIONS = +OBS_VAR1_THRESH = [<=98000.0, <=98500.0, <=99000.0, <=99500.0, <=100000.0, <=100500.0, <=101000.0, <=101500.0, <=102000.0] +OBS_VAR1_LEVELS = Z0 +FCST_VAR2_NAME = air_temperature +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_THRESH = [<=273.15, <=278.15, <=283.15, <=288.15, <=293.15] +FCST_VAR2_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR2_NAME = TMP +OBS_VAR2_OPTIONS = set_attr_name="T2M" +OBS_VAR2_THRESH = [<=273.15, <=278.15, <=283.15, <=288.15, <=293.15] +OBS_VAR2_LEVELS = Z0 +FCST_VAR3_NAME = visibility_in_air +FCST_VAR3_LEVELS = "(*,*)" +FCST_VAR3_THRESH = [<=200, <=1000, <=4000, <=5000] +FCST_VAR3_OPTIONS = set_attr_level="Z0"; +OBS_VAR3_NAME = VIS +OBS_VAR3_OPTIONS = set_attr_level="Z0"; +OBS_VAR3_THRESH = [<=200, <=1000, <=4000, <=5000] +OBS_VAR3_LEVELS = Z0 +FCST_VAR4_NAME = visibility_in_air +FCST_VAR4_LEVELS = "(*,*)" +FCST_VAR4_THRESH = [<=2.3, <=3, <=3.6, <=3.7] +FCST_VAR4_OPTIONS = set_attr_name="vis_log10"; set_attr_level="Z0"; set_attr_units="m(log10)"; convert(a) = log10(a); +OBS_VAR4_NAME = VIS +OBS_VAR4_OPTIONS = set_attr_name="vis_log10"; set_attr_level="Z0"; set_attr_units="m(log10)"; convert(a) = log10(a); +OBS_VAR4_THRESH = [<=2.3, <=3, <=3.6, <=3.7] +OBS_VAR4_LEVELS = Z0 +FCST_VAR5_NAME = m01s09i233 +FCST_VAR5_LEVELS = "(*,*)" +FCST_VAR5_THRESH = [<=0.3125, <=0.5625, <=0.8125] +FCST_VAR5_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC_9233" +OBS_VAR5_NAME = TCDC +OBS_VAR5_OPTIONS = set_attr_level="Z0" +OBS_VAR5_THRESH = [<=0.3125, <=0.5625, <=0.8125] +OBS_VAR5_LEVELS = Z0 +FCST_VAR6_NAME = relative_humidity +FCST_VAR6_LEVELS = "(*,*)" +FCST_VAR6_OPTIONS = set_attr_level="Z0"; set_attr_name="RH"; +OBS_VAR6_NAME = RH +OBS_VAR6_OPTIONS = set_attr_level="Z0" +OBS_VAR6_LEVELS = Z0 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns +POINT_STAT_MASK_LLPNT= + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_surf_{lead?fmt=%3H}_ukv.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA.conf new file mode 100644 index 000000000..b81957ef1 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA.conf @@ -0,0 +1,83 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = cloud_area_fraction_assuming_maximum_random_overlap +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC" +OBS_VAR1_NAME = TCDC +OBS_VAR1_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8); hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.0625, <0.1875, <0.3125, <0.4375, <0.5625, <0.6875, <0.8125, <0.9375];} +OBS_VAR1_LEVELS = Z0 +FCST_VAR2_NAME = m01s09i233 +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC_9233" +OBS_VAR2_NAME = TCDC +OBS_VAR2_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8); hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.0625, <0.1875, <0.3125, <0.4375, <0.5625, <0.6875, <0.8125, <0.9375];} +OBS_VAR2_LEVELS = Z0 +FCST_VAR3_NAME = visibility_in_air +FCST_VAR3_LEVELS = "(*,*)" +FCST_VAR3_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR3_NAME = VIS +OBS_VAR3_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<50, <100, <200, <500, <1000, <2000, <3000, <4000, <5000, <7500];} +OBS_VAR3_LEVELS = Z0 +FCST_VAR4_NAME = air_temperature +FCST_VAR4_LEVELS = "(*,*)" +FCST_VAR4_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR4_NAME = TMP +OBS_VAR4_OPTIONS = set_attr_name="T2M"; hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<271.15, <273.15, <275.15, <278.15, <283.15, <293.15, <298.15, <300.15, <303.15];} +OBS_VAR4_LEVELS = Z0 +FCST_VAR5_NAME = air_pressure_at_sea_level +FCST_VAR5_LEVELS = "(*,*)" +FCST_VAR5_OPTIONS = set_attr_name="PMSL"; set_attr_level="Z0" +OBS_VAR5_NAME = PMSL +OBS_VAR5_OPTIONS = hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<98500.0, <99000.0, <99500.0, <100000.0, <100500.0, <101000.0, <101500.0, <102000.0];} +OBS_VAR5_LEVELS = Z0 +FCST_VAR6_NAME = cloud_base_altitude_assuming_only_consider_cloud_area_fraction_greater_than_2p5_oktas +FCST_VAR6_LEVELS = "(*,*)" +FCST_VAR6_OPTIONS = set_attr_level="Z0"; set_attr_name="CLD_HGT2.5"; convert(x) = min(99999.0,1000 * FT_to_M(x)); +OBS_VAR6_NAME = CLD_HGT2.5 +OBS_VAR6_OPTIONS = set_attr_units="m"; hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<50, <100, <200, <500, <1000, <1500, <2000, <2500, <5000];} +OBS_VAR6_LEVELS = Z0 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID={MET_STN_DIR}/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +POINT_STAT_OUTPUT_FLAG_PCT = BOTH +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_CBH.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_CBH.conf new file mode 100644 index 000000000..4c27edf1d --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_CBH.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = cloud_base_altitude_assuming_only_consider_cloud_area_fraction_greater_than_2p5_oktas +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_level="Z0"; set_attr_name="CLD_HGT2.5"; convert(x) = min(99999.0,1000 * FT_to_M(x)); +OBS_VAR1_NAME = CLD_HGT2.5 +OBS_VAR1_OPTIONS = set_attr_units="m"; +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +POINT_STAT_HIRA_PROB_CAT_THRESH = <50, <100, <200, <500, <1000, <1500, <2000, 2500, <5000 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID={MET_STN_DIR}/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_PMSL.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_PMSL.conf new file mode 100644 index 000000000..4c5466fe0 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_PMSL.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_pressure_at_sea_level +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PMSL"; set_attr_level="Z0" +OBS_VAR1_NAME = PMSL +OBS_VAR1_OPTIONS = +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +POINT_STAT_HIRA_PROB_CAT_THRESH = <985.0, <990.0, <995.0, <1000.0, <1005.0, <1010.0, <1015.0, <1020.0 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_RH.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_RH.conf new file mode 100644 index 000000000..70c6d6ad1 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_RH.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = relative_humidity +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_level="Z0"; set_attr_name="RH"; +OBS_VAR1_NAME = RH +OBS_VAR1_OPTIONS = set_attr_level="Z0" +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +POINT_STAT_HIRA_PROB_CAT_THRESH = <10, <20, <40, <50, <60, <70, <80, <90, <100 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCC.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCC.conf new file mode 100644 index 000000000..0903bf3fc --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCC.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = cloud_area_fraction_assuming_maximum_random_overlap +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC" +OBS_VAR1_NAME = TCDC +OBS_VAR1_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8);;; hira={flag=true; width=[3,7,11,13,17]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.0625, <0.1875, <0.3125, <0.4375, <0.5625, <0.6875, <0.8125, <0.9375];} +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +#POINT_STAT_HIRA_PROB_CAT_THRESH = <0.0625, <0.1875, <0.3125, <0.4375, <0.5625, <0.6875, <0.8125, <0.9375 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCCalt.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCCalt.conf new file mode 100644 index 000000000..7ecc47f64 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_TCCalt.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = m01s09i233 +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC_9233" +OBS_VAR1_NAME = TCDC +OBS_VAR1_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8); +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +POINT_STAT_HIRA_PROB_CAT_THRESH = <0.0625, <0.1875, <0.3125, <0.4375, <0.5625, <0.6875, <0.8125, <0.9375 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Temp.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Temp.conf new file mode 100644 index 000000000..dede428d9 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Temp.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_temperature +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR1_NAME = TMP +OBS_VAR1_OPTIONS = set_attr_name="T2M" +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +POINT_STAT_HIRA_PROB_CAT_THRESH = <271.15, <273.15, <275.15, <278.15, <283.15, <293.15, <298.15, <300.15, <303.15 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Vis.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Vis.conf new file mode 100644 index 000000000..0fcf63fde --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_HiRA_Vis.conf @@ -0,0 +1,59 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = visibility_in_air +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR1_NAME = VIS +OBS_VAR1_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR1_LEVELS = Z0 + +POINT_STAT_HIRA_COV_THRESH == 0.1 +POINT_STAT_HIRA_FLAG = TRUE +POINT_STAT_HIRA_PROB_CAT_THRESH = <50, <100, <200, <500, <1000, <2000, <3000, <4000, <5000, <7500 +POINT_STAT_HIRA_SHAPE = SQUARE +POINT_STAT_HIRA_VLD_THRESH = 1.0 +POINT_STAT_HIRA_WIDTH = 3, 7, 11, 13, 17 + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Areas.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Areas.conf new file mode 100644 index 000000000..2524b5b67 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Areas.conf @@ -0,0 +1,232 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(AreasNear), PointStat(AreasBilin) + +# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only +LOG_POINT_STAT_VERBOSITY = 3 + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = -10800 +OBS_POINT_STAT_WINDOW_END = 10740 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = UPPERAIR + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID= {MET_STN_DIR}/2103.stns +POINT_STAT_MASK_LLPNT= + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = x_wind_0 +FCST_VAR1_LEVELS = "(@1000,*,*)" +FCST_VAR1_OPTIONS = set_attr_level="P1000"; is_u_wind=true +OBS_VAR1_NAME = UGRD +OBS_VAR1_OPTIONS = set_attr_level="P1000"; is_u_wind=true +OBS_VAR1_LEVELS = P100000.0 +FCST_VAR2_NAME = y_wind_0 +FCST_VAR2_LEVELS = "(@1000,*,*)" +FCST_VAR2_OPTIONS = set_attr_level="P1000"; is_v_wind=true +OBS_VAR2_NAME = VGRD +OBS_VAR2_OPTIONS = set_attr_level="P1000"; is_v_wind=true +OBS_VAR2_LEVELS = P100000.0 +FCST_VAR3_NAME = x_wind_0 +FCST_VAR3_LEVELS = "(@850,*,*)" +FCST_VAR3_OPTIONS = set_attr_level="P850"; is_u_wind=true +OBS_VAR3_NAME = UGRD +OBS_VAR3_OPTIONS = set_attr_level="P850"; is_u_wind=true +OBS_VAR3_LEVELS = P85000.0 +FCST_VAR4_NAME = y_wind_0 +FCST_VAR4_LEVELS = "(@850,*,*)" +FCST_VAR4_OPTIONS = set_attr_level="P850"; is_v_wind=true +OBS_VAR4_NAME = VGRD +OBS_VAR4_OPTIONS = set_attr_level="P850"; is_v_wind=true +OBS_VAR4_LEVELS = P85000.0 +FCST_VAR5_NAME = x_wind_0 +FCST_VAR5_LEVELS = "(@700,*,*)" +FCST_VAR5_OPTIONS = set_attr_level="P700"; is_u_wind=true +OBS_VAR5_NAME = UGRD +OBS_VAR5_OPTIONS = set_attr_level="P700"; is_u_wind=true +OBS_VAR5_LEVELS = P70000.0 +FCST_VAR6_NAME = y_wind_0 +FCST_VAR6_LEVELS = "(@700,*,*)" +FCST_VAR6_OPTIONS = set_attr_level="P700"; is_v_wind=true +OBS_VAR6_NAME = VGRD +OBS_VAR6_OPTIONS = set_attr_level="P700"; is_v_wind=true +OBS_VAR6_LEVELS = P70000.0 +FCST_VAR7_NAME = x_wind_0 +FCST_VAR7_LEVELS = "(@500,*,*)" +FCST_VAR7_OPTIONS = set_attr_level="P500"; is_u_wind=true +OBS_VAR7_NAME = UGRD +OBS_VAR7_OPTIONS = set_attr_level="P500"; is_u_wind=true +OBS_VAR7_LEVELS = P50000.0 +FCST_VAR8_NAME = y_wind_0 +FCST_VAR8_LEVELS = "(@500,*,*)" +FCST_VAR8_OPTIONS = set_attr_level="P500"; is_v_wind=true +OBS_VAR8_NAME = VGRD +OBS_VAR8_OPTIONS = set_attr_level="P500"; is_v_wind=true +OBS_VAR8_LEVELS = P50000.0 +FCST_VAR9_NAME = x_wind_0 +FCST_VAR9_LEVELS = "(@400,*,*)" +FCST_VAR9_OPTIONS = set_attr_level="P400"; is_u_wind=true +OBS_VAR9_NAME = UGRD +OBS_VAR9_OPTIONS = set_attr_level="P400"; is_u_wind=true +OBS_VAR9_LEVELS = P40000.0 +FCST_VAR10_NAME = y_wind_0 +FCST_VAR10_LEVELS = "(@400,*,*)" +FCST_VAR10_OPTIONS = set_attr_level="P400"; is_v_wind=true +OBS_VAR10_NAME = VGRD +OBS_VAR10_OPTIONS = set_attr_level="P400"; is_v_wind=true +OBS_VAR10_LEVELS = P40000.0 +FCST_VAR11_NAME = x_wind_0 +FCST_VAR11_LEVELS = "(@300,*,*)" +FCST_VAR11_OPTIONS = set_attr_level="P300"; is_u_wind=true +OBS_VAR11_NAME = UGRD +OBS_VAR11_OPTIONS = set_attr_level="P300"; is_u_wind=true +OBS_VAR11_LEVELS = P30000.0 +FCST_VAR12_NAME = y_wind_0 +FCST_VAR12_LEVELS = "(@300,*,*)" +FCST_VAR12_OPTIONS = set_attr_level="P300"; is_v_wind=true +OBS_VAR12_NAME = VGRD +OBS_VAR12_OPTIONS = set_attr_level="P300"; is_v_wind=true +OBS_VAR12_LEVELS = P30000.0 +FCST_VAR13_NAME = x_wind_0 +FCST_VAR13_LEVELS = "(@250,*,*)" +FCST_VAR13_OPTIONS = set_attr_level="P250"; is_u_wind=true +OBS_VAR13_NAME = UGRD +OBS_VAR13_OPTIONS = set_attr_level="P250"; is_u_wind=true +OBS_VAR13_LEVELS = P25000.0 +FCST_VAR14_NAME = y_wind_0 +FCST_VAR14_LEVELS = "(@250,*,*)" +FCST_VAR14_OPTIONS = set_attr_level="P250"; is_v_wind=true +OBS_VAR14_NAME = VGRD +OBS_VAR14_OPTIONS = set_attr_level="P250"; is_v_wind=true +OBS_VAR14_LEVELS = P25000.0 +FCST_VAR15_NAME = x_wind_0 +FCST_VAR15_LEVELS = "(@200,*,*)" +FCST_VAR15_OPTIONS = set_attr_level="P200"; is_u_wind=true +OBS_VAR15_NAME = UGRD +OBS_VAR15_OPTIONS = set_attr_level="P200"; is_u_wind=true +OBS_VAR15_LEVELS = P20000.0 +FCST_VAR16_NAME = y_wind_0 +FCST_VAR16_LEVELS = "(@200,*,*)" +FCST_VAR16_OPTIONS = set_attr_level="P200"; is_v_wind=true +OBS_VAR16_NAME = VGRD +OBS_VAR16_OPTIONS = set_attr_level="P200"; is_v_wind=true +OBS_VAR16_LEVELS = P20000.0 +FCST_VAR17_NAME = x_wind_0 +FCST_VAR17_LEVELS = "(@150,*,*)" +FCST_VAR17_OPTIONS = set_attr_level="P150"; is_u_wind=true +OBS_VAR17_NAME = UGRD +OBS_VAR17_OPTIONS = set_attr_level="P150"; is_u_wind=true +OBS_VAR17_LEVELS = P15000.0 +FCST_VAR18_NAME = y_wind_0 +FCST_VAR18_LEVELS = "(@150,*,*)" +FCST_VAR18_OPTIONS = set_attr_level="P150"; is_v_wind=true +OBS_VAR18_NAME = VGRD +OBS_VAR18_OPTIONS = set_attr_level="P150"; is_v_wind=true +OBS_VAR18_LEVELS = P15000.0 +FCST_VAR19_NAME = x_wind_0 +FCST_VAR19_LEVELS = "(@100,*,*)" +FCST_VAR19_OPTIONS = set_attr_level="P100"; is_u_wind=true +OBS_VAR19_NAME = UGRD +OBS_VAR19_OPTIONS = set_attr_level="P100"; is_u_wind=true +OBS_VAR19_LEVELS = P10000.0 +FCST_VAR20_NAME = y_wind_0 +FCST_VAR20_LEVELS = "(@100,*,*)" +FCST_VAR20_OPTIONS = set_attr_level="P100"; is_v_wind=true +OBS_VAR20_NAME = VGRD +OBS_VAR20_OPTIONS = set_attr_level="P100"; is_v_wind=true +OBS_VAR20_LEVELS = P10000.0 +FCST_VAR21_NAME = x_wind_0 +FCST_VAR21_LEVELS = "(@70,*,*)" +FCST_VAR21_OPTIONS = set_attr_level="P70"; is_u_wind=true +OBS_VAR21_NAME = UGRD +OBS_VAR21_OPTIONS = set_attr_level="P70"; is_u_wind=true +OBS_VAR21_LEVELS = P7000.0 +FCST_VAR22_NAME = y_wind_0 +FCST_VAR22_LEVELS = "(@70,*,*)" +FCST_VAR22_OPTIONS = set_attr_level="P70"; is_v_wind=true +OBS_VAR22_NAME = VGRD +OBS_VAR22_OPTIONS = set_attr_level="P70"; is_v_wind=true +OBS_VAR22_LEVELS = P7000.0 +FCST_VAR23_NAME = x_wind_0 +FCST_VAR23_LEVELS = "(@30,*,*)" +FCST_VAR23_OPTIONS = set_attr_level="P30"; is_u_wind=true +OBS_VAR23_NAME = UGRD +OBS_VAR23_OPTIONS = set_attr_level="P30"; is_u_wind=true +OBS_VAR23_LEVELS = P3000.0 +FCST_VAR24_NAME = y_wind_0 +FCST_VAR24_LEVELS = "(@30,*,*)" +FCST_VAR24_OPTIONS = set_attr_level="P30"; is_v_wind=true +OBS_VAR24_NAME = VGRD +OBS_VAR24_OPTIONS = set_attr_level="P30"; is_v_wind=true +OBS_VAR24_LEVELS = P3000.0 + +OBS_POINT_STAT_INPUT_DIR = {INPUT_BASE_OBSERVATION} +#OBS_POINT_STAT_INPUT_DIR = +#POINT_STAT_OUTPUT_PREFIX = Radiosonde_WindData_{MODEL}_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = BOTH +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# End of [config] section and start of [dir] section + +[dir] + +# Directory containing forecast input to PointStat +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_vec + +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadSonde.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_glu_sonde_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_sonde_{lead?fmt=%3H}v.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Sonde_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[AreasNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_WindData_{MODEL}_Nearest_G000 + +[AreasBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_WindData_{MODEL}_Bilin_G000 diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Stns.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Stns.conf new file mode 100644 index 000000000..a0ec0398a --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SondeV_Stns.conf @@ -0,0 +1,234 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(StnsNear), PointStat(StnsBilin) + +# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only +LOG_POINT_STAT_VERBOSITY = 3 + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = -10800 +OBS_POINT_STAT_WINDOW_END = 10740 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = 50101,50102,50201,50202 +#POINT_STAT_MESSAGE_TYPE = UPPERAIR + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. + +# MAY NEED TO MAKE THIS SLIGHTLY LARGER (?) +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = x_wind_0 +FCST_VAR1_LEVELS = "(@1000,*,*)" +FCST_VAR1_OPTIONS = set_attr_level="P1000"; is_u_wind=true +OBS_VAR1_NAME = UGRD +OBS_VAR1_OPTIONS = set_attr_level="P1000"; is_u_wind=true +OBS_VAR1_LEVELS = P100000.0 +FCST_VAR2_NAME = y_wind_0 +FCST_VAR2_LEVELS = "(@1000,*,*)" +FCST_VAR2_OPTIONS = set_attr_level="P1000"; is_v_wind=true +OBS_VAR2_NAME = VGRD +OBS_VAR2_OPTIONS = set_attr_level="P1000"; is_v_wind=true +OBS_VAR2_LEVELS = P100000.0 +FCST_VAR3_NAME = x_wind_0 +FCST_VAR3_LEVELS = "(@850,*,*)" +FCST_VAR3_OPTIONS = set_attr_level="P850"; is_u_wind=true +OBS_VAR3_NAME = UGRD +OBS_VAR3_OPTIONS = set_attr_level="P850"; is_u_wind=true +OBS_VAR3_LEVELS = P85000.0 +FCST_VAR4_NAME = y_wind_0 +FCST_VAR4_LEVELS = "(@850,*,*)" +FCST_VAR4_OPTIONS = set_attr_level="P850"; is_v_wind=true +OBS_VAR4_NAME = VGRD +OBS_VAR4_OPTIONS = set_attr_level="P850"; is_v_wind=true +OBS_VAR4_LEVELS = P85000.0 +FCST_VAR5_NAME = x_wind_0 +FCST_VAR5_LEVELS = "(@700,*,*)" +FCST_VAR5_OPTIONS = set_attr_level="P700"; is_u_wind=true +OBS_VAR5_NAME = UGRD +OBS_VAR5_OPTIONS = set_attr_level="P700"; is_u_wind=true +OBS_VAR5_LEVELS = P70000.0 +FCST_VAR6_NAME = y_wind_0 +FCST_VAR6_LEVELS = "(@700,*,*)" +FCST_VAR6_OPTIONS = set_attr_level="P700"; is_v_wind=true +OBS_VAR6_NAME = VGRD +OBS_VAR6_OPTIONS = set_attr_level="P700"; is_v_wind=true +OBS_VAR6_LEVELS = P70000.0 +FCST_VAR7_NAME = x_wind_0 +FCST_VAR7_LEVELS = "(@500,*,*)" +FCST_VAR7_OPTIONS = set_attr_level="P500"; is_u_wind=true +OBS_VAR7_NAME = UGRD +OBS_VAR7_OPTIONS = set_attr_level="P500"; is_u_wind=true +OBS_VAR7_LEVELS = P50000.0 +FCST_VAR8_NAME = y_wind_0 +FCST_VAR8_LEVELS = "(@500,*,*)" +FCST_VAR8_OPTIONS = set_attr_level="P500"; is_v_wind=true +OBS_VAR8_NAME = VGRD +OBS_VAR8_OPTIONS = set_attr_level="P500"; is_v_wind=true +OBS_VAR8_LEVELS = P50000.0 +FCST_VAR9_NAME = x_wind_0 +FCST_VAR9_LEVELS = "(@400,*,*)" +FCST_VAR9_OPTIONS = set_attr_level="P400"; is_u_wind=true +OBS_VAR9_NAME = UGRD +OBS_VAR9_OPTIONS = set_attr_level="P400"; is_u_wind=true +OBS_VAR9_LEVELS = P40000.0 +FCST_VAR10_NAME = y_wind_0 +FCST_VAR10_LEVELS = "(@400,*,*)" +FCST_VAR10_OPTIONS = set_attr_level="P400"; is_v_wind=true +OBS_VAR10_NAME = VGRD +OBS_VAR10_OPTIONS = set_attr_level="P400"; is_v_wind=true +OBS_VAR10_LEVELS = P40000.0 +FCST_VAR11_NAME = x_wind_0 +FCST_VAR11_LEVELS = "(@300,*,*)" +FCST_VAR11_OPTIONS = set_attr_level="P300"; is_u_wind=true +OBS_VAR11_NAME = UGRD +OBS_VAR11_OPTIONS = set_attr_level="P300"; is_u_wind=true +OBS_VAR11_LEVELS = P30000.0 +FCST_VAR12_NAME = y_wind_0 +FCST_VAR12_LEVELS = "(@300,*,*)" +FCST_VAR12_OPTIONS = set_attr_level="P300"; is_v_wind=true +OBS_VAR12_NAME = VGRD +OBS_VAR12_OPTIONS = set_attr_level="P300"; is_v_wind=true +OBS_VAR12_LEVELS = P30000.0 +FCST_VAR13_NAME = x_wind_0 +FCST_VAR13_LEVELS = "(@250,*,*)" +FCST_VAR13_OPTIONS = set_attr_level="P250"; is_u_wind=true +OBS_VAR13_NAME = UGRD +OBS_VAR13_OPTIONS = set_attr_level="P250"; is_u_wind=true +OBS_VAR13_LEVELS = P25000.0 +FCST_VAR14_NAME = y_wind_0 +FCST_VAR14_LEVELS = "(@250,*,*)" +FCST_VAR14_OPTIONS = set_attr_level="P250"; is_v_wind=true +OBS_VAR14_NAME = VGRD +OBS_VAR14_OPTIONS = set_attr_level="P250"; is_v_wind=true +OBS_VAR14_LEVELS = P25000.0 +FCST_VAR15_NAME = x_wind_0 +FCST_VAR15_LEVELS = "(@200,*,*)" +FCST_VAR15_OPTIONS = set_attr_level="P200"; is_u_wind=true +OBS_VAR15_NAME = UGRD +OBS_VAR15_OPTIONS = set_attr_level="P200"; is_u_wind=true +OBS_VAR15_LEVELS = P20000.0 +FCST_VAR16_NAME = y_wind_0 +FCST_VAR16_LEVELS = "(@200,*,*)" +FCST_VAR16_OPTIONS = set_attr_level="P200"; is_v_wind=true +OBS_VAR16_NAME = VGRD +OBS_VAR16_OPTIONS = set_attr_level="P200"; is_v_wind=true +OBS_VAR16_LEVELS = P20000.0 +FCST_VAR17_NAME = x_wind_0 +FCST_VAR17_LEVELS = "(@150,*,*)" +FCST_VAR17_OPTIONS = set_attr_level="P150"; is_u_wind=true +OBS_VAR17_NAME = UGRD +OBS_VAR17_OPTIONS = set_attr_level="P150"; is_u_wind=true +OBS_VAR17_LEVELS = P15000.0 +FCST_VAR18_NAME = y_wind_0 +FCST_VAR18_LEVELS = "(@150,*,*)" +FCST_VAR18_OPTIONS = set_attr_level="P150"; is_v_wind=true +OBS_VAR18_NAME = VGRD +OBS_VAR18_OPTIONS = set_attr_level="P150"; is_v_wind=true +OBS_VAR18_LEVELS = P15000.0 +FCST_VAR19_NAME = x_wind_0 +FCST_VAR19_LEVELS = "(@100,*,*)" +FCST_VAR19_OPTIONS = set_attr_level="P100"; is_u_wind=true +OBS_VAR19_NAME = UGRD +OBS_VAR19_OPTIONS = set_attr_level="P100"; is_u_wind=true +OBS_VAR19_LEVELS = P10000.0 +FCST_VAR20_NAME = y_wind_0 +FCST_VAR20_LEVELS = "(@100,*,*)" +FCST_VAR20_OPTIONS = set_attr_level="P100"; is_v_wind=true +OBS_VAR20_NAME = VGRD +OBS_VAR20_OPTIONS = set_attr_level="P100"; is_v_wind=true +OBS_VAR20_LEVELS = P10000.0 +FCST_VAR21_NAME = x_wind_0 +FCST_VAR21_LEVELS = "(@70,*,*)" +FCST_VAR21_OPTIONS = set_attr_level="P70"; is_u_wind=true +OBS_VAR21_NAME = UGRD +OBS_VAR21_OPTIONS = set_attr_level="P70"; is_u_wind=true +OBS_VAR21_LEVELS = P7000.0 +FCST_VAR22_NAME = y_wind_0 +FCST_VAR22_LEVELS = "(@70,*,*)" +FCST_VAR22_OPTIONS = set_attr_level="P70"; is_v_wind=true +OBS_VAR22_NAME = VGRD +OBS_VAR22_OPTIONS = set_attr_level="P70"; is_v_wind=true +OBS_VAR22_LEVELS = P7000.0 +FCST_VAR23_NAME = x_wind_0 +FCST_VAR23_LEVELS = "(@30,*,*)" +FCST_VAR23_OPTIONS = set_attr_level="P30"; is_u_wind=true +OBS_VAR23_NAME = UGRD +OBS_VAR23_OPTIONS = set_attr_level="P30"; is_u_wind=true +OBS_VAR23_LEVELS = P3000.0 +FCST_VAR24_NAME = y_wind_0 +FCST_VAR24_LEVELS = "(@30,*,*)" +FCST_VAR24_OPTIONS = set_attr_level="P30"; is_v_wind=true +OBS_VAR24_NAME = VGRD +OBS_VAR24_OPTIONS = set_attr_level="P30"; is_v_wind=true +OBS_VAR24_LEVELS = P3000.0 + +#POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +#POINT_STAT_OUTPUT_PREFIX = Radiosonde_WindData_MPR_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False +OBS_POINT_STAT_INPUT_DIR = {INPUT_BASE_OBSERVATION} +#OBS_POINT_STAT_INPUT_DIR = + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] + +# Directory containing forecast input to PointStat +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_vec + +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadSonde.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_glu_sonde_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_sondestn_{lead?fmt=%3H}v.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Sonde_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[StnsNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_MPR_{MODEL}_Nearest_G000 + +[StnsBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_MPR_{MODEL}_Bilin_G000 diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Areas.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Areas.conf new file mode 100644 index 000000000..b1625b89e --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Areas.conf @@ -0,0 +1,303 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(AreasNear), PointStat(AreasBilin) + +# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only +LOG_POINT_STAT_VERBOSITY = 3 + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = -10800 +OBS_POINT_STAT_WINDOW_END = 10740 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = UPPERAIR + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = geopotential_height +FCST_VAR1_LEVELS = "(@1000,*,*)" +FCST_VAR1_OPTIONS = set_attr_level="P1000" +OBS_VAR1_NAME = Z +OBS_VAR1_OPTIONS = set_attr_level="P1000"; set_attr_units="m"; +OBS_VAR1_LEVELS = P100000.0 +FCST_VAR2_NAME = geopotential_height +FCST_VAR2_LEVELS = "(@850,*,*)" +FCST_VAR2_OPTIONS = set_attr_level="P850" +OBS_VAR2_NAME = Z +OBS_VAR2_OPTIONS = set_attr_level="P850"; set_attr_units="m"; +OBS_VAR2_LEVELS = P85000.0 +FCST_VAR3_NAME = geopotential_height +FCST_VAR3_LEVELS = "(@700,*,*)" +FCST_VAR3_OPTIONS = set_attr_level="P700" +OBS_VAR3_NAME = Z +OBS_VAR3_OPTIONS = set_attr_level="P700"; set_attr_units="m"; +OBS_VAR3_LEVELS = P70000.0 +FCST_VAR4_NAME = geopotential_height +FCST_VAR4_LEVELS = "(@500,*,*)" +FCST_VAR4_OPTIONS = set_attr_level="P500" +OBS_VAR4_NAME = Z +OBS_VAR4_OPTIONS = set_attr_level="P500"; set_attr_units="m"; +OBS_VAR4_LEVELS = P50000.0 +FCST_VAR5_NAME = geopotential_height +FCST_VAR5_LEVELS = "(@400,*,*)" +FCST_VAR5_OPTIONS = set_attr_level="P400" +OBS_VAR5_NAME = Z +OBS_VAR5_OPTIONS = set_attr_level="P400"; set_attr_units="m"; +OBS_VAR5_LEVELS = P40000.0 +FCST_VAR6_NAME = geopotential_height +FCST_VAR6_LEVELS = "(@300,*,*)" +FCST_VAR6_OPTIONS = set_attr_level="P300" +OBS_VAR6_NAME = Z +OBS_VAR6_OPTIONS = set_attr_level="P300"; set_attr_units="m"; +OBS_VAR6_LEVELS = P30000.0 +FCST_VAR7_NAME = geopotential_height +FCST_VAR7_LEVELS = "(@250,*,*)" +FCST_VAR7_OPTIONS = set_attr_level="P250" +OBS_VAR7_NAME = Z +OBS_VAR7_OPTIONS = set_attr_level="P250"; set_attr_units="m"; +OBS_VAR7_LEVELS = P25000.0 +FCST_VAR8_NAME = geopotential_height +FCST_VAR8_LEVELS = "(@200,*,*)" +FCST_VAR8_OPTIONS = set_attr_level="P200" +OBS_VAR8_NAME = Z +OBS_VAR8_OPTIONS = set_attr_level="P200"; set_attr_units="m"; +OBS_VAR8_LEVELS = P20000.0 +FCST_VAR9_NAME = geopotential_height +FCST_VAR9_LEVELS = "(@150,*,*)" +FCST_VAR9_OPTIONS = set_attr_level="P150" +OBS_VAR9_NAME = Z +OBS_VAR9_OPTIONS = set_attr_level="P150"; set_attr_units="m"; +OBS_VAR9_LEVELS = P15000.0 +FCST_VAR10_NAME = geopotential_height +FCST_VAR10_LEVELS = "(@100,*,*)" +FCST_VAR10_OPTIONS = set_attr_level="P100" +OBS_VAR10_NAME = Z +OBS_VAR10_OPTIONS = set_attr_level="P100"; set_attr_units="m"; +OBS_VAR10_LEVELS = P10000.0 +FCST_VAR11_NAME = geopotential_height +FCST_VAR11_LEVELS = "(@70,*,*)" +FCST_VAR11_OPTIONS = set_attr_level="P70" +OBS_VAR11_NAME = Z +OBS_VAR11_OPTIONS = set_attr_level="P70"; set_attr_units="m"; +OBS_VAR11_LEVELS = P7000.0 +FCST_VAR12_NAME = geopotential_height +FCST_VAR12_LEVELS = "(@30,*,*)" +FCST_VAR12_OPTIONS = set_attr_level="P30" +OBS_VAR12_NAME = Z +OBS_VAR12_OPTIONS = set_attr_level="P30"; set_attr_units="m"; +OBS_VAR12_LEVELS = P3000.0 +FCST_VAR13_NAME = air_temperature_0 +FCST_VAR13_LEVELS = "(@1000,*,*)" +FCST_VAR13_OPTIONS = set_attr_level="P1000" +OBS_VAR13_NAME = T +OBS_VAR13_OPTIONS = set_attr_level="P1000" +OBS_VAR13_LEVELS = P100000.0 +FCST_VAR14_NAME = air_temperature_0 +FCST_VAR14_LEVELS = "(@850,*,*)" +FCST_VAR14_OPTIONS = set_attr_level="P850" +OBS_VAR14_NAME = T +OBS_VAR14_OPTIONS = set_attr_level="P850" +OBS_VAR14_LEVELS = P85000.0 +FCST_VAR15_NAME = air_temperature_0 +FCST_VAR15_LEVELS = "(@700,*,*)" +FCST_VAR15_OPTIONS = set_attr_level="P700" +OBS_VAR15_NAME = T +OBS_VAR15_OPTIONS = set_attr_level="P700" +OBS_VAR15_LEVELS = P70000.0 +FCST_VAR16_NAME = air_temperature_0 +FCST_VAR16_LEVELS = "(@500,*,*)" +FCST_VAR16_OPTIONS = set_attr_level="P500" +OBS_VAR16_NAME = T +OBS_VAR16_OPTIONS = set_attr_level="P500" +OBS_VAR16_LEVELS = P50000.0 +FCST_VAR17_NAME = air_temperature_0 +FCST_VAR17_LEVELS = "(@400,*,*)" +FCST_VAR17_OPTIONS = set_attr_level="P400" +OBS_VAR17_NAME = T +OBS_VAR17_OPTIONS = set_attr_level="P400" +OBS_VAR17_LEVELS = P40000.0 +FCST_VAR18_NAME = air_temperature_0 +FCST_VAR18_LEVELS = "(@300,*,*)" +FCST_VAR18_OPTIONS = set_attr_level="P300" +OBS_VAR18_NAME = T +OBS_VAR18_OPTIONS = set_attr_level="P300" +OBS_VAR18_LEVELS = P30000.0 +FCST_VAR19_NAME = air_temperature_0 +FCST_VAR19_LEVELS = "(@250,*,*)" +FCST_VAR19_OPTIONS = set_attr_level="P250" +OBS_VAR19_NAME = T +OBS_VAR19_OPTIONS = set_attr_level="P250" +OBS_VAR19_LEVELS = P25000.0 +FCST_VAR20_NAME = air_temperature_0 +FCST_VAR20_LEVELS = "(@200,*,*)" +FCST_VAR20_OPTIONS = set_attr_level="P200" +OBS_VAR20_NAME = T +OBS_VAR20_OPTIONS = set_attr_level="P200" +OBS_VAR20_LEVELS = P20000.0 +FCST_VAR21_NAME = air_temperature_0 +FCST_VAR21_LEVELS = "(@150,*,*)" +FCST_VAR21_OPTIONS = set_attr_level="P150" +OBS_VAR21_NAME = T +OBS_VAR21_OPTIONS = set_attr_level="P150" +OBS_VAR21_LEVELS = P15000.0 +FCST_VAR22_NAME = air_temperature_0 +FCST_VAR22_LEVELS = "(@100,*,*)" +FCST_VAR22_OPTIONS = set_attr_level="P100" +OBS_VAR22_NAME = T +OBS_VAR22_OPTIONS = set_attr_level="P100" +OBS_VAR22_LEVELS = P10000.0 +FCST_VAR23_NAME = air_temperature_0 +FCST_VAR23_LEVELS = "(@70,*,*)" +FCST_VAR23_OPTIONS = set_attr_level="P70" +OBS_VAR23_NAME = T +OBS_VAR23_OPTIONS = set_attr_level="P70" +OBS_VAR23_LEVELS = P7000.0 +FCST_VAR24_NAME = air_temperature_0 +FCST_VAR24_LEVELS = "(@30,*,*)" +FCST_VAR24_OPTIONS = set_attr_level="P30" +OBS_VAR24_NAME = T +OBS_VAR24_OPTIONS = set_attr_level="P30" +OBS_VAR24_LEVELS = P3000.0 +FCST_VAR25_NAME = relative_humidity_0 +FCST_VAR25_LEVELS = "(@1000,*,*)" +FCST_VAR25_OPTIONS = set_attr_level="P1000" +OBS_VAR25_NAME = RH +OBS_VAR25_OPTIONS = set_attr_level="P1000" +OBS_VAR25_LEVELS = P100000.0 +FCST_VAR26_NAME = relative_humidity_0 +FCST_VAR26_LEVELS = "(@850,*,*)" +FCST_VAR26_OPTIONS = set_attr_level="P850" +OBS_VAR26_NAME = RH +OBS_VAR26_OPTIONS = set_attr_level="P850" +OBS_VAR26_LEVELS = P85000.0 +FCST_VAR27_NAME = relative_humidity_0 +FCST_VAR27_LEVELS = "(@700,*,*)" +FCST_VAR27_OPTIONS = set_attr_level="P700" +OBS_VAR27_NAME = RH +OBS_VAR27_OPTIONS = set_attr_level="P700" +OBS_VAR27_LEVELS = P70000.0 +FCST_VAR28_NAME = relative_humidity_0 +FCST_VAR28_LEVELS = "(@500,*,*)" +FCST_VAR28_OPTIONS = set_attr_level="P500" +OBS_VAR28_NAME = RH +OBS_VAR28_OPTIONS = set_attr_level="P500" +OBS_VAR28_LEVELS = P50000.0 +FCST_VAR29_NAME = relative_humidity_0 +FCST_VAR29_LEVELS = "(@400,*,*)" +FCST_VAR29_OPTIONS = set_attr_level="P400" +OBS_VAR29_NAME = RH +OBS_VAR29_OPTIONS = set_attr_level="P400" +OBS_VAR29_LEVELS = P40000.0 +FCST_VAR30_NAME = relative_humidity_0 +FCST_VAR30_LEVELS = "(@300,*,*)" +FCST_VAR30_OPTIONS = set_attr_level="P300" +OBS_VAR30_NAME = RH +OBS_VAR30_OPTIONS = set_attr_level="P300" +OBS_VAR30_LEVELS = P30000.0 +FCST_VAR31_NAME = relative_humidity_0 +FCST_VAR31_LEVELS = "(@250,*,*)" +FCST_VAR31_OPTIONS = set_attr_level="P250" +OBS_VAR31_NAME = RH +OBS_VAR31_OPTIONS = set_attr_level="P250" +OBS_VAR31_LEVELS = P25000.0 +FCST_VAR32_NAME = relative_humidity_0 +FCST_VAR32_LEVELS = "(@200,*,*)" +FCST_VAR32_OPTIONS = set_attr_level="P200" +OBS_VAR32_NAME = RH +OBS_VAR32_OPTIONS = set_attr_level="P200" +OBS_VAR32_LEVELS = P20000.0 +FCST_VAR33_NAME = relative_humidity_0 +FCST_VAR33_LEVELS = "(@150,*,*)" +FCST_VAR33_OPTIONS = set_attr_level="P150" +OBS_VAR33_NAME = RH +OBS_VAR33_OPTIONS = set_attr_level="P150" +OBS_VAR33_LEVELS = P15000.0 +FCST_VAR34_NAME = relative_humidity_0 +FCST_VAR34_LEVELS = "(@100,*,*)" +FCST_VAR34_OPTIONS = set_attr_level="P100" +OBS_VAR34_NAME = RH +OBS_VAR34_OPTIONS = set_attr_level="P100" +OBS_VAR34_LEVELS = P10000.0 +FCST_VAR35_NAME = relative_humidity_0 +FCST_VAR35_LEVELS = "(@70,*,*)" +FCST_VAR35_OPTIONS = set_attr_level="P70" +OBS_VAR35_NAME = RH +OBS_VAR35_OPTIONS = set_attr_level="P70" +OBS_VAR35_LEVELS = P7000.0 +FCST_VAR36_NAME = relative_humidity_0 +FCST_VAR36_LEVELS = "(@30,*,*)" +FCST_VAR36_OPTIONS = set_attr_level="P30" +OBS_VAR36_NAME = RH +OBS_VAR36_OPTIONS = set_attr_level="P30" +OBS_VAR36_LEVELS = P3000.0 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc,\ + {MET_AREA_DIR}/poly_umuk4.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2103.stns +POINT_STAT_MASK_LLPNT= + +OBS_POINT_STAT_INPUT_DIR = {INPUT_BASE_OBSERVATION} +#OBS_POINT_STAT_INPUT_DIR = +#POINT_STAT_OUTPUT_PREFIX = Radiosonde_{MODEL}_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# End of [config] section and start of [dir] section + +[dir] + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadSonde.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_glu_sonde_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_sonde_{lead?fmt=%3H}.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Sonde_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[AreasNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_{MODEL}_Nearest_G000 + +[AreasBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_{MODEL}_Bilin_G000 diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Stns.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Stns.conf new file mode 100644 index 000000000..9289624ab --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Sonde_Stns.conf @@ -0,0 +1,300 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(StnsNear), PointStat(StnsBilin) + +# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only +LOG_POINT_STAT_VERBOSITY = 3 + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = -10800 +OBS_POINT_STAT_WINDOW_END = 10740 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = 50101,50102,50201,50202 +#POINT_STAT_MESSAGE_TYPE = UPPERAIR + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. + +# MAY NEED TO MAKE THIS SLIGHTLY LARGER (?) +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +# 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 +file_type=NETCDF_NCCF +FCST_VAR1_NAME = geopotential_height +FCST_VAR1_LEVELS = "(@1000,*,*)" +FCST_VAR1_OPTIONS = set_attr_level="P1000"; set_attr_units="m"; +OBS_VAR1_NAME = Z +OBS_VAR1_OPTIONS = set_attr_level="P1000"; set_attr_units="m"; +OBS_VAR1_LEVELS = P100000.0 +FCST_VAR2_NAME = geopotential_height +FCST_VAR2_LEVELS = "(@850,*,*)" +FCST_VAR2_OPTIONS = set_attr_level="P850" +OBS_VAR2_NAME = Z +OBS_VAR2_OPTIONS = set_attr_level="P850"; set_attr_units="m"; +OBS_VAR2_LEVELS = P85000.0 +FCST_VAR3_NAME = geopotential_height +FCST_VAR3_LEVELS = "(@700,*,*)" +FCST_VAR3_OPTIONS = set_attr_level="P700" +OBS_VAR3_NAME = Z +OBS_VAR3_OPTIONS = set_attr_level="P700"; set_attr_units="m"; +OBS_VAR3_LEVELS = P70000.0 +FCST_VAR4_NAME = geopotential_height +FCST_VAR4_LEVELS = "(@500,*,*)" +FCST_VAR4_OPTIONS = set_attr_level="P500" +OBS_VAR4_NAME = Z +OBS_VAR4_OPTIONS = set_attr_level="P500"; set_attr_units="m"; +OBS_VAR4_LEVELS = P50000.0 +FCST_VAR5_NAME = geopotential_height +FCST_VAR5_LEVELS = "(@400,*,*)" +FCST_VAR5_OPTIONS = set_attr_level="P400" +OBS_VAR5_NAME = Z +OBS_VAR5_OPTIONS = set_attr_level="P400"; set_attr_units="m"; +OBS_VAR5_LEVELS = P40000.0 +FCST_VAR6_NAME = geopotential_height +FCST_VAR6_LEVELS = "(@300,*,*)" +FCST_VAR6_OPTIONS = set_attr_level="P300" +OBS_VAR6_NAME = Z +OBS_VAR6_OPTIONS = set_attr_level="P300"; set_attr_units="m"; +OBS_VAR6_LEVELS = P30000.0 +FCST_VAR7_NAME = geopotential_height +FCST_VAR7_LEVELS = "(@250,*,*)" +FCST_VAR7_OPTIONS = set_attr_level="P250" +OBS_VAR7_NAME = Z +OBS_VAR7_OPTIONS = set_attr_level="P250"; set_attr_units="m"; +OBS_VAR7_LEVELS = P25000.0 +FCST_VAR8_NAME = geopotential_height +FCST_VAR8_LEVELS = "(@200,*,*)" +FCST_VAR8_OPTIONS = set_attr_level="P200" +OBS_VAR8_NAME = Z +OBS_VAR8_OPTIONS = set_attr_level="P200"; set_attr_units="m"; +OBS_VAR8_LEVELS = P20000.0 +FCST_VAR9_NAME = geopotential_height +FCST_VAR9_LEVELS = "(@150,*,*)" +FCST_VAR9_OPTIONS = set_attr_level="P150" +OBS_VAR9_NAME = Z +OBS_VAR9_OPTIONS = set_attr_level="P150"; set_attr_units="m"; +OBS_VAR9_LEVELS = P15000.0 +FCST_VAR10_NAME = geopotential_height +FCST_VAR10_LEVELS = "(@100,*,*)" +FCST_VAR10_OPTIONS = set_attr_level="P100" +OBS_VAR10_NAME = Z +OBS_VAR10_OPTIONS = set_attr_level="P100"; set_attr_units="m"; +OBS_VAR10_LEVELS = P10000.0 +FCST_VAR11_NAME = geopotential_height +FCST_VAR11_LEVELS = "(@70,*,*)" +FCST_VAR11_OPTIONS = set_attr_level="P70" +OBS_VAR11_NAME = Z +OBS_VAR11_OPTIONS = set_attr_level="P70"; set_attr_units="m"; +OBS_VAR11_LEVELS = P7000.0 +FCST_VAR12_NAME = geopotential_height +FCST_VAR12_LEVELS = "(@30,*,*)" +FCST_VAR12_OPTIONS = set_attr_level="P30" +OBS_VAR12_NAME = Z +OBS_VAR12_OPTIONS = set_attr_level="P30"; set_attr_units="m"; +OBS_VAR12_LEVELS = P3000.0 +FCST_VAR13_NAME = air_temperature_0 +FCST_VAR13_LEVELS = "(@1000,*,*)" +FCST_VAR13_OPTIONS = set_attr_level="P1000" +OBS_VAR13_NAME = T +OBS_VAR13_OPTIONS = set_attr_level="P1000" +OBS_VAR13_LEVELS = P100000.0 +FCST_VAR14_NAME = air_temperature_0 +FCST_VAR14_LEVELS = "(@850,*,*)" +FCST_VAR14_OPTIONS = set_attr_level="P850" +OBS_VAR14_NAME = T +OBS_VAR14_OPTIONS = set_attr_level="P850" +OBS_VAR14_LEVELS = P85000.0 +FCST_VAR15_NAME = air_temperature_0 +FCST_VAR15_LEVELS = "(@700,*,*)" +FCST_VAR15_OPTIONS = set_attr_level="P700" +OBS_VAR15_NAME = T +OBS_VAR15_OPTIONS = set_attr_level="P700" +OBS_VAR15_LEVELS = P70000.0 +FCST_VAR16_NAME = air_temperature_0 +FCST_VAR16_LEVELS = "(@500,*,*)" +FCST_VAR16_OPTIONS = set_attr_level="P500" +OBS_VAR16_NAME = T +OBS_VAR16_OPTIONS = set_attr_level="P500" +OBS_VAR16_LEVELS = P50000.0 +FCST_VAR17_NAME = air_temperature_0 +FCST_VAR17_LEVELS = "(@400,*,*)" +FCST_VAR17_OPTIONS = set_attr_level="P400" +OBS_VAR17_NAME = T +OBS_VAR17_OPTIONS = set_attr_level="P400" +OBS_VAR17_LEVELS = P40000.0 +FCST_VAR18_NAME = air_temperature_0 +FCST_VAR18_LEVELS = "(@300,*,*)" +FCST_VAR18_OPTIONS = set_attr_level="P300" +OBS_VAR18_NAME = T +OBS_VAR18_OPTIONS = set_attr_level="P300" +OBS_VAR18_LEVELS = P30000.0 +FCST_VAR19_NAME = air_temperature_0 +FCST_VAR19_LEVELS = "(@250,*,*)" +FCST_VAR19_OPTIONS = set_attr_level="P250" +OBS_VAR19_NAME = T +OBS_VAR19_OPTIONS = set_attr_level="P250" +OBS_VAR19_LEVELS = P25000.0 +FCST_VAR20_NAME = air_temperature_0 +FCST_VAR20_LEVELS = "(@200,*,*)" +FCST_VAR20_OPTIONS = set_attr_level="P200" +OBS_VAR20_NAME = T +OBS_VAR20_OPTIONS = set_attr_level="P200" +OBS_VAR20_LEVELS = P20000.0 +FCST_VAR21_NAME = air_temperature_0 +FCST_VAR21_LEVELS = "(@150,*,*)" +FCST_VAR21_OPTIONS = set_attr_level="P150" +OBS_VAR21_NAME = T +OBS_VAR21_OPTIONS = set_attr_level="P150" +OBS_VAR21_LEVELS = P15000.0 +FCST_VAR22_NAME = air_temperature_0 +FCST_VAR22_LEVELS = "(@100,*,*)" +FCST_VAR22_OPTIONS = set_attr_level="P100" +OBS_VAR22_NAME = T +OBS_VAR22_OPTIONS = set_attr_level="P100" +OBS_VAR22_LEVELS = P10000.0 +FCST_VAR23_NAME = air_temperature_0 +FCST_VAR23_LEVELS = "(@70,*,*)" +FCST_VAR23_OPTIONS = set_attr_level="P70" +OBS_VAR23_NAME = T +OBS_VAR23_OPTIONS = set_attr_level="P70" +OBS_VAR23_LEVELS = P7000.0 +FCST_VAR24_NAME = air_temperature_0 +FCST_VAR24_LEVELS = "(@30,*,*)" +FCST_VAR24_OPTIONS = set_attr_level="P30" +OBS_VAR24_NAME = T +OBS_VAR24_OPTIONS = set_attr_level="P30" +OBS_VAR24_LEVELS = P3000.0 +FCST_VAR25_NAME = relative_humidity_0 +FCST_VAR25_LEVELS = "(@1000,*,*)" +FCST_VAR25_OPTIONS = set_attr_level="P1000" +OBS_VAR25_NAME = RH +OBS_VAR25_OPTIONS = set_attr_level="P1000" +OBS_VAR25_LEVELS = P100000.0 +FCST_VAR26_NAME = relative_humidity_0 +FCST_VAR26_LEVELS = "(@850,*,*)" +FCST_VAR26_OPTIONS = set_attr_level="P850" +OBS_VAR26_NAME = RH +OBS_VAR26_OPTIONS = set_attr_level="P850" +OBS_VAR26_LEVELS = P85000.0 +FCST_VAR27_NAME = relative_humidity_0 +FCST_VAR27_LEVELS = "(@700,*,*)" +FCST_VAR27_OPTIONS = set_attr_level="P700" +OBS_VAR27_NAME = RH +OBS_VAR27_OPTIONS = set_attr_level="P700" +OBS_VAR27_LEVELS = P70000.0 +FCST_VAR28_NAME = relative_humidity_0 +FCST_VAR28_LEVELS = "(@500,*,*)" +FCST_VAR28_OPTIONS = set_attr_level="P500" +OBS_VAR28_NAME = RH +OBS_VAR28_OPTIONS = set_attr_level="P500" +OBS_VAR28_LEVELS = P50000.0 +FCST_VAR29_NAME = relative_humidity_0 +FCST_VAR29_LEVELS = "(@400,*,*)" +FCST_VAR29_OPTIONS = set_attr_level="P400" +OBS_VAR29_NAME = RH +OBS_VAR29_OPTIONS = set_attr_level="P400" +OBS_VAR29_LEVELS = P40000.0 +FCST_VAR30_NAME = relative_humidity_0 +FCST_VAR30_LEVELS = "(@300,*,*)" +FCST_VAR30_OPTIONS = set_attr_level="P300" +OBS_VAR30_NAME = RH +OBS_VAR30_OPTIONS = set_attr_level="P300" +OBS_VAR30_LEVELS = P30000.0 +FCST_VAR31_NAME = relative_humidity_0 +FCST_VAR31_LEVELS = "(@250,*,*)" +FCST_VAR31_OPTIONS = set_attr_level="P250" +OBS_VAR31_NAME = RH +OBS_VAR31_OPTIONS = set_attr_level="P250" +OBS_VAR31_LEVELS = P25000.0 +FCST_VAR32_NAME = relative_humidity_0 +FCST_VAR32_LEVELS = "(@200,*,*)" +FCST_VAR32_OPTIONS = set_attr_level="P200" +OBS_VAR32_NAME = RH +OBS_VAR32_OPTIONS = set_attr_level="P200" +OBS_VAR32_LEVELS = P20000.0 +FCST_VAR33_NAME = relative_humidity_0 +FCST_VAR33_LEVELS = "(@150,*,*)" +FCST_VAR33_OPTIONS = set_attr_level="P150" +OBS_VAR33_NAME = RH +OBS_VAR33_OPTIONS = set_attr_level="P150" +OBS_VAR33_LEVELS = P15000.0 +FCST_VAR34_NAME = relative_humidity_0 +FCST_VAR34_LEVELS = "(@100,*,*)" +FCST_VAR34_OPTIONS = set_attr_level="P100" +OBS_VAR34_NAME = RH +OBS_VAR34_OPTIONS = set_attr_level="P100" +OBS_VAR34_LEVELS = P10000.0 +FCST_VAR35_NAME = relative_humidity_0 +FCST_VAR35_LEVELS = "(@70,*,*)" +FCST_VAR35_OPTIONS = set_attr_level="P70" +OBS_VAR35_NAME = RH +OBS_VAR35_OPTIONS = set_attr_level="P70" +OBS_VAR35_LEVELS = P7000.0 +FCST_VAR36_NAME = relative_humidity_0 +FCST_VAR36_LEVELS = "(@30,*,*)" +FCST_VAR36_OPTIONS = set_attr_level="P30" +OBS_VAR36_NAME = RH +OBS_VAR36_OPTIONS = set_attr_level="P30" +OBS_VAR36_LEVELS = P3000.0 + +#POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +#POINT_STAT_OUTPUT_PREFIX = Radiosonde_MPR_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False +OBS_POINT_STAT_INPUT_DIR = {INPUT_BASE_OBSERVATION} +#OBS_POINT_STAT_INPUT_DIR = + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadSonde.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_glu_sonde_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_sondestn_{lead?fmt=%3H}.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Sonde_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[StnsNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_MPR_{MODEL}_Nearest_G000 + +[StnsBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Radiosonde_MPR_{MODEL}_Bilin_G000 diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns.conf new file mode 100644 index 000000000..1cb8cedaf --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns.conf @@ -0,0 +1,144 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(StnsNear), PointStat(StnsBilin) + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_MESSAGE_TYPE = 10101,10102,10201,10202,10204,10210,10310 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. + +# MAY NEED TO MAKE THIS SLIGHTLY LARGER (?) +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = NONE +#POINT_STAT_OUTPUT_FLAG_CTC = NONE +#POINT_STAT_OUTPUT_FLAG_CTS = NONE +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_surfstn_{lead?fmt=%3H}_ukv.csv +#OBS_POINT_STAT_INPUT_TEMPLATE = SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[StnsNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Surface_MPR_{MODEL}_Nearest_G000 + +# 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 +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_pressure_at_sea_level +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PMSL"; set_attr_level="Z0" +OBS_VAR1_NAME = PMSL +OBS_VAR1_OPTIONS = +OBS_VAR1_LEVELS = Z0 +FCST_VAR2_NAME = air_temperature +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR2_NAME = TMP +OBS_VAR2_OPTIONS = set_attr_name="T2M" +OBS_VAR2_LEVELS = Z0 +FCST_VAR3_NAME = visibility_in_air +FCST_VAR3_LEVELS = "(*,*)" +FCST_VAR3_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR3_NAME = VIS +OBS_VAR3_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR3_LEVELS = Z0 +FCST_VAR4_NAME = cloud_area_fraction_assuming_maximum_random_overlap +FCST_VAR4_LEVELS = "(*,*)" +FCST_VAR4_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC" +OBS_VAR4_NAME = TCDC +OBS_VAR4_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8); +OBS_VAR4_LEVELS = Z0 +FCST_VAR5_NAME = m01s09i233 +FCST_VAR5_LEVELS = "(*,*)" +FCST_VAR5_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC_9233" +OBS_VAR5_NAME = TCDC +OBS_VAR5_OPTIONS = set_attr_level="Z0"; convert(a) = (a/8); +OBS_VAR5_LEVELS = Z0 +FCST_VAR6_NAME = relative_humidity +FCST_VAR6_LEVELS = "(*,*)" +FCST_VAR6_OPTIONS = set_attr_level="Z0"; set_attr_name="RH"; +OBS_VAR6_NAME = RH +OBS_VAR6_OPTIONS = set_attr_level="Z0" +OBS_VAR6_LEVELS = Z0 +FCST_VAR7_NAME = cloud_base_altitude_assuming_only_consider_cloud_area_fraction_greater_than_2p5_oktas +FCST_VAR7_LEVELS = "(*,*)" +FCST_VAR7_OPTIONS = set_attr_level="Z0"; set_attr_name="CLD_HGT2.5"; convert(x) = min(99999.0,1000 * FT_to_M(x)); +OBS_VAR7_NAME = CLD_HGT2.5 +OBS_VAR7_OPTIONS = set_attr_units="m"; +OBS_VAR7_LEVELS = Z0 +FCST_VAR8_NAME = wind_speed_of_gust +FCST_VAR8_LEVELS = "(*,*)" +FCST_VAR8_OPTIONS = set_attr_level="Z10"; +OBS_VAR8_NAME = GUST +OBS_VAR8_OPTIONS = set_attr_name="wind_speed_of_gust"; set_attr_units="m_s-1"; +OBS_VAR8_LEVELS = Z10 + + +[StnsBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Surface_MPR_{MODEL}_Bilin_G000 + +# fields to compare (only do those currently done within VER) +# 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 +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_pressure_at_sea_level +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PMSL"; set_attr_level="Z0" +OBS_VAR1_NAME = PMSL +OBS_VAR1_OPTIONS = +OBS_VAR1_LEVELS = Z0 +FCST_VAR2_NAME = air_temperature +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR2_NAME = TMP +OBS_VAR2_OPTIONS = set_attr_name="T2M" +OBS_VAR2_LEVELS = Z0 +FCST_VAR3_NAME = relative_humidity +FCST_VAR3_LEVELS = "(*,*)" +FCST_VAR3_OPTIONS = set_attr_level="Z0"; set_attr_name="RH"; +OBS_VAR3_NAME = RH +OBS_VAR3_OPTIONS = set_attr_level="Z0" +OBS_VAR3_LEVELS = Z0 + diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns0.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns0.conf new file mode 100644 index 000000000..cd5c34a67 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_Stns0.conf @@ -0,0 +1,90 @@ +[config] + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY = +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = air_pressure_at_sea_level +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PRMSL"; set_attr_level="Z0" +OBS_VAR1_NAME = PRMSL +OBS_VAR1_OPTIONS = +OBS_VAR1_LEVELS = Z0 +FCST_VAR2_NAME = air_temperature +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_OPTIONS = set_attr_name="T2M"; set_attr_level="Z0" +OBS_VAR2_NAME = TMP +OBS_VAR2_OPTIONS = set_attr_name="T2M" +OBS_VAR2_LEVELS = Z0 +FCST_VAR3_NAME = visibility_in_air +FCST_VAR3_LEVELS = "(*,*)" +FCST_VAR3_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR3_NAME = VIS +OBS_VAR3_OPTIONS = set_attr_name="vis"; set_attr_level="Z0"; +OBS_VAR3_LEVELS = Z0 +FCST_VAR4_NAME = cloud_area_fraction_assuming_maximum_random_overlap +FCST_VAR4_LEVELS = "(*,*)" +FCST_VAR4_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC" +OBS_VAR4_NAME = TCDC +OBS_VAR4_OPTIONS = set_attr_level="Z0" +OBS_VAR4_LEVELS = Z0 +FCST_VAR5_NAME = m01s09i233 +FCST_VAR5_LEVELS = "(*,*)" +FCST_VAR5_OPTIONS = set_attr_level="Z0"; set_attr_name="TCC_9233" +OBS_VAR5_NAME = TCDC +OBS_VAR5_OPTIONS = set_attr_level="Z0" +OBS_VAR5_LEVELS = Z0 +FCST_VAR6_NAME = relative_humidity +FCST_VAR6_LEVELS = "(*,*)" +FCST_VAR6_OPTIONS = set_attr_level="Z0"; set_attr_name="RH"; +OBS_VAR6_NAME = RH +OBS_VAR6_OPTIONS = set_attr_level="Z0" +OBS_VAR6_LEVELS = Z0 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. + +# MAY NEED TO MAKE THIS SLIGHTLY LARGER (?) +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = True + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = NONE +#POINT_STAT_OUTPUT_FLAG_CTC = NONE +#POINT_STAT_OUTPUT_FLAG_CTS = NONE +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_surfstn_{lead?fmt=%3H}_ukv.csv +OBS_POINT_STAT_INPUT_TEMPLATE = SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsPrecip6.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsPrecip6.conf new file mode 100644 index 000000000..65c074276 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsPrecip6.conf @@ -0,0 +1,390 @@ +[config] + +# List of applications to run - only PointStat for this case +#PROCESS_LIST = PCPCombine(six), PointStat, PointStat(Areas), PointStat(HiRA), PointStat(Srew), PointStat(SrewAreas), PointStat(SrewHiRA) +PROCESS_LIST = PCPCombine(six), PointStat, PointStat(Areas), PointStat(HiRA) + +# PCPCombine information +# You can run multiple versions of this in one job. You need to specify () +# after the process list step eg: PCPCombine(six) and then in the section here +# if you set a starting delimiter to match the bit in the () then that will +# be settings just for that part of the job. So you would have a [six] section +# below to store details just for the (six) job. Therefore you could potentially +# run more than one accum period in one job here!! +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_MESSAGE_TYPE = 10101,10102,10201,10202,10204,10210,10310 + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PRECIP6"; set_attr_level="A06" +OBS_VAR1_NAME = RAIN +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +#POINT_STAT_OUTPUT_PREFIX = SurfacePrecip_MPR_{MODEL}_G000 +#POINT_STAT_OUTPUT_PREFIX = Surface_6hrPrecip_MPR_{MODEL}_G000 +#POINT_STAT_OUTPUT_PREFIX = Surface_MPR_{MODEL}_G000 +POINT_STAT_OUTPUT_PREFIX = Surface_6hrPrecip_MPR_{MODEL}_Nearest_G000 +POINT_STAT_ONCE_PER_FIELD = False +#POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +#POINT_STAT_ONCE_PER_FIELD = True + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#FCST_POINT_STAT_INPUT_DIR = /scratch/cfrd/NGVER/netcdf_globalprecip/ +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_precip +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +FCST_POINT_STAT_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A6.nc + +FCST_PCP_COMBINE_METHOD = SUBTRACT +FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount +FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF +FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +[six] +# verbosity of PCPCombine MET output +LOG_PCP_COMBINE_VERBOSITY = 4 + +# If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +#FCST_PCP_COMBINE_METHOD = SUBTRACT + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 7d + +# Input data type of forecast input, only used if data is probabilistic to determine +# how to extract data from file +#FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF + +# This is the +FCST_PCP_COMBINE_USE_ZERO_ACCUM = True + +# List of input names corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +# List of input levels corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_LEVELS = "({valid?offset},*,*)" +FCST_PCP_COMBINE_INPUT_LEVELS = (*,*) + +# desired output accumulation to build with forecast input +# Units are in hours if not specified +# Corresponds to *_OUTPUT_NAME +FCST_PCP_COMBINE_OUTPUT_ACCUM = 6H + +# Name of output field name to write +#FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount + +# If running a MET tool comparison tool after PCPCombine, one can instead set FCST_VAR1_[NAME/LEVELS] to +# a value starting with A that corresponds to the desired accumulation to use in the comparison +# this value will be used to determine the accumulation to build with PCPCombine as well +# If FCST_PCP_COMBINE_OUTPUT_[NAME/ACCUM] are set, these variables take priority over +# FCST_VAR_[NAME/LEVELS] +#FCST_VAR1_NAME = APCP +#FCST_VAR1_LEVELS = 3H + +# End of [config] section and start of [dir] section +# input and output data directories +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE_FORECAST}_precip +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE_FORECAST}_precip + +# End of [dir] section and start of [filename_templates] section +# format of filenames +FCST_PCP_COMBINE_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d}_{init?fmt=%H}_{lead?fmt=%3H}.nc +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A6.nc + +[Areas] + +POINT_STAT_MESSAGE_TYPE = SURFACE + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PRECIP6"; set_attr_level="A06" +FCST_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] +OBS_VAR1_NAME = RAIN +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); +OBS_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_PREFIX = Surface_6hrPrecip_{MODEL}_Nearest_G000 +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[HiRA] + +POINT_STAT_MESSAGE_TYPE = SURFACE + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PRECIP6"; set_attr_level="A06" +OBS_VAR1_NAME = RAIN +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); hira={flag=true; width=[3]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.25, <0.5, <1.0, <2.0, <4.0, <8.0, <16.0, <32.0, <64.0];} + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID={MET_STN_DIR}/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{MODEL}_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[SrewAreas] + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="PRECIP6"; set_attr_level="A06" +FCST_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); +OBS_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_PREFIX = {MODEL}_6hrSrewPrecip_G000 +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[Srew] + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW6"; set_attr_level="A06" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); hira={flag=true; width=[3]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.25, <0.5, <1.0, <2.0, <4.0, <8.0, <16.0, <32.0, <64.0];} + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID= + +POINT_STAT_OUTPUT_PREFIX = {MODEL}_6hrSrewPrecip_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[SrewHiRA] + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW6"; set_attr_level="A06" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); hira={flag=true; width=[3]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.25, <0.5, <1.0, <2.0, <4.0, <8.0, <16.0, <32.0, <64.0];} + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID={MET_STN_DIR}/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew1.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew1.conf new file mode 100644 index 000000000..79d69bc3a --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew1.conf @@ -0,0 +1,267 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PCPCombine(one), PointStat(Srew), PointStat(SrewAreas), PointStat(SrewHiRA) + +# PCPCombine information +# You can run multiple versions of this in one job. You need to specify () +# after the process list step eg: PCPCombine(six) and then in the section here +# if you set a starting delimiter to match the bit in the () then that will +# be settings just for that part of the job. So you would have a [six] section +# below to store details just for the (six) job. Therefore you could potentially +# run more than one accum period in one job here!! +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW + +# 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 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +#POINT_STAT_OUTPUT_PREFIX = SurfacePrecip_MPR_{MODEL}_G000 +POINT_STAT_OUTPUT_PREFIX = Surface_1hrSrew_MPR_{MODEL}_Nearest_G000 +#POINT_STAT_OUTPUT_PREFIX = Surface_MPR_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False +#POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +#POINT_STAT_ONCE_PER_FIELD = True + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#FCST_POINT_STAT_INPUT_DIR = /scratch/cfrd/NGVER/netcdf_globalprecip/ +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_srew +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +FCST_POINT_STAT_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A1.nc + +FCST_PCP_COMBINE_METHOD = SUBTRACT +FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount +FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF +FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +[one] +# verbosity of PCPCombine MET output +LOG_PCP_COMBINE_VERBOSITY = 4 + +# If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +#FCST_PCP_COMBINE_METHOD = SUBTRACT + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 7d + +# Input data type of forecast input, only used if data is probabilistic to determine +# how to extract data from file +#FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF + +# This is the +FCST_PCP_COMBINE_USE_ZERO_ACCUM = True + +# List of input names corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +# List of input levels corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_LEVELS = "({valid?offset},*,*)" +FCST_PCP_COMBINE_INPUT_LEVELS = (*,*) + +# desired output accumulation to build with forecast input +# Units are in hours if not specified +# Corresponds to *_OUTPUT_NAME +FCST_PCP_COMBINE_OUTPUT_ACCUM = 1H + +# Name of output field name to write +#FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount + +# If running a MET tool comparison tool after PCPCombine, one can instead set FCST_VAR1_[NAME/LEVELS] to +# a value starting with A that corresponds to the desired accumulation to use in the comparison +# this value will be used to determine the accumulation to build with PCPCombine as well +# If FCST_PCP_COMBINE_OUTPUT_[NAME/ACCUM] are set, these variables take priority over +# FCST_VAR_[NAME/LEVELS] +#FCST_VAR1_NAME = APCP +#FCST_VAR1_LEVELS = 3H + +# End of [config] section and start of [dir] section +# input and output data directories +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE_FORECAST}_precip +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE_FORECAST}_srew + +# End of [dir] section and start of [filename_templates] section +# format of filenames +FCST_PCP_COMBINE_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d}_{init?fmt=%H}_{lead?fmt=%3H}.nc +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A1.nc + +[SrewAreas] + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW1"; set_attr_level="A01" +FCST_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A1 +OBS_VAR1_OPTIONS = set_attr_level="A01";convert(x) = max(0,x); +OBS_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_PREFIX = Surface_1hrSrew_{MODEL}_Nearest_G000 +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[Srew] + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW1"; set_attr_level="A01" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A1 +OBS_VAR1_OPTIONS = set_attr_level="A01";convert(x) = max(0,x); + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID= + +#POINT_STAT_OUTPUT_PREFIX = {MODEL}_1hrSrewPrecip_G000 +POINT_STAT_OUTPUT_PREFIX = Surface_1hrSrewPrecip_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[SrewHiRA] + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW1"; set_attr_level="A01" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A1 +OBS_VAR1_OPTIONS = set_attr_level="A01";convert(x) = max(0,x); hira={flag=true; width=[3]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.25, <0.5, <1.0, <2.0, <4.0, <8.0, <16.0, <32.0, <64.0];} + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID={MET_STN_DIR}/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew12.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew12.conf new file mode 100644 index 000000000..eddce185a --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew12.conf @@ -0,0 +1,137 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PCPCombine(twelve), PointStat + +# PCPCombine information +# You can run multiple versions of this in one job. You need to specify () +# after the process list step eg: PCPCombine(six) and then in the section here +# if you set a starting delimiter to match the bit in the () then that will +# be settings just for that part of the job. So you would have a [six] section +# below to store details just for the (six) job. Therefore you could potentially +# run more than one accum period in one job here!! +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = 10500 +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW12"; set_attr_level="A12" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A12 +OBS_VAR1_OPTIONS = set_attr_level="A12";convert(x) = max(0,x); + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +POINT_STAT_OUTPUT_PREFIX = Surface_12hrSrew_MPR_{MODEL}_Nearest_G000 +POINT_STAT_ONCE_PER_FIELD = False +#POINT_STAT_ONCE_PER_FIELD = True + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_srew +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +FCST_POINT_STAT_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A12.nc + +FCST_PCP_COMBINE_METHOD = SUBTRACT +FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount +FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF +FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +[twelve] +# verbosity of PCPCombine MET output +LOG_PCP_COMBINE_VERBOSITY = 4 + +# If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +#FCST_PCP_COMBINE_METHOD = SUBTRACT + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 7d + +# Input data type of forecast input, only used if data is probabilistic to determine +# how to extract data from file +#FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF + +# This is the +FCST_PCP_COMBINE_USE_ZERO_ACCUM = True + +# List of input names corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +# List of input levels corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_LEVELS = "({valid?offset},*,*)" +FCST_PCP_COMBINE_INPUT_LEVELS = (*,*) + +# desired output accumulation to build with forecast input +# Units are in hours if not specified +# Corresponds to *_OUTPUT_NAME +FCST_PCP_COMBINE_OUTPUT_ACCUM = 12H + +# Name of output field name to write +#FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount + +# If running a MET tool comparison tool after PCPCombine, one can instead set FCST_VAR1_[NAME/LEVELS] to +# a value starting with A that corresponds to the desired accumulation to use in the comparison +# this value will be used to determine the accumulation to build with PCPCombine as well +# If FCST_PCP_COMBINE_OUTPUT_[NAME/ACCUM] are set, these variables take priority over +# FCST_VAR_[NAME/LEVELS] +#FCST_VAR1_NAME = APCP +#FCST_VAR1_LEVELS = 3H + +# End of [config] section and start of [dir] section +# input and output data directories +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE_FORECAST}_precip +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE_FORECAST}_srew + +# End of [dir] section and start of [filename_templates] section +# format of filenames +FCST_PCP_COMBINE_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d}_{init?fmt=%H}_{lead?fmt=%3H}.nc +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A12.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew24.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew24.conf new file mode 100644 index 000000000..21ecfd43a --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew24.conf @@ -0,0 +1,137 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PCPCombine(twentyfour), PointStat + +# PCPCombine information +# You can run multiple versions of this in one job. You need to specify () +# after the process list step eg: PCPCombine(six) and then in the section here +# if you set a starting delimiter to match the bit in the () then that will +# be settings just for that part of the job. So you would have a [six] section +# below to store details just for the (six) job. Therefore you could potentially +# run more than one accum period in one job here!! +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = 10500 +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW24"; set_attr_level="A24" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A24 +OBS_VAR1_OPTIONS = set_attr_level="A12";convert(x) = max(0,x); + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +POINT_STAT_OUTPUT_PREFIX = Surface_24hrSrew_MPR_{MODEL}_Nearest_G000 +POINT_STAT_ONCE_PER_FIELD = False +#POINT_STAT_ONCE_PER_FIELD = True + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_srew +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +FCST_POINT_STAT_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A24.nc + +FCST_PCP_COMBINE_METHOD = SUBTRACT +FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount +FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF +FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +[twentyfour] +# verbosity of PCPCombine MET output +LOG_PCP_COMBINE_VERBOSITY = 4 + +# If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +#FCST_PCP_COMBINE_METHOD = SUBTRACT + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 7d + +# Input data type of forecast input, only used if data is probabilistic to determine +# how to extract data from file +#FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF + +# This is the +FCST_PCP_COMBINE_USE_ZERO_ACCUM = True + +# List of input names corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +# List of input levels corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_LEVELS = "({valid?offset},*,*)" +FCST_PCP_COMBINE_INPUT_LEVELS = (*,*) + +# desired output accumulation to build with forecast input +# Units are in hours if not specified +# Corresponds to *_OUTPUT_NAME +FCST_PCP_COMBINE_OUTPUT_ACCUM = 24H + +# Name of output field name to write +#FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount + +# If running a MET tool comparison tool after PCPCombine, one can instead set FCST_VAR1_[NAME/LEVELS] to +# a value starting with A that corresponds to the desired accumulation to use in the comparison +# this value will be used to determine the accumulation to build with PCPCombine as well +# If FCST_PCP_COMBINE_OUTPUT_[NAME/ACCUM] are set, these variables take priority over +# FCST_VAR_[NAME/LEVELS] +#FCST_VAR1_NAME = APCP +#FCST_VAR1_LEVELS = 3H + +# End of [config] section and start of [dir] section +# input and output data directories +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE_FORECAST}_precip +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE_FORECAST}_srew + +# End of [dir] section and start of [filename_templates] section +# format of filenames +FCST_PCP_COMBINE_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d}_{init?fmt=%H}_{lead?fmt=%3H}.nc +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A24.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew6.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew6.conf new file mode 100644 index 000000000..e7fbec5e1 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_StnsSrew6.conf @@ -0,0 +1,285 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PCPCombine(six), PointStat(Srew), PointStat(SrewAreas), PointStat(SrewHiRA) + +# PCPCombine information +# You can run multiple versions of this in one job. You need to specify () +# after the process list step eg: PCPCombine(six) and then in the section here +# if you set a starting delimiter to match the bit in the () then that will +# be settings just for that part of the job. So you would have a [six] section +# below to store details just for the (six) job. Therefore you could potentially +# run more than one accum period in one job here!! +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +# 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 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +#POINT_STAT_OUTPUT_PREFIX = SurfacePrecip_MPR_{MODEL}_G000 +POINT_STAT_OUTPUT_PREFIX = Surface_6hrSrew_MPR_{MODEL}_Nearest_G000 +#POINT_STAT_OUTPUT_PREFIX = Surface_MPR_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False +#POINT_STAT_OUTPUT_PREFIX = {CURRENT_FCST_NAME}_{MODEL}_G000 +#POINT_STAT_ONCE_PER_FIELD = True + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section + +[dir] +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#FCST_POINT_STAT_INPUT_DIR = /scratch/cfrd/NGVER/netcdf_globalprecip/ +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_srew +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +FCST_POINT_STAT_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A6.nc + +FCST_PCP_COMBINE_METHOD = SUBTRACT +FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount +FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF +FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +[six] +# verbosity of PCPCombine MET output +LOG_PCP_COMBINE_VERBOSITY = 4 + +# If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +#FCST_PCP_COMBINE_METHOD = SUBTRACT + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 7d + +# Input data type of forecast input, only used if data is probabilistic to determine +# how to extract data from file +#FCST_PCP_COMBINE_INPUT_DATATYPE = NETCDF + +# This is the +FCST_PCP_COMBINE_USE_ZERO_ACCUM = True + +# List of input names corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_NAMES = precipitation_amount + +# List of input levels corresponding to each accumulation in *_INPUT_ACCUMS +# Can be left blank if using GRIB input +#FCST_PCP_COMBINE_INPUT_LEVELS = "({valid?offset},*,*)" +FCST_PCP_COMBINE_INPUT_LEVELS = (*,*) + +# desired output accumulation to build with forecast input +# Units are in hours if not specified +# Corresponds to *_OUTPUT_NAME +FCST_PCP_COMBINE_OUTPUT_ACCUM = 6H + +# Name of output field name to write +#FCST_PCP_COMBINE_OUTPUT_NAME = precipitation_amount + +# If running a MET tool comparison tool after PCPCombine, one can instead set FCST_VAR1_[NAME/LEVELS] to +# a value starting with A that corresponds to the desired accumulation to use in the comparison +# this value will be used to determine the accumulation to build with PCPCombine as well +# If FCST_PCP_COMBINE_OUTPUT_[NAME/ACCUM] are set, these variables take priority over +# FCST_VAR_[NAME/LEVELS] +#FCST_VAR1_NAME = APCP +#FCST_VAR1_LEVELS = 3H + +# End of [config] section and start of [dir] section +# input and output data directories +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE_FORECAST}_precip +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE_FORECAST}_srew + +# End of [dir] section and start of [filename_templates] section +# format of filenames +FCST_PCP_COMBINE_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d}_{init?fmt=%H}_{lead?fmt=%3H}.nc +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d%H}_f{lead?fmt=%HHH}_A6.nc + +[SrewAreas] + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW +#POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW6"; set_attr_level="A06" +FCST_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); +OBS_VAR1_THRESH = [<=0.1999, <=0.4999, <=0.9999, <=3.999, <=7.999, <=15.999] + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_PREFIX = Surface_6hrSrew_{MODEL}_Nearest_G000 +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[Srew] + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW6"; set_attr_level="A06" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); + +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID= + +POINT_STAT_OUTPUT_PREFIX = Surface_6hrSrew_{MODEL}_Nearest_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 =NONE +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = NONE +POINT_STAT_OUTPUT_FLAG_RPS = NONE +POINT_STAT_OUTPUT_FLAG_ORANK = NONE +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[SrewHiRA] + +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SREW +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SREW"; val = "10500"; } + +# 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 + +#file_type=NETCDF_NCCF +FCST_VAR1_NAME = precipitation_amount +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_name="SREW6"; set_attr_level="A06" +OBS_VAR1_NAME = SREW +OBS_VAR1_LEVELS = A6 +OBS_VAR1_OPTIONS = set_attr_level="A06";convert(x) = max(0,x); hira={flag=true; width=[3]; vld_thresh = 1.0; shape = SQUARE; cov_thresh = [ ==0.1 ];prob_cat_thresh = [<0.25, <0.5, <1.0, <2.0, <4.0, <8.0, <16.0, <32.0, <64.0];} + +POINT_STAT_MASK_POLY = +POINT_STAT_MASK_SID={MET_STN_DIR}/2015.stns + +POINT_STAT_OUTPUT_PREFIX = HiRA_{CURRENT_FCST_NAME}_{MODEL}_G000 + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +POINT_STAT_OUTPUT_FLAG_ECNT = BOTH +POINT_STAT_OUTPUT_FLAG_RPS = BOTH +POINT_STAT_OUTPUT_FLAG_ORANK = BOTH +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = Srew_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Areas.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Areas.conf new file mode 100644 index 000000000..86a4104d3 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Areas.conf @@ -0,0 +1,96 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(AreasNear), PointStat(AreasBilin) + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = -99 + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = x_wind +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_THRESH = [<=5.0, <=10.0, <=13.0, <=17.5] +FCST_VAR1_OPTIONS = set_attr_level="Z10"; is_u_wind=true +OBS_VAR1_NAME = UGRD +OBS_VAR1_OPTIONS = set_attr_level="Z10"; is_u_wind=true +OBS_VAR1_THRESH = [<=5.0, <=10.0, <=13.0, <=17.5] +OBS_VAR1_LEVELS = Z10 +FCST_VAR2_NAME = y_wind +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_THRESH = [<=5.0, <=10.0, <=13.0, <=17.5] +FCST_VAR2_OPTIONS = set_attr_level="Z10"; is_v_wind=true +OBS_VAR2_NAME = VGRD +OBS_VAR2_OPTIONS = set_attr_level="Z10"; is_v_wind=true +OBS_VAR2_THRESH = [<=5.0, <=10.0, <=13.0, <=17.5] +OBS_VAR2_LEVELS = Z10 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY={MET_AREA_DIR}/poly_umukv.nc +POINT_STAT_MASK_SID={MET_STN_DIR}/2011.stns, + {MET_STN_DIR}/2014.stns, + {MET_STN_DIR}/2015.stns, + {MET_STN_DIR}/2020.stns, + {MET_STN_DIR}/2024.stns, + {MET_STN_DIR}/2103.stns +POINT_STAT_MASK_LLPNT= + +#POINT_STAT_OUTPUT_PREFIX = Surface_WindData_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False + +# Select the type of output file(s) you wish to create +POINT_STAT_OUTPUT_FLAG_FHO = BOTH +POINT_STAT_OUTPUT_FLAG_CTC = BOTH +POINT_STAT_OUTPUT_FLAG_CTS = BOTH +POINT_STAT_OUTPUT_FLAG_MCTC = BOTH +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = BOTH +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# End of [config] section and start of [dir] section +[dir] + +# Directory containing forecast input to PointStat +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_vec + +# End of [dir] section and start of [filename_templates] section + +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_surf_{lead?fmt=%3H}v.csv True +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[AreasNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Surface_WindData_{MODEL}_Nearest_G000 + +[AreasBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Surface_WindData_{MODEL}_Bilin_G000 diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Stns.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Stns.conf new file mode 100644 index 000000000..131ad948a --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/PointStat_UKV_SurfV_Stns.conf @@ -0,0 +1,86 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat(StnsNear), PointStat(StnsBilin) + +# Selection of qc flag entries to include in the output. +# Leave blank to include everything +# Need to directly match what is stored in obs file (include leading zeros if present) +POINT_STAT_OBS_QUALITY_INC = +POINT_STAT_OBS_QUALITY_EXC = + +# 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 + +file_type=NETCDF_NCCF +FCST_VAR1_NAME = x_wind +FCST_VAR1_LEVELS = "(*,*)" +FCST_VAR1_OPTIONS = set_attr_level="Z10"; is_u_wind=true +OBS_VAR1_NAME = UGRD +OBS_VAR1_OPTIONS = set_attr_level="Z10"; is_u_wind=true +OBS_VAR1_LEVELS = Z10 +FCST_VAR2_NAME = y_wind +FCST_VAR2_LEVELS = "(*,*)" +FCST_VAR2_OPTIONS = set_attr_level="Z10"; is_v_wind=true +OBS_VAR2_NAME = VGRD +OBS_VAR2_OPTIONS = set_attr_level="Z10"; is_v_wind=true +OBS_VAR2_LEVELS = Z10 + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +POINT_STAT_MASK_POLY = {MET_AREA_DIR}/poly_umukv.nc + +#POINT_STAT_OUTPUT_PREFIX = Surface_WindData_MPR_{MODEL}_G000 +POINT_STAT_ONCE_PER_FIELD = False + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = NONE +#POINT_STAT_OUTPUT_FLAG_CTC = NONE +#POINT_STAT_OUTPUT_FLAG_CTS = NONE +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = NONE +POINT_STAT_OUTPUT_FLAG_SL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = NONE +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = BOTH + +# End of [config] section and start of [dir] section +[dir] + +# Directory containing forecast input to PointStat +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST}_vec + +# End of [dir] section and start of [filename_templates] section + +[filename_templates] + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = {ODBSCRIPT_DIR}/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_surfstn_{lead?fmt=%3H}v.csv +#OBS_POINT_STAT_INPUT_TEMPLATE = SurfaceStn_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc +OBS_POINT_STAT_INPUT_TEMPLATE = Surface_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z.nc + +[StnsNear] + +POINT_STAT_INTERP_TYPE_METHOD = NEAREST +POINT_STAT_INTERP_TYPE_WIDTH = 1 +POINT_STAT_OUTPUT_PREFIX = Surface_WindData_MPR_{MODEL}_Nearest_G000 + +[StnsBilin] + +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 +POINT_STAT_OUTPUT_PREFIX = Surface_WindData_MPR_{MODEL}_Bilin_G000 diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_MET_UKV.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_MET_UKV.conf new file mode 100755 index 000000000..5d865fefa --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_MET_UKV.conf @@ -0,0 +1,177 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Point-Stat configuration file. +// +// For additional information, see the MET_BASE/config/README file. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +// model = +${METPLUS_MODEL} + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +// desc = +${METPLUS_DESC} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +// regrid = { +${METPLUS_REGRID_DICT} + +//////////////////////////////////////////////////////////////////////////////// + +// +// May be set separately in each "field" entry +// +censor_thresh = []; +censor_val = []; +cat_thresh = [ NA ]; +cnt_thresh = [ NA ]; +cnt_logic = UNION; +wind_thresh = [ NA ]; +wind_logic = UNION; +eclv_points = 0.05; +rank_corr_flag = FALSE; + +// +// Forecast and observation fields to be verified +// +fcst = { + ${METPLUS_FCST_FIELD} +} + +obs = { + ${METPLUS_OBS_FIELD} +} +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation filtering options +// May be set separately in each "obs.field" entry +// +// message_type = +${METPLUS_MESSAGE_TYPE} +sid_exc = []; +//obs_quality = +${METPLUS_OBS_QUALITY_INC} +${METPLUS_OBS_QUALITY_EXC} +duplicate_flag = NONE; +//obs_summary = NONE; +obs_summary = NEAREST; +obs_perc_value = 50; + +// +// Mapping of message type group name to comma-separated list of values. +// +${METPLUS_MESSAGE_TYPE_GROUP_MAP} +//message_type_group_map = [ +// { key = "SURFACE"; val = "11600,10101,10102,10201,10202,10204,10210,10310"; }, +// { key = "UPPERAIR"; val = "50101,50102"; }, +// { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, +// { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, +// { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }, +// { key = "LANDSF"; val = "ADPSFC,MSONET"; }, +// { key = "WATERSF"; val = "SFCSHP"; } +//]; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Climatology data +// +//climo_mean = { +${METPLUS_CLIMO_MEAN_DICT} + + +//climo_stdev = { +${METPLUS_CLIMO_STDEV_DICT} + +// +// May be set separately in each "obs.field" entry +// +//climo_cdf = { +${METPLUS_CLIMO_CDF_DICT} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +// obs_window = { +${METPLUS_OBS_WINDOW_DICT} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + ${METPLUS_MASK_GRID} + ${METPLUS_MASK_POLY} + ${METPLUS_MASK_SID} + ${METPLUS_MASK_LLPNT} +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Confidence interval settings +// +ci_alpha = [ 0.05 ]; + +boot = { + interval = PCTILE; + rep_prop = 1.0; + n_rep = 0; + rng = "mt19937"; + seed = ""; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +//interp = { +${METPLUS_INTERP_DICT} + +//////////////////////////////////////////////////////////////////////////////// + +// +// HiRA verification method +// +hira = { + flag = FALSE; + width = [ 2, 3, 4, 5 ]; + vld_thresh = 1.0; + cov_thresh = [ ==0.25 ]; + shape = SQUARE; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +//output_flag = { +${METPLUS_OUTPUT_FLAG_DICT} + +//////////////////////////////////////////////////////////////////////////////// + +tmp_dir = "/tmp"; +// output_prefix = +${METPLUS_OUTPUT_PREFIX} +//version = "V10.0.0"; + +//////////////////////////////////////////////////////////////////////////////// + +${METPLUS_MET_CONFIG_OVERRIDES} diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_METplus_UKV.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_METplus_UKV.conf new file mode 100755 index 000000000..49109afd9 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/Pointstat_METplus_UKV.conf @@ -0,0 +1,195 @@ +[config] + +# List of applications to run - only PointStat for this case +PROCESS_LIST = PointStat + +# 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 = VALID + +# Format of VALID_BEG and VALID_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 +VALID_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match VALID_TIME_FMT +VALID_BEG = {TIMESTRING} + +# End time for METplus run - must match VALID_TIME_FMT +VALID_END = {TIMESTRING} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +VALID_INCREMENT = 60M + +# 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 = {FCAST_LEADS} + +# 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 = processes + +# Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only +LOG_POINT_STAT_VERBOSITY = 3 + +# Location of MET config file to pass to GridStat +# References PARM_BASE which is the location of the parm directory corresponding +# to the ush directory of the master_metplus.py script that is called +# or the value of the environment variable METPLUS_PARM_BASE if set +POINT_STAT_CONFIG_FILE = {ADD_CONFIG} + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = -1800 +OBS_POINT_STAT_WINDOW_END = 1800 + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 + +# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. +MODEL = METO_UKV +OBTYPE = METO + +# Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) +POINT_STAT_REGRID_TO_GRID = NONE + +POINT_STAT_OUTPUT_PREFIX = {MODEL}_G000 + +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + +# Verification Masking regions +# Indicate which grid and polygon masking region, if applicable +POINT_STAT_GRID = + +# List of full path to poly masking files. NOTE: Only short lists of poly +# files work (those that fit on one line), a long list will result in an +# environment variable that is too long, resulting in an error. For long +# lists of poly masking files (i.e. all the mask files in the NCEP_mask +# directory), define these in the MET point_stat configuration file. +#POINT_STAT_MASK_POLY = /data/users/cfrd/METplus_playaround/AreaMasks/poly_globe.nc +#POINT_STAT_MASK_POLY = /data/users/cfrd/METplus_playaround/AreaMasks/poly_umukv.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umafr.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_ummde.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umper.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umit4.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umflk.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umge4.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umlv4.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umsam.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umuk4.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_umnae.nc,\ +# /data/users/cfrd/METplus_playaround/AreaMasks/poly_area2.nc +#POINT_STAT_MASK_SID=/data/users/cfrd/METplus_playaround/StationLists/2011.stns, +# /data/users/cfrd/METplus_playaround/StationLists/2014.stns, +# /data/users/cfrd/METplus_playaround/StationLists/2015.stns, +# /data/users/cfrd/METplus_playaround/StationLists/2103.stns +#POINT_STAT_MASK_LLPNT={ name = "111"; lat_thresh = >=20; lon_thresh = NA; }, +# { name = "112"; lat_thresh = <=20&&>=-20; lon_thresh = NA; }, +# { name = "113"; lat_thresh = <=-20; lon_thresh = NA; }, +# { name = "114"; lat_thresh = <=-30; lon_thresh = NA; }, +# { name = "115"; lat_thresh = <=30&&>=-30; lon_thresh = NA; }, +# { name = "116"; lat_thresh = <=-30; lon_thresh = NA; }, +# { name = "141"; lat_thresh = >=25&&<=60; lon_thresh = >=-145&&<=-50; }, +# { name = "142"; lat_thresh = >=25&&<=70; lon_thresh = >=-10&&<=28; }, +# { name = "143"; lat_thresh = >=25&&<=65; lon_thresh = >=60&&<=145; }, +# { name = "144"; lat_thresh = >=-55&&<=-10; lon_thresh = >=90&&<=180; }, +# { name = "146"; lat_thresh = <=40&&>=-40; lon_thresh = >=-20&&<=52; }, +# { name = "161"; lat_thresh = <=20&&>=-20; lon_thresh = >0&&<=60; }, +# { name = "162"; lat_thresh = <=20&&>=-20; lon_thresh = >60&&<=120; }, +# { name = "163"; lat_thresh = <=20&&>=-20; lon_thresh = >120&&<=180; }, +# { name = "164"; lat_thresh = <=20&&>=-20; lon_thresh = >-180&&<=-120; }, +# { name = "165"; lat_thresh = <=20&&>=-20; lon_thresh = >-120&&<=-60; }, +# { name = "166"; lat_thresh = <=20&&>=-20; lon_thresh = >-60&&<=0; }, +# { name = "173"; lat_thresh = >=60; lon_thresh = NA; }, +# { name = "174"; lat_thresh = <=-60; lon_thresh = NA; } + +# Message types, if all message types are to be returned, leave this empty, +# otherwise indicate the message types of interest. +POINT_STAT_MESSAGE_TYPE = SURFACE +POINT_STAT_MESSAGE_TYPE_GROUP_MAP = { key = "SURFACE"; val = "11600,10101,10102,10201,10202,10204,10210,10310"; }, { key = "10101"; val = "10101"; }, { key = "10102"; val = "10102"; }, { key = "10201"; val = "10201"; }, { key = "10202"; val = "10202"; }, { key = "10204"; val = "10204"; }, { key = "10210"; val = "10210"; }, { key = "10310"; val = "10310"; }, { key = "SREW"; val = "10500"; }, { key = "UPPERAIR"; val = "50101,50102,50201,50202"; }, { key = "50101"; val = "50101"; }, { key = "50102"; val = "50102"; }, { key = "50201"; val = "50201"; }, { key = "50202"; val = "50202"; }, { key = "AIRC_AM"; val = "30100"; }, { key = "AIRC_AI"; val = "30200"; }, { key = "AIRC_ALL"; val = "30100,30200"; }, { key = "SATW"; val = "22501,22505,22503,23531,23502,23053,23501,23532"; } + +# Variables and levels as specified in the field dictionary of the MET +# point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION + +# 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 + + +# End of [config] section and start of [dir] section +[dir] +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE_FORECAST} +OBS_POINT_STAT_INPUT_DIR = {INPUT_BASE_OBSERVATION} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + + +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE_RES} + + +# Select the type of output file(s) you wish to create +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = BOTH +POINT_STAT_OUTPUT_FLAG_SL1L2 = BOTH +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = NONE +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +POINT_STAT_OUTPUT_FLAG_MPR = NONE + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = prods_op_ukv_{init?fmt=%Y%m%d}_{init?fmt=%H}_{lead?fmt=%3H}.nc + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +#OBS_POINT_STAT_INPUT_TEMPLATE = PYTHON_NUMPY = /data/users/cfrd/METplus_playaround/PythonScripts/PointStat_ReadODB.py {INPUT_BASE_OBSERVATION}/{valid?fmt=%Y%m%d}T{valid?fmt=%H%M}Z_ukv_surface_odb2 {INPUT_BASE_OBSERVATION}/{MODEL}_{valid?fmt=%Y%m%d}T{valid?fmt=%H}00Z_{lead?fmt=%3H}_ukv.csv + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +POINT_STAT_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d} + diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/pointstat_wrapper.sh b/cset-workflow/app/metplus_point_stat/file/metoffice/pointstat_wrapper.sh new file mode 100755 index 000000000..79de95f86 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/pointstat_wrapper.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +############################################################################# +# Wrapper script to run pointstat +############################################################################# + +#no set -xeu as check errors in next task + +#no set -xeu as check errors in next task +export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/data/users/cfrd/MET_requirements/MET9/lib/:/usr/lib64/:/net/project/ukmo/scitools/opt_scitools/conda/deployments/default-current/lib + +#run_pointstat.py +if [[ ${AREA_STN} == "StnsPrecip" || ${AREA_STN} == "StnsSrew" || ${AREA_STN} == "UKStnsSrew" ]]; then + if [[ ${FCASTRANGE} -lt 6 ]]; then + echo "No need to run this step" > ${ROSE_TASK_LOG_ROOT%job}met.out + else + #run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}6.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${INTERP}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}6.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + + set -xeu + + unset LD_LIBRARY_PATH + echo "linking METplus output logs to ${ROSE_TASK_LOG_ROOT%job}met.out" + LINKFILE=$(ls -Art ${MET_OUTPUT}/logs | tail -n 1) + ln -s ${MET_OUTPUT}/logs/${LINKFILE} ${ROSE_TASK_LOG_ROOT%job}met.out + #creates a link (ln) between the MET output logs and the suite logs so that the MET logs appear in the same location and can be read in rose bush + fi + +elif [[ ${AREA_STN} == "StnsSrew1" ]]; then + if [[ ${FCASTRANGE} -lt 1 ]]; then + echo "No need to run this step" > ${ROSE_TASK_LOG_ROOT%job}met.out + else + run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${INTERP}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + + set -xeu + + unset LD_LIBRARY_PATH + echo "linking METplus output logs to ${ROSE_TASK_LOG_ROOT%job}met.out" + LINKFILE=$(ls -Art ${MET_OUTPUT}/logs | tail -n 1) + ln -s ${MET_OUTPUT}/logs/${LINKFILE} ${ROSE_TASK_LOG_ROOT%job}met.out + #creates a link (ln) between the MET output logs and the suite logs so that the MET logs appear in the same location and can be read in rose bush + fi + +elif [[ ${AREA_STN} == "StnsPrecip12" || ${AREA_STN} == "StnsSrew12" ]]; then + if [[ ${FCASTRANGE} -lt 12 ]]; then + echo "No need to run this step" > ${ROSE_TASK_LOG_ROOT%job}met.out + else + run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${INTERP}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + + set -xeu + + unset LD_LIBRARY_PATH + echo "linking METplus output logs to ${ROSE_TASK_LOG_ROOT%job}met.out" + LINKFILE=$(ls -Art ${MET_OUTPUT}/logs | tail -n 1) + ln -s ${MET_OUTPUT}/logs/${LINKFILE} ${ROSE_TASK_LOG_ROOT%job}met.out + #creates a link (ln) between the MET output logs and the suite logs so that the MET logs appear in the same location and can be read in rose bush + fi + +elif [[ ${AREA_STN} == "StnsPrecip24" || ${AREA_STN} == "StnsSrew24" ]]; then + if [[ ${FCASTRANGE} -lt 24 ]]; then + echo "No need to run this step" > ${ROSE_TASK_LOG_ROOT%job}met.out + else + run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${INTERP}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + + set -xeu + + unset LD_LIBRARY_PATH + echo "linking METplus output logs to ${ROSE_TASK_LOG_ROOT%job}met.out" + LINKFILE=$(ls -Art ${MET_OUTPUT}/logs | tail -n 1) + ln -s ${MET_OUTPUT}/logs/${LINKFILE} ${ROSE_TASK_LOG_ROOT%job}met.out + #creates a link (ln) between the MET output logs and the suite logs so that the MET logs appear in the same location and can be read in rose bush + fi + +elif [[ ${AREA_STN} == "SurfaceScalar" || ${AREA_STN} == "SurfaceScalarNoHiRA" || ${AREA_STN} == "SurfaceVector" ]]; then + run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PSAll}_${AREA_STN}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + + set -xeu + + unset LD_LIBRARY_PATH + echo "linking METplus output logs to ${ROSE_TASK_LOG_ROOT%job}met.out" + LINKFILE=$(ls -Art ${MET_OUTPUT}/logs | tail -n 1) + ln -s ${MET_OUTPUT}/logs/${LINKFILE} ${ROSE_TASK_LOG_ROOT%job}met.out + #creates a link (ln) between the MET output logs and the suite logs so that the MET logs appear in the same location and can be read in rose bush + +else + run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + #run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${MODEL}_${AREA_STN}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${INTERP}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + #run_metplus.py -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/${METplus_config_PS} -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/PointStat_${INTERP}.conf -c ${CYLC_SUITE_DEF_PATH}/app/${ROSE_TASK_APP}/bin/user_system_local.conf + + set -xeu + + unset LD_LIBRARY_PATH + echo "linking METplus output logs to ${ROSE_TASK_LOG_ROOT%job}met.out" + LINKFILE=$(ls -Art ${MET_OUTPUT}/logs | tail -n 1) + ln -s ${MET_OUTPUT}/logs/${LINKFILE} ${ROSE_TASK_LOG_ROOT%job}met.out + #creates a link (ln) between the MET output logs and the suite logs so that the MET logs appear in the same location and can be read in rose bush + +fi + +# Finally test whether or not the step returned an error or not +echo "Checking: " ${ROSE_TASK_LOG_ROOT%job}met.out +echo "" +if [[ $( grep -r "ERROR: METplus has finished running " ${ROSE_TASK_LOG_ROOT%job}met.out ) ]] ; then + echo " Error found within step: Check the met.out file for details" + exit 1 +else + echo " No errors found" + exit 0 +fi diff --git a/cset-workflow/app/metplus_point_stat/file/metoffice/user_system_local.conf b/cset-workflow/app/metplus_point_stat/file/metoffice/user_system_local.conf new file mode 100755 index 000000000..573864d87 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/file/metoffice/user_system_local.conf @@ -0,0 +1,22 @@ +[dir] +# any {ENV[]} variable is defined within [env] section of the rose-app.conf + +INPUT_BASE_FORECAST = {ENV[PNT_FCST]} +INPUT_BASE_OBSERVATION = {ENV[PNT_OBVS]} + +OUTPUT_BASE={ENV[MET_OUTPUT]} +OUTPUT_BASE_RES={ENV[MET_OUTPUT_RES]} + +MET_INSTALL_DIR={ENV[VERSION_MET]} + +MET_AREA_DIR={ENV[AREA_DIR]} +MET_STN_DIR={ENV[STN_DIR]} +ODBSCRIPT_DIR={ENV[READ_ODB]} + +# TIMESTRING is linked to whattime in rose-app.conf, linked to the suite.rc so that the time formats in the suite.rc and the METplus' PointStat.conf match up. +TIMESTRING={ENV[DATESTAMP]} + +FCAST_LEADS={ENV[FCASTRANGE]} + +# Additional config files required to run Pointstat +ADD_CONFIG={ENV[ADD_CONFIG_PS]}/{ENV[MET_config_PS]} diff --git a/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf b/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf new file mode 100644 index 000000000..4f792c2a6 --- /dev/null +++ b/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf @@ -0,0 +1,7 @@ +[command] +default=app_env_wrapper metoffice/pointstat_wrapper.sh + +[env] +CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} +METPLUS_FCST_DIR = ${METPLUS_FCST_DIR} +TASK_INIT_TIME = ${TASK_INIT_TIME} From fa8404bd761387dfc0b91b91ad60fde6a54e5345 Mon Sep 17 00:00:00 2001 From: Jorge Bornemann Date: Mon, 9 Dec 2024 10:00:06 +0000 Subject: [PATCH 8/8] enable iterating over point-stat statistics --- .../opt/rose-app-metoffice.conf | 2 + .../includes/metplus_point_stat.cylc | 56 +++++++++++++++++++ cset-workflow/includes/point_stat.cylc | 45 --------------- 3 files changed, 58 insertions(+), 45 deletions(-) create mode 100644 cset-workflow/includes/metplus_point_stat.cylc delete mode 100644 cset-workflow/includes/point_stat.cylc diff --git a/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf b/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf index 4f792c2a6..3aec7d71f 100644 --- a/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf +++ b/cset-workflow/app/metplus_point_stat/opt/rose-app-metoffice.conf @@ -2,6 +2,8 @@ default=app_env_wrapper metoffice/pointstat_wrapper.sh [env] +AREA_STN =${metplus_stat} CONDA_VENV_LOCATION = ${CONDA_METPLUS_VENV_LOCATION} METPLUS_FCST_DIR = ${METPLUS_FCST_DIR} +MODEL = UKV TASK_INIT_TIME = ${TASK_INIT_TIME} diff --git a/cset-workflow/includes/metplus_point_stat.cylc b/cset-workflow/includes/metplus_point_stat.cylc new file mode 100644 index 000000000..bbd6d3c93 --- /dev/null +++ b/cset-workflow/includes/metplus_point_stat.cylc @@ -0,0 +1,56 @@ +{% if METPLUS_POINT_STAT|default(False) %} +[scheduling] + [[graph]] + {% if CSET_CYCLING_MODE == "case_study" %} + # Runs for every forecast initiation time to process the data in parallel. + {% for date in CSET_CASE_DATES %} + R1/{{date}} = """ + {% for metplus_obs_type in METPLUS_OBS_TYPES %} + metplus_ascii2nc_{{metplus_obs_type}} + {% endfor %} + {% for metplus_stat in METPLUS_POINTSTAT_STATS %} + [METPLUS_ASCII2NC]:suceed-all => metplus_point_stat_{{metplus_stat}} => housekeeping_full + {% endfor %} + """ + {% endfor %} + {% elif CSET_CYCLING_MODE == "trial" %} + # Analyse from each forecast. + {{CSET_TRIAL_CYCLE_PERIOD}} = """ + {% for metplus_obs_type in METPLUS_OBS_TYPES %} + metplus_ascii2nc_{{metplus_obs_type}} + {% endfor %} + {% for metplus_stat in METPLUS_POINTSTAT_STATS %} + [METPLUS_ASCII2NC]:suceed-all => metplus_point_stat_{{metplus_stat}} => housekeeping_full + {% endfor %} + """ + {% endif %} + +[runtime] + [[METPLUS_ASCII2NC]] + # Family to group the ascii2nc tasks for all the obs types + inherit = METPLUS_ASCII2NC + + {% for metplus_obs_type in METPLUS_OBS_TYPES %} + [[metplus_ascii2nc_{{metplus_obs_type}}]] + # Runs METplus wrappers for ASCII to nc ingestion of obs. + # Note that the setting of FORECAST_LENGTH maight be done better in the gui using metadata + inherit = METPLUS_ASCII2NC + [[[environment]]] + TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) + TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H --offset-hours={{FORECAST_LENGHT}}) + FORECAST_LENGTH = {{FORECAST_LENGHT}} + ROSE_TASK_APP = metplus_ascii2nc + metplus_obs_type = {{metplus_obs_type}} + {% endfor %} + + {% for metplus_stat in METPLUS_POINTSTAT_STATS %} + [[metplus_point_stat_{{metplus_stat}}]] + # Runs METplus wrappers for point stat calculations. + inherit = METPLUS + [[[environment]]] + TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) + FORECAST_LENGTH = {{FORECAST_LENGHT}} + ROSE_TASK_APP = metplus_point_stat + metplus_stat = {{metplus_stat}} + {% endfor %} +{% endif %} diff --git a/cset-workflow/includes/point_stat.cylc b/cset-workflow/includes/point_stat.cylc deleted file mode 100644 index 6ed3492eb..000000000 --- a/cset-workflow/includes/point_stat.cylc +++ /dev/null @@ -1,45 +0,0 @@ -{% if METPLUS_POINT_STAT|default(False) %} -[scheduling] - [[graph]] - {% for metplus_obs_type in METPLUS_OBS_TYPES %} - {% if CSET_CYCLING_MODE == "case_study" %} - # Runs for every forecast initiation time to process the data in parallel. - {% for date in CSET_CASE_DATES %} - R1/{{date}} = """ - metplus_ascii2nc_{{metplus_obs_type}} => metplus_point_stat_{{metplus_obs_type}} => housekeeping_full - """ - {% endfor %} - {% elif CSET_CYCLING_MODE == "trial" %} - # Analyse from each forecast. - {{CSET_TRIAL_CYCLE_PERIOD}} = """ - metplus_ascii2nc_{{metplus_obs_type}} => metplus_point_stat_{{metplus_obs_type}} => housekeeping_full - """ - {% endif %} - {% endfor %} - -[runtime] - {% for metplus_obs_type in METPLUS_OBS_TYPES %} - [[metplus_ascii2nc__{{metplus_obs_type}}]] - # Runs METplus wrappers for ASCII to nc ingestion of obs. - # Note that the setting of FORECAST_LENGTH maight be done better in the gui using metadata - inherit = METPLUS - [[[environment]]] - TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) - {% if CSET_CYCLING_MODE == "case_study" %} - TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H --offset-hours={{FORECAST_LENGHT}}) - FORECAST_LENGTH = {{FORECAST_LENGHT}} - {% elif CSET_CYCLING_MODE == "trial" %} - TASK_END_TIME = $(cylc cycle-point --template=%Y%m%d%H) - FORECAST_LENGTH = 0 - {% endif %} - metplus_obs_type = {{metplus_obs_type}} - - [[metplus_point_stat]] - # Runs METplus wrappers for point stat calculations. - inherit = METPLUS - [[[environment]]] - TASK_INIT_TIME = $(cylc cycle-point --template=%Y%m%d%H) - FORECAST_LENGTH = {{FORECAST_LENGHT}} - metplus_obs_type = {{metplus_obs_type}} - -{% endif %}