From 12dc91a6342bff41c70298e454f779b1d7b99b59 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 30 Aug 2021 15:52:32 -0600 Subject: [PATCH 01/43] Per issue #1858: changed parse_conf_obs_qty to parse_conf_obs_qty_inc. Added new function parse_conf_obs_qty_exc. SL --- met/src/basic/vx_config/config_util.cc | 16 +++++++++++++--- met/src/basic/vx_config/config_util.h | 3 ++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index 5e8e8593b9..bc52e68ffd 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -766,10 +766,20 @@ vector parse_conf_llpnt_mask(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// -StringArray parse_conf_obs_qty(Dictionary *dict) { - const char *method_name = "parse_conf_obs_qty() -> "; +StringArray parse_conf_obs_qty_inc(Dictionary *dict) { + const char *method_name = "parse_conf_obs_qty_inc() -> "; - StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty, method_name); + StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty_inc, method_name); + + return(sa); +} + +/////////////////////////////////////////////////////////////////////////////// + +StringArray parse_conf_obs_qty_exc(Dictionary *dict) { + const char *method_name = "parse_conf_obs_qty_exc() -> "; + + StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty_exc, method_name); return(sa); } diff --git a/met/src/basic/vx_config/config_util.h b/met/src/basic/vx_config/config_util.h index a17d2badd3..5e83b2c6aa 100644 --- a/met/src/basic/vx_config/config_util.h +++ b/met/src/basic/vx_config/config_util.h @@ -40,7 +40,8 @@ extern StringArray parse_conf_sid_list(Dictionary *dict, const char *); extern void parse_sid_mask(const ConcatString &, StringArray &, ConcatString &); extern vector parse_conf_llpnt_mask(Dictionary *dict); -extern StringArray parse_conf_obs_qty(Dictionary *dict); +extern StringArray parse_conf_obs_qty_inc(Dictionary *dict); +extern StringArray parse_conf_obs_qty_exc(Dictionary *dict); extern NumArray parse_conf_ci_alpha(Dictionary *dict); extern NumArray parse_conf_eclv_points(Dictionary *dict); extern ClimoCDFInfo parse_conf_climo_cdf(Dictionary *dict); From 4b72fb9324fabb6fd8b394be1239dc0644e823de Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 30 Aug 2021 15:56:22 -0600 Subject: [PATCH 02/43] Per issue #1858: changed conf_key_obs_qty to conf_key_obs_qty_inc. Added conf_key_obs_qty_exc. SL --- met/src/basic/vx_config/config_constants.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/met/src/basic/vx_config/config_constants.h b/met/src/basic/vx_config/config_constants.h index 81bd59589e..e327163e43 100644 --- a/met/src/basic/vx_config/config_constants.h +++ b/met/src/basic/vx_config/config_constants.h @@ -532,7 +532,8 @@ static const char conf_key_GRIB_ens[] = "GRIB_ens"; static const char conf_key_message_type[] = "message_type"; static const char conf_key_sid_inc[] = "sid_inc"; static const char conf_key_sid_exc[] = "sid_exc"; -static const char conf_key_obs_qty[] = "obs_quality"; +static const char conf_key_obs_qty_inc[] = "obs_quality_inc"; +static const char conf_key_obs_qty_exc[] = "obs_quality_exc"; static const char conf_key_convert[] = "convert"; static const char conf_key_censor_thresh[] = "censor_thresh"; static const char conf_key_censor_val[] = "censor_val"; From 4a2f3b225ff71cb6bb6fc9a5463f1d3b126211ba Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 30 Aug 2021 16:17:38 -0600 Subject: [PATCH 03/43] Per issue #1858: modified vx_pd.set_obs_qty_filt() to use parse_conf_obs_qty_inc() instead of parse_conf_obs_qty(). SL --- met/src/tools/core/point_stat/point_stat_conf_info.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat_conf_info.cc b/met/src/tools/core/point_stat/point_stat_conf_info.cc index dd0d13dee1..57d52ddb92 100644 --- a/met/src/tools/core/point_stat/point_stat_conf_info.cc +++ b/met/src/tools/core/point_stat/point_stat_conf_info.cc @@ -916,8 +916,8 @@ void PointStatVxOpt::process_config(GrdFileType ftype, // Conf: sid_exc vx_pd.set_sid_exc_filt(parse_conf_sid_list(&odict, conf_key_sid_exc)); - // Conf: obs_qty - vx_pd.set_obs_qty_filt(parse_conf_obs_qty(&odict)); + // Conf: obs_qty_inc + vx_pd.set_obs_qty_filt(parse_conf_obs_qty_inc(&odict)); return; } From e0a4a48060dd0133ac908cfdb72baadd91ff02ce Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 31 Aug 2021 15:43:26 -0600 Subject: [PATCH 04/43] Per issue #1858: added back the original parse_conf_obs_qty() function for backward compatibility. SL --- met/src/basic/vx_config/config_util.cc | 10 ++++++++++ met/src/basic/vx_config/config_util.h | 1 + 2 files changed, 11 insertions(+) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index bc52e68ffd..af913edc93 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -766,6 +766,16 @@ vector parse_conf_llpnt_mask(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// +StringArray parse_conf_obs_qty(Dictionary *dict) { + const char *method_name = "parse_conf_obs_qty() -> "; + + StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty, method_name); + + return(sa); +} + +/////////////////////////////////////////////////////////////////////////////// + StringArray parse_conf_obs_qty_inc(Dictionary *dict) { const char *method_name = "parse_conf_obs_qty_inc() -> "; diff --git a/met/src/basic/vx_config/config_util.h b/met/src/basic/vx_config/config_util.h index 5e83b2c6aa..896e0ff9e1 100644 --- a/met/src/basic/vx_config/config_util.h +++ b/met/src/basic/vx_config/config_util.h @@ -40,6 +40,7 @@ extern StringArray parse_conf_sid_list(Dictionary *dict, const char *); extern void parse_sid_mask(const ConcatString &, StringArray &, ConcatString &); extern vector parse_conf_llpnt_mask(Dictionary *dict); +extern StringArray parse_conf_obs_qty(Dictionary *dict); extern StringArray parse_conf_obs_qty_inc(Dictionary *dict); extern StringArray parse_conf_obs_qty_exc(Dictionary *dict); extern NumArray parse_conf_ci_alpha(Dictionary *dict); From 3256a2cd17972b73ddb737caf36b8d954ff746fd Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 31 Aug 2021 15:45:01 -0600 Subject: [PATCH 05/43] Per issue #1858: added back config_constants.h for backwards compatibility. SL --- met/src/basic/vx_config/config_constants.h | 1 + 1 file changed, 1 insertion(+) diff --git a/met/src/basic/vx_config/config_constants.h b/met/src/basic/vx_config/config_constants.h index e327163e43..f296920425 100644 --- a/met/src/basic/vx_config/config_constants.h +++ b/met/src/basic/vx_config/config_constants.h @@ -532,6 +532,7 @@ static const char conf_key_GRIB_ens[] = "GRIB_ens"; static const char conf_key_message_type[] = "message_type"; static const char conf_key_sid_inc[] = "sid_inc"; static const char conf_key_sid_exc[] = "sid_exc"; +static const char conf_key_obs_qty[] = "obs_quality"; static const char conf_key_obs_qty_inc[] = "obs_quality_inc"; static const char conf_key_obs_qty_exc[] = "obs_quality_exc"; static const char conf_key_convert[] = "convert"; From 1abc2efd789e58a69e10e92cc0c355e7c99e3b54 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 31 Aug 2021 15:48:17 -0600 Subject: [PATCH 06/43] Per issue #1858: added code to read in obs_qty_inc instead of obs_qty. Also added in code for backwards compatibility to check for obs_qty (obs_quality) and use that for obs_qty_inc. SL --- .../core/point_stat/point_stat_conf_info.cc | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/met/src/tools/core/point_stat/point_stat_conf_info.cc b/met/src/tools/core/point_stat/point_stat_conf_info.cc index 57d52ddb92..9ebf0a6899 100644 --- a/met/src/tools/core/point_stat/point_stat_conf_info.cc +++ b/met/src/tools/core/point_stat/point_stat_conf_info.cc @@ -917,8 +917,31 @@ void PointStatVxOpt::process_config(GrdFileType ftype, vx_pd.set_sid_exc_filt(parse_conf_sid_list(&odict, conf_key_sid_exc)); // Conf: obs_qty_inc - vx_pd.set_obs_qty_filt(parse_conf_obs_qty_inc(&odict)); + // Check for old "obs_quality" field + StringArray obs_qty_sa = odict.lookup_string_array(conf_key_obs_qty); + //cout << "obs_qty_sa = " << write_css(obs_qty_sa) << "\n"; + cout << "obs_qty_sa.n() = " << obs_qty_sa.n() << "\n"; + + // Send warning if "obs_quality" is still being used + // Use it instead of "obs_quality_inc" if it is in config file + if(obs_qty_sa.n() > 0){ + mlog << Warning << "\nPointStatVxOpt::process_config() -> " + << "The field \"" + << conf_key_obs_qty + << "\" is deprecated " + << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; + + vx_pd.set_obs_qty_filt(parse_conf_obs_qty(&odict)); + + } else { + cout << "Using " << conf_key_obs_qty_inc << "\n"; + vx_pd.set_obs_qty_filt(parse_conf_obs_qty_inc(&odict)); + } + + // Conf: obs_qty_exc + + return; } From f82966e069114bf2775a4aa729135d7ecf06eccf Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 8 Sep 2021 10:49:58 -0600 Subject: [PATCH 07/43] Changed obs_qty_filt to obs_qty_inc_filt. Added obs_qty_exc_filt, including relevant function. SL --- .../libcode/vx_statistics/pair_data_point.cc | 25 +++++++++++++------ .../libcode/vx_statistics/pair_data_point.h | 10 +++++--- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/met/src/libcode/vx_statistics/pair_data_point.cc b/met/src/libcode/vx_statistics/pair_data_point.cc index daa40d1e9d..1d0f79f3fb 100644 --- a/met/src/libcode/vx_statistics/pair_data_point.cc +++ b/met/src/libcode/vx_statistics/pair_data_point.cc @@ -372,7 +372,8 @@ void VxPairDataPoint::clear() { climo_sd_dpa.clear(); sid_inc_filt.clear(); sid_exc_filt.clear(); - obs_qty_filt.clear(); + obs_qty_inc_filt.clear(); + obs_qty_exc_filt.clear(); mpr_column.clear(); mpr_thresh.clear(); @@ -433,7 +434,8 @@ void VxPairDataPoint::assign(const VxPairDataPoint &vx_pd) { sid_inc_filt = vx_pd.sid_inc_filt; sid_exc_filt = vx_pd.sid_exc_filt; - obs_qty_filt = vx_pd.obs_qty_filt; + obs_qty_inc_filt = vx_pd.obs_qty_inc_filt; + obs_qty_exc_filt = vx_pd.obs_qty_exc_filt; mpr_column = vx_pd.mpr_column; mpr_thresh = vx_pd.mpr_thresh; @@ -629,9 +631,18 @@ void VxPairDataPoint::set_sid_exc_filt(const StringArray &sa) { //////////////////////////////////////////////////////////////////////// -void VxPairDataPoint::set_obs_qty_filt(const StringArray &sa) { +void VxPairDataPoint::set_obs_qty_inc_filt(const StringArray &sa) { - obs_qty_filt = sa; + obs_qty_inc_filt = sa; + + return; +} + +//////////////////////////////////////////////////////////////////////// + +void VxPairDataPoint::set_obs_qty_exc_filt(const StringArray &sa) { + + obs_qty_exc_filt = sa; return; } @@ -914,10 +925,10 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, } // Check if the observation quality flag is included in the list - if(obs_qty_filt.n() && strcmp(obs_qty, "")) { + if(obs_qty_inc_filt.n() && strcmp(obs_qty, "")) { bool qty_match = false; - for(i=0; i Date: Wed, 8 Sep 2021 11:18:28 -0600 Subject: [PATCH 08/43] Per issue #1858 added vx_pd.set_obs_qty_exc_filt. SL --- met/src/tools/core/point_stat/point_stat_conf_info.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat_conf_info.cc b/met/src/tools/core/point_stat/point_stat_conf_info.cc index 9ebf0a6899..b437e21f7f 100644 --- a/met/src/tools/core/point_stat/point_stat_conf_info.cc +++ b/met/src/tools/core/point_stat/point_stat_conf_info.cc @@ -931,16 +931,15 @@ void PointStatVxOpt::process_config(GrdFileType ftype, << "\" is deprecated " << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; - vx_pd.set_obs_qty_filt(parse_conf_obs_qty(&odict)); + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty(&odict)); } else { cout << "Using " << conf_key_obs_qty_inc << "\n"; - vx_pd.set_obs_qty_filt(parse_conf_obs_qty_inc(&odict)); + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); } - - - // Conf: obs_qty_exc + // Conf: obs_qty_exc + vx_pd.set_obs_qty_exc_filt(parse_conf_obs_qty_exc(&odict)); return; } From f7f76ca922f038a794520f1a687fc2198e5e6cea Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 8 Sep 2021 15:08:15 -0600 Subject: [PATCH 09/43] In add_point_obs() added if block to apply obs_qty_exc_filt. SL --- .../libcode/vx_statistics/pair_data_point.cc | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/met/src/libcode/vx_statistics/pair_data_point.cc b/met/src/libcode/vx_statistics/pair_data_point.cc index 1d0f79f3fb..9998d11cc9 100644 --- a/met/src/libcode/vx_statistics/pair_data_point.cc +++ b/met/src/libcode/vx_statistics/pair_data_point.cc @@ -913,6 +913,7 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, // Check whether the GRIB code for the observation matches // the specified code + //cout << "var_name = " << var_name << endl; if((var_name != 0) && (0 < strlen(var_name))) { if(var_name != obs_info->name()) { rej_var++; @@ -924,14 +925,32 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, return; } - // Check if the observation quality flag is included in the list + cout << "CHECK before applying quality include and exclude flags" << endl; + + // Check if the observation quality include flag is in the list if(obs_qty_inc_filt.n() && strcmp(obs_qty, "")) { bool qty_match = false; for(i=0; i Date: Thu, 9 Sep 2021 15:12:22 -0600 Subject: [PATCH 10/43] Per issue #1858, in add_point_obs(), cleaned up sections that apply obs_qty_inc and obs_qty_exc filters. Fixed spacing issue. SL --- .../libcode/vx_statistics/pair_data_point.cc | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/met/src/libcode/vx_statistics/pair_data_point.cc b/met/src/libcode/vx_statistics/pair_data_point.cc index 575df8d428..1cb08adc65 100644 --- a/met/src/libcode/vx_statistics/pair_data_point.cc +++ b/met/src/libcode/vx_statistics/pair_data_point.cc @@ -913,30 +913,25 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, // Check whether the GRIB code for the observation matches // the specified code - cout << "var_name = " << var_name << endl; if((var_name != 0) && (0 < strlen(var_name))) { - if(var_name != obs_info->name()) { - rej_var++; - return; - } + if(var_name != obs_info->name()) { + rej_var++; + return; + } } else if(obs_info->code() != nint(obs_arr[1])) { - rej_var++; - return; + rej_var++; + return; } - - cout << "CHECK before applying quality include and exclude flags" << endl; // Check if the observation quality include flag is in the list if(obs_qty_inc_filt.n() && strcmp(obs_qty, "")) { bool qty_match = false; for(i=0; i end_ut) { From 94e2287fba6a3f64432d252eb7bc913054190b80 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Thu, 9 Sep 2021 15:30:58 -0600 Subject: [PATCH 11/43] Per issue #1858 in process_config(), cleaned up sections that set obs_qty_inc_filt and obs_qty_exc_filt. Fixed spacing issue. SL --- .../core/point_stat/point_stat_conf_info.cc | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat_conf_info.cc b/met/src/tools/core/point_stat/point_stat_conf_info.cc index b437e21f7f..128ddf2190 100644 --- a/met/src/tools/core/point_stat/point_stat_conf_info.cc +++ b/met/src/tools/core/point_stat/point_stat_conf_info.cc @@ -919,24 +919,17 @@ void PointStatVxOpt::process_config(GrdFileType ftype, // Conf: obs_qty_inc // Check for old "obs_quality" field StringArray obs_qty_sa = odict.lookup_string_array(conf_key_obs_qty); - //cout << "obs_qty_sa = " << write_css(obs_qty_sa) << "\n"; - cout << "obs_qty_sa.n() = " << obs_qty_sa.n() << "\n"; - // Send warning if "obs_quality" is still being used // Use it instead of "obs_quality_inc" if it is in config file if(obs_qty_sa.n() > 0){ - mlog << Warning << "\nPointStatVxOpt::process_config() -> " - << "The field \"" - << conf_key_obs_qty - << "\" is deprecated " - << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; - - vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty(&odict)); - - } else { - cout << "Using " << conf_key_obs_qty_inc << "\n"; - vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); - } + mlog << Warning << "\nPointStatVxOpt::process_config() -> " + << "The field \"" + << conf_key_obs_qty + << "\" is deprecated " + << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty(&odict)); + } else + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); // Conf: obs_qty_exc vx_pd.set_obs_qty_exc_filt(parse_conf_obs_qty_exc(&odict)); From c65c1807ec3ba2c902d95887b9b39eda5af2c156 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Thu, 9 Sep 2021 15:34:37 -0600 Subject: [PATCH 12/43] Per issue #1858 in process_obs_file() cleaned up code. SL --- met/src/tools/core/point_stat/point_stat.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 36c1a3baf6..df4d31fe79 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -697,9 +697,7 @@ void process_obs_file(int i_nc) { StringArray obs_qty_array = nc_point_obs.get_qty_data(); if( use_var_id ) var_names = nc_point_obs.get_var_names(); - int buf_size = ((obs_count > BUFFER_SIZE) ? BUFFER_SIZE : (obs_count)); - int obs_qty_idx_block[buf_size]; float obs_arr_block[buf_size][OBS_ARRAY_LEN]; From 927457820eb183ddb04eede285b24445a1607e1a Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 10 Sep 2021 10:32:40 -0600 Subject: [PATCH 13/43] Per issue #1858: changed obs_qty_filt to obs_qty_inc_filt. Added obs_qty_exc_filt. Modified add_point_obs() to use obs_qty_exc_filt. SL --- .../vx_statistics/pair_data_ensemble.cc | 38 ++++++++++++++----- .../vx_statistics/pair_data_ensemble.h | 10 +++-- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/met/src/libcode/vx_statistics/pair_data_ensemble.cc b/met/src/libcode/vx_statistics/pair_data_ensemble.cc index d6869221fc..72f512a51d 100644 --- a/met/src/libcode/vx_statistics/pair_data_ensemble.cc +++ b/met/src/libcode/vx_statistics/pair_data_ensemble.cc @@ -913,8 +913,9 @@ void VxPairDataEnsemble::clear() { sid_inc_filt.clear(); sid_exc_filt.clear(); - obs_qty_filt.clear(); - + obs_qty_inc_filt.clear(); + obs_qty_exc_filt.clear(); + obs_error_info = (ObsErrorInfo *) 0; fcst_ut = (unixtime) 0; @@ -954,7 +955,8 @@ void VxPairDataEnsemble::assign(const VxPairDataEnsemble &vx_pd) { end_ut = vx_pd.end_ut; sid_inc_filt = vx_pd.sid_inc_filt; sid_exc_filt = vx_pd.sid_exc_filt; - obs_qty_filt = vx_pd.obs_qty_filt; + obs_qty_inc_filt = vx_pd.obs_qty_inc_filt; + obs_qty_exc_filt = vx_pd.obs_qty_exc_filt; obs_error_info = vx_pd.obs_error_info; interp_thresh = vx_pd.interp_thresh; @@ -1132,9 +1134,18 @@ void VxPairDataEnsemble::set_sid_exc_filt(const StringArray sa) { //////////////////////////////////////////////////////////////////////// -void VxPairDataEnsemble::set_obs_qty_filt(const StringArray q) { +void VxPairDataEnsemble::set_obs_qty_inc_filt(const StringArray q) { - obs_qty_filt = q; + obs_qty_inc_filt = q; + + return; +} + +//////////////////////////////////////////////////////////////////////// + +void VxPairDataEnsemble::set_obs_qty_exc_filt(const StringArray q) { + + obs_qty_exc_filt = q; return; } @@ -1369,14 +1380,23 @@ void VxPairDataEnsemble::add_point_obs(float *hdr_arr, int *hdr_typ_arr, return; } - // Check if the observation quality flag is included in the list - if(obs_qty_filt.n() && strcmp(obs_qty, "")) { + // Check if the observation quality include flag is in the list + if(obs_qty_inc_filt.n() && strcmp(obs_qty, "")) { bool qty_match = false; - for(i=0; i Date: Fri, 10 Sep 2021 10:56:23 -0600 Subject: [PATCH 14/43] Per issue #1858: in process_config(): added code to set_obs_qty_inc_filt and set_obs_qty_exc_filt. Also added code to check if old obs_quality is being used, if so, set it to obs_qty_inc_filt. SL --- .../ensemble_stat/ensemble_stat_conf_info.cc | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc b/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc index 9dcf7154d3..51e0cfaad1 100644 --- a/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc +++ b/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc @@ -829,9 +829,24 @@ void EnsembleStatVxOpt::process_config(GrdFileType ftype, Dictionary &fdict, // Conf: sid_exc vx_pd.set_sid_exc_filt(parse_conf_sid_list(&odict, conf_key_sid_exc)); - // Conf: obs_qty - vx_pd.set_obs_qty_filt(parse_conf_obs_qty(&odict)); - + // Conf: obs_qty_inc + // Check for old "obs_quality" field + StringArray obs_qty_sa = odict.lookup_string_array(conf_key_obs_qty); + // Send warning if "obs_quality" is still being used + // Use it instead of "obs_quality_inc" if it is in config file + if(obs_qty_sa.n() > 0){ + mlog << Warning << "\nPointStatVxOpt::process_config() -> " + << "The field \"" + << conf_key_obs_qty + << "\" is deprecated " + << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty(&odict)); + } else + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); + + // Conf: obs_qty_exc + vx_pd.set_obs_qty_exc_filt(parse_conf_obs_qty_exc(&odict)); + return; } From 69e3b914f17c8d5ac6d8ad7368621e76ac09bee8 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 10 Sep 2021 14:13:12 -0600 Subject: [PATCH 15/43] Per issue #1858: in add_point_obs() modified section that applies the obs_qty_inc and obs_qty_exc filters. Combined the if-blocks into one concise if-block that applies both filters. SL --- .../vx_statistics/pair_data_ensemble.cc | 22 ++++----------- .../libcode/vx_statistics/pair_data_point.cc | 27 ++++--------------- 2 files changed, 10 insertions(+), 39 deletions(-) diff --git a/met/src/libcode/vx_statistics/pair_data_ensemble.cc b/met/src/libcode/vx_statistics/pair_data_ensemble.cc index 72f512a51d..c07e542d58 100644 --- a/met/src/libcode/vx_statistics/pair_data_ensemble.cc +++ b/met/src/libcode/vx_statistics/pair_data_ensemble.cc @@ -1379,25 +1379,13 @@ void VxPairDataEnsemble::add_point_obs(float *hdr_arr, int *hdr_typ_arr, else if(obs_info_grib->code() != nint(obs_arr[1])) { return; } - - // Check if the observation quality include flag is in the list - if(obs_qty_inc_filt.n() && strcmp(obs_qty, "")) { - bool qty_match = false; - for(i=0; i 0 && !obs_qty_inc_filt.has(obs_qty)) || + (obs_qty_exc_filt.n() > 0 && obs_qty_exc_filt.has(obs_qty))) { + return; } - + // Check whether the observation time falls within the valid time // window if(hdr_ut < beg_ut || hdr_ut > end_ut) return; diff --git a/met/src/libcode/vx_statistics/pair_data_point.cc b/met/src/libcode/vx_statistics/pair_data_point.cc index 1cb08adc65..a77749abba 100644 --- a/met/src/libcode/vx_statistics/pair_data_point.cc +++ b/met/src/libcode/vx_statistics/pair_data_point.cc @@ -924,28 +924,11 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, return; } - // Check if the observation quality include flag is in the list - if(obs_qty_inc_filt.n() && strcmp(obs_qty, "")) { - bool qty_match = false; - for(i=0; i 0 && !obs_qty_inc_filt.has(obs_qty)) || + (obs_qty_exc_filt.n() > 0 && obs_qty_exc_filt.has(obs_qty))) { + rej_qty++; + return; } // Check whether the observation time falls within the valid time From a914a4c72fcbf1efb79eb5f11781918f52d179af Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 10 Sep 2021 14:53:16 -0600 Subject: [PATCH 16/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_inc. SL --- test/config/PointStatConfig_qty_exc | 172 ++++++++++++++++++++++++++++ test/config/PointStatConfig_qty_inc | 172 ++++++++++++++++++++++++++++ 2 files changed, 344 insertions(+) create mode 100644 test/config/PointStatConfig_qty_exc create mode 100644 test/config/PointStatConfig_qty_inc diff --git a/test/config/PointStatConfig_qty_exc b/test/config/PointStatConfig_qty_exc new file mode 100644 index 0000000000..9ba878398a --- /dev/null +++ b/test/config/PointStatConfig_qty_exc @@ -0,0 +1,172 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Point-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "WRF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "NA"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +cnt_thresh = [ NA ]; +cnt_logic = UNION; +wind_thresh = [ NA ]; +wind_logic = UNION; +eclv_points = 0.05; + +// +// Forecast and observation fields to be verified +// +fcst = { + sid_inc = []; + sid_exc = []; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPSFC" ]; + obs_quality_inc = []; + obs_quality_exc = [ ${OBS_QUALITY_EXC_SFC} ]; + }, + + { + name = "TMP"; + level = [ "P500" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPUPA" ]; + obs_quality_inc = []; + obs_quality_exc = [ ${OBS_QUALITY_EXC_UPA} ]; + } + ]; + +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = [ "FULL" ]; + poly = []; + sid = []; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Confidence interval settings +// +ci_alpha = [ 0.05 ]; + +boot = { + interval = PCTILE; + rep_prop = 1.0; + n_rep = 0; + rng = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// HiRA verification method +// +hira = { + flag = FALSE; + width = [ 2, 3, 4, 5 ]; + vld_thresh = 1.0; + cov_thresh = [ ==0.25 ]; + shape = SQUARE; + prob_cat_thresh = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +output_flag = { + fho = BOTH; + ctc = BOTH; + cts = BOTH; + mctc = NONE; + mcts = NONE; + cnt = BOTH; + sl1l2 = BOTH; + sal1l2 = NONE; + vl1l2 = NONE; + val1l2 = NONE; + vcnt = NONE; + pct = NONE; + pstd = NONE; + pjc = NONE; + prc = NONE; + ecnt = NONE; + orank = NONE; + rps = NONE; + eclv = BOTH; + mpr = BOTH; +} + +//////////////////////////////////////////////////////////////////////////////// + +duplicate_flag = NONE; +rank_corr_flag = TRUE; +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V10.1.0"; + +//////////////////////////////////////////////////////////////////////////////// diff --git a/test/config/PointStatConfig_qty_inc b/test/config/PointStatConfig_qty_inc new file mode 100644 index 0000000000..61793579c7 --- /dev/null +++ b/test/config/PointStatConfig_qty_inc @@ -0,0 +1,172 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Point-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "WRF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "NA"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +cnt_thresh = [ NA ]; +cnt_logic = UNION; +wind_thresh = [ NA ]; +wind_logic = UNION; +eclv_points = 0.05; + +// +// Forecast and observation fields to be verified +// +fcst = { + sid_inc = []; + sid_exc = []; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPSFC" ]; + obs_quality_inc = [ ${OBS_QUALITY_INC_SFC} ]; + obs_quality_exc = []; + }, + + { + name = "TMP"; + level = [ "P500" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPUPA" ]; + obs_quality_inc = [ ${OBS_QUALITY_INC_UPA} ]; + obs_quality_exc = []; + } + ]; + +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = [ "FULL" ]; + poly = []; + sid = []; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Confidence interval settings +// +ci_alpha = [ 0.05 ]; + +boot = { + interval = PCTILE; + rep_prop = 1.0; + n_rep = 0; + rng = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// HiRA verification method +// +hira = { + flag = FALSE; + width = [ 2, 3, 4, 5 ]; + vld_thresh = 1.0; + cov_thresh = [ ==0.25 ]; + shape = SQUARE; + prob_cat_thresh = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +output_flag = { + fho = BOTH; + ctc = BOTH; + cts = BOTH; + mctc = NONE; + mcts = NONE; + cnt = BOTH; + sl1l2 = BOTH; + sal1l2 = NONE; + vl1l2 = NONE; + val1l2 = NONE; + vcnt = NONE; + pct = NONE; + pstd = NONE; + pjc = NONE; + prc = NONE; + ecnt = NONE; + orank = NONE; + rps = NONE; + eclv = BOTH; + mpr = BOTH; +} + +//////////////////////////////////////////////////////////////////////////////// + +duplicate_flag = NONE; +rank_corr_flag = TRUE; +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V10.1.0"; + +//////////////////////////////////////////////////////////////////////////////// From 8554decf9ed59190e1e4ef4bbda093a82634f28f Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 10 Sep 2021 14:54:43 -0600 Subject: [PATCH 17/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_exc. SL --- test/config/EnsembleStatConfig_qty_exc | 233 +++++++++++++++++++++++++ test/config/EnsembleStatConfig_qty_inc | 233 +++++++++++++++++++++++++ 2 files changed, 466 insertions(+) create mode 100644 test/config/EnsembleStatConfig_qty_exc create mode 100644 test/config/EnsembleStatConfig_qty_inc diff --git a/test/config/EnsembleStatConfig_qty_exc b/test/config/EnsembleStatConfig_qty_exc new file mode 100644 index 0000000000..e6fb15a50e --- /dev/null +++ b/test/config/EnsembleStatConfig_qty_exc @@ -0,0 +1,233 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Ensemble-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "WRF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "NA"; + +// +// Output observation type to be written +// +obtype = "ANALYS"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Ensemble product fields to be processed +// +ens = { + ens_thresh = 1.0; + vld_thresh = 1.0; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Neighborhood ensemble probabilities +// +nbrhd_prob = { + width = [ 5 ]; + shape = CIRCLE; + vld_thresh = 0.0; +} + +// +// NMEP smoothing methods +// +nmep_smooth = { + vld_thresh = 0.0; + shape = CIRCLE; + gaussian_dx = 81.27; + gaussian_radius = 120; + type = [ + { + method = GAUSSIAN; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Forecast and observation fields to be verified +// +fcst = { + message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + obs_quality_inc = []; + obs_quality_exc = [ ${OBS_QUALITY_EXC} ]; + } + ]; +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation filtering options +// May be set separately in each "obs.field" entry +// +obs_thresh = [ NA ]; +duplicate_flag = NONE; +obs_summary = NONE; +obs_perc_value = 50; +skip_const = FALSE; + +// +// Observation error options +// Set dist_type to NONE to use the observation error table instead +// May be set separately in each "obs.field" entry +// +obs_error = { + flag = FALSE; + dist_type = NONE; + dist_parm = []; + inst_bias_scale = 1.0; + inst_bias_offset = 0.0; + min = NA; + max = NA; +} + +// +// Ensemble bin sizes +// May be set separately in each "obs.field" entry +// +ens_ssvar_bin_size = 1.0; +ens_phist_bin_size = 0.05; + +// +// Categorical thresholds to define ensemble probabilities +// May be set separately in each "fcst.field" entry +// +prob_cat_thresh = []; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = [ "FULL" ]; + poly = []; + sid = []; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + field = BOTH; + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +output_flag = { + ecnt = BOTH; + rps = NONE; + rhist = BOTH; + phist = BOTH; + orank = BOTH; + ssvar = BOTH; + relp = BOTH; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Ensemble product output types +// +ensemble_flag = { + mean = TRUE; + stdev = TRUE; + minus = TRUE; + plus = TRUE; + min = TRUE; + max = TRUE; + range = TRUE; + vld_count = TRUE; + frequency = TRUE; + nep = FALSE; + nmep = FALSE; + rank = TRUE; + weight = FALSE; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Random number generator +// +rng = { + type = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +grid_weight_flag = NONE; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V10.1.0"; + +//////////////////////////////////////////////////////////////////////////////// diff --git a/test/config/EnsembleStatConfig_qty_inc b/test/config/EnsembleStatConfig_qty_inc new file mode 100644 index 0000000000..bca908ab55 --- /dev/null +++ b/test/config/EnsembleStatConfig_qty_inc @@ -0,0 +1,233 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Ensemble-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "WRF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "NA"; + +// +// Output observation type to be written +// +obtype = "ANALYS"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Ensemble product fields to be processed +// +ens = { + ens_thresh = 1.0; + vld_thresh = 1.0; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Neighborhood ensemble probabilities +// +nbrhd_prob = { + width = [ 5 ]; + shape = CIRCLE; + vld_thresh = 0.0; +} + +// +// NMEP smoothing methods +// +nmep_smooth = { + vld_thresh = 0.0; + shape = CIRCLE; + gaussian_dx = 81.27; + gaussian_radius = 120; + type = [ + { + method = GAUSSIAN; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Forecast and observation fields to be verified +// +fcst = { + message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + obs_quality_inc = [ ${OBS_QUALITY_INC} ]; + obs_quality_exc = []; + } + ]; +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation filtering options +// May be set separately in each "obs.field" entry +// +obs_thresh = [ NA ]; +duplicate_flag = NONE; +obs_summary = NONE; +obs_perc_value = 50; +skip_const = FALSE; + +// +// Observation error options +// Set dist_type to NONE to use the observation error table instead +// May be set separately in each "obs.field" entry +// +obs_error = { + flag = FALSE; + dist_type = NONE; + dist_parm = []; + inst_bias_scale = 1.0; + inst_bias_offset = 0.0; + min = NA; + max = NA; +} + +// +// Ensemble bin sizes +// May be set separately in each "obs.field" entry +// +ens_ssvar_bin_size = 1.0; +ens_phist_bin_size = 0.05; + +// +// Categorical thresholds to define ensemble probabilities +// May be set separately in each "fcst.field" entry +// +prob_cat_thresh = []; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = [ "FULL" ]; + poly = []; + sid = []; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + field = BOTH; + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +output_flag = { + ecnt = BOTH; + rps = NONE; + rhist = BOTH; + phist = BOTH; + orank = BOTH; + ssvar = BOTH; + relp = BOTH; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Ensemble product output types +// +ensemble_flag = { + mean = TRUE; + stdev = TRUE; + minus = TRUE; + plus = TRUE; + min = TRUE; + max = TRUE; + range = TRUE; + vld_count = TRUE; + frequency = TRUE; + nep = FALSE; + nmep = FALSE; + rank = TRUE; + weight = FALSE; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Random number generator +// +rng = { + type = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +grid_weight_flag = NONE; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V10.1.0"; + +//////////////////////////////////////////////////////////////////////////////// From 206a8b999117777b6753cf22617cf97e6d4fda8f Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 13 Sep 2021 11:02:49 -0600 Subject: [PATCH 18/43] Per issue #1858: For both the point_stat and ensemble_stat tests: modified tests that use OBS_QTY to use OBS_QTY_INC. Added unit test for OBS_QTY_EXC (obs_quality_exclude). SL --- test/xml/unit_quality_filter.xml | 69 +++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/test/xml/unit_quality_filter.xml b/test/xml/unit_quality_filter.xml index 5fcd30625d..e8178187a5 100644 --- a/test/xml/unit_quality_filter.xml +++ b/test/xml/unit_quality_filter.xml @@ -20,17 +20,41 @@ - + &MET_BIN;/point_stat - OBS_QUALITY_SFC "8" - OBS_QUALITY_UPA "2" + OBS_QUALITY_INC_SFC "8" + OBS_QUALITY_INC_UPA "2" OUTPUT_PREFIX QTY_PB \ &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ - &CONFIG_DIR;/PointStatConfig_qty \ + &CONFIG_DIR;/PointStatConfig_qty_inc \ + -outdir &OUTPUT_DIR;/point_stat -v 3 + + + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V.stat + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_fho.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_ctc.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cts.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cnt.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_sl1l2.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_mpr.txt + + + + + &MET_BIN;/point_stat + + OBS_QUALITY_EXC_SFC "9" + OBS_QUALITY_EXC_UPA "9" + OUTPUT_PREFIX QTY_PB + + \ + &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ + &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ + &CONFIG_DIR;/PointStatConfig_qty_exc \ -outdir &OUTPUT_DIR;/point_stat -v 3 @@ -47,14 +71,14 @@ &MET_BIN;/point_stat - OBS_QUALITY_SFC - OBS_QUALITY_UPA + OBS_QUALITY_INC_SFC + OBS_QUALITY_INC_UPA OUTPUT_PREFIX QTY_PB \ &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ - &CONFIG_DIR;/PointStatConfig_qty \ + &CONFIG_DIR;/PointStatConfig_qty_inc \ -outdir &OUTPUT_DIR;/point_stat -v 3 @@ -68,10 +92,10 @@ - + &MET_BIN;/ensemble_stat - OBS_QUALITY "V", "G", "S" + OBS_QUALITY_INC "V", "G", "S" OUTPUT_PREFIX QTY_MADIS_VGS \ @@ -79,7 +103,7 @@ &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040900_F012.grib \ &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040900_F012.grib \ &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040900_F012.grib \ - &CONFIG_DIR;/EnsembleStatConfig_qty \ + &CONFIG_DIR;/EnsembleStatConfig_qty_inc \ -point_obs &OUTPUT_DIR;/madis2nc/metar_2012040912_F000.nc \ -outdir &OUTPUT_DIR;/ensemble_stat -v 3 @@ -93,4 +117,29 @@ + + &MET_BIN;/ensemble_stat + + OBS_QUALITY_EXC "C" + OUTPUT_PREFIX QTY_MADIS_VGS + + \ + 3 \ + &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040900_F012.grib \ + &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040900_F012.grib \ + &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040900_F012.grib \ + &CONFIG_DIR;/EnsembleStatConfig_qty_exc \ + -point_obs &OUTPUT_DIR;/madis2nc/metar_2012040912_F000.nc \ + -outdir &OUTPUT_DIR;/ensemble_stat -v 3 + + + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V.stat + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_ecnt.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_rhist.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_phist.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_orank.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_ens.nc + + + From ea0154e01ca9d71976c1099053daa68892b994d2 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 13 Sep 2021 11:06:00 -0600 Subject: [PATCH 19/43] Per issue #1858: just added comment at top of file indicating what changed. SL --- met/src/tools/core/ensemble_stat/ensemble_stat.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/met/src/tools/core/ensemble_stat/ensemble_stat.cc b/met/src/tools/core/ensemble_stat/ensemble_stat.cc index eecc5c183f..d87c377bdf 100644 --- a/met/src/tools/core/ensemble_stat/ensemble_stat.cc +++ b/met/src/tools/core/ensemble_stat/ensemble_stat.cc @@ -59,6 +59,8 @@ // 029 01/21/20 Halley Gotway Add RPS output line type. // 030 02/19/21 Halley Gotway MET #1450, #1451 Overhaul CRPS // statistics in the ECNT line type. +// 031 09/13/21 Seth Linden Changed obs_qty to obs_qty_inc. +// Added code for obs_qty_exc. // //////////////////////////////////////////////////////////////////////// From 06b99d18a50f84e57c3acd593e099426c705c8ab Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 13 Sep 2021 11:07:12 -0600 Subject: [PATCH 20/43] Per issue #1858: just added comment at top of file indicating what changed. SL --- met/src/tools/core/point_stat/point_stat.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index df4d31fe79..5f609feeff 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -96,6 +96,8 @@ // filtering options. // 046 05/28/21 Halley Gotway Add MCTS HSS_EC output. // 047 08/23/21 Seth Linden Add ORANK line type for HiRA. +// 048 09/13/21 Seth Linden Changed obs_qty to obs_qty_inc. +// Added code for obs_qty_exc. // //////////////////////////////////////////////////////////////////////// From ae15242e28e2885c0e1f4730c999e69bda8d8879 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 09:50:14 -0600 Subject: [PATCH 21/43] Per issue #1858: removed parse_conf_obs_qty. Modified parse_conf_obs_qty_inc to check for old 'obs_quality' entry. SL --- met/src/basic/vx_config/config_util.cc | 27 +++++++++++++------------- met/src/basic/vx_config/config_util.h | 1 - 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index c867753b47..6639cb3a29 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -767,21 +767,22 @@ vector parse_conf_llpnt_mask(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// -StringArray parse_conf_obs_qty(Dictionary *dict) { - const char *method_name = "parse_conf_obs_qty() -> "; - - StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty, method_name); - - return(sa); -} - -/////////////////////////////////////////////////////////////////////////////// - StringArray parse_conf_obs_qty_inc(Dictionary *dict) { const char *method_name = "parse_conf_obs_qty_inc() -> "; - - StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty_inc, method_name); - + + // Check for old "obs_quality" entry and print a warning message + StringArray sa = dict->lookup_string_array(conf_key_obs_qty); + + if(dict->last_lookup_status()) { + mlog << Warning << "\nparse_conf_obs_qty_inc() -> " + << "The configuration option \"" << conf_key_obs_qty + << "\" is deprecated. Use \"" << conf_key_obs_qty_inc + << "\" instead.\n\n"; + } + else { + sa = parse_conf_string_array(dict, conf_key_obs_qty_inc, method_name); + } + return(sa); } diff --git a/met/src/basic/vx_config/config_util.h b/met/src/basic/vx_config/config_util.h index 896e0ff9e1..5e83b2c6aa 100644 --- a/met/src/basic/vx_config/config_util.h +++ b/met/src/basic/vx_config/config_util.h @@ -40,7 +40,6 @@ extern StringArray parse_conf_sid_list(Dictionary *dict, const char *); extern void parse_sid_mask(const ConcatString &, StringArray &, ConcatString &); extern vector parse_conf_llpnt_mask(Dictionary *dict); -extern StringArray parse_conf_obs_qty(Dictionary *dict); extern StringArray parse_conf_obs_qty_inc(Dictionary *dict); extern StringArray parse_conf_obs_qty_exc(Dictionary *dict); extern NumArray parse_conf_ci_alpha(Dictionary *dict); From a28087f2bb6889d93c60317667eaceeaeee63b53 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 09:56:00 -0600 Subject: [PATCH 22/43] Per issue #1858: in process_config(), modified section that calls set_obs_qty_inc_filt...this new function can now handle old 'obs_quality' entry as well as the new 'obs_quality_inc'. SL --- .../core/point_stat/point_stat_conf_info.cc | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat_conf_info.cc b/met/src/tools/core/point_stat/point_stat_conf_info.cc index 128ddf2190..87183cb5d0 100644 --- a/met/src/tools/core/point_stat/point_stat_conf_info.cc +++ b/met/src/tools/core/point_stat/point_stat_conf_info.cc @@ -915,21 +915,9 @@ void PointStatVxOpt::process_config(GrdFileType ftype, // Conf: sid_exc vx_pd.set_sid_exc_filt(parse_conf_sid_list(&odict, conf_key_sid_exc)); - + // Conf: obs_qty_inc - // Check for old "obs_quality" field - StringArray obs_qty_sa = odict.lookup_string_array(conf_key_obs_qty); - // Send warning if "obs_quality" is still being used - // Use it instead of "obs_quality_inc" if it is in config file - if(obs_qty_sa.n() > 0){ - mlog << Warning << "\nPointStatVxOpt::process_config() -> " - << "The field \"" - << conf_key_obs_qty - << "\" is deprecated " - << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; - vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty(&odict)); - } else - vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); // Conf: obs_qty_exc vx_pd.set_obs_qty_exc_filt(parse_conf_obs_qty_exc(&odict)); From ab012d6fce89e7c6b6bd98e8a48e37e9f7642857 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 13:10:18 -0600 Subject: [PATCH 23/43] Modified parse_conf_obs_qty_inc and parse_conf_obs_qty_exc. SL --- met/src/basic/vx_config/config_util.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index 6639cb3a29..87308f0995 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -768,16 +768,19 @@ vector parse_conf_llpnt_mask(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// StringArray parse_conf_obs_qty_inc(Dictionary *dict) { + StringArray sa; const char *method_name = "parse_conf_obs_qty_inc() -> "; // Check for old "obs_quality" entry and print a warning message - StringArray sa = dict->lookup_string_array(conf_key_obs_qty); + StringArray obs_qty_sa = dict->lookup_string_array(conf_key_obs_qty); - if(dict->last_lookup_status()) { + if(obs_qty_sa.n() > 0){ mlog << Warning << "\nparse_conf_obs_qty_inc() -> " << "The configuration option \"" << conf_key_obs_qty << "\" is deprecated. Use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; + + sa = parse_conf_string_array(dict, conf_key_obs_qty, method_name); } else { sa = parse_conf_string_array(dict, conf_key_obs_qty_inc, method_name); @@ -789,10 +792,14 @@ StringArray parse_conf_obs_qty_inc(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// StringArray parse_conf_obs_qty_exc(Dictionary *dict) { + StringArray sa; const char *method_name = "parse_conf_obs_qty_exc() -> "; - - StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty_exc, method_name); - + + // Check if we have "obs_quality_exc" + StringArray obs_qty_exc_sa = dict->lookup_string_array(conf_key_obs_qty_exc); + if(obs_qty_exc_sa.n() > 0) + sa = parse_conf_string_array(dict, conf_key_obs_qty_exc, method_name); + return(sa); } From 654754d94c1296ffbd812a81292d5640d1d5f340 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 14:52:56 -0600 Subject: [PATCH 24/43] Per issue #1858: re-updated parse_conf_obs_qty_exc and reverted back to the simplier version of this function. SL --- met/src/basic/vx_config/config_util.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index 87308f0995..5b124edbeb 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -792,13 +792,9 @@ StringArray parse_conf_obs_qty_inc(Dictionary *dict) { /////////////////////////////////////////////////////////////////////////////// StringArray parse_conf_obs_qty_exc(Dictionary *dict) { - StringArray sa; const char *method_name = "parse_conf_obs_qty_exc() -> "; - // Check if we have "obs_quality_exc" - StringArray obs_qty_exc_sa = dict->lookup_string_array(conf_key_obs_qty_exc); - if(obs_qty_exc_sa.n() > 0) - sa = parse_conf_string_array(dict, conf_key_obs_qty_exc, method_name); + StringArray sa = parse_conf_string_array(dict, conf_key_obs_qty_exc, method_name); return(sa); } From f4b54ad64ff0f0fb7f7a5b44a94b6021eeb994b3 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 15:13:37 -0600 Subject: [PATCH 25/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_exc. SL --- met/data/config/EnsembleStatConfig_default | 3 ++- met/data/config/PointStatConfig_default | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/met/data/config/EnsembleStatConfig_default b/met/data/config/EnsembleStatConfig_default index e18b258044..ea10765e17 100644 --- a/met/data/config/EnsembleStatConfig_default +++ b/met/data/config/EnsembleStatConfig_default @@ -114,7 +114,8 @@ message_type = [ "ADPUPA" ]; sid_inc = []; sid_exc = []; obs_thresh = [ NA ]; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/met/data/config/PointStatConfig_default b/met/data/config/PointStatConfig_default index 4cdaefaf6e..558e419726 100644 --- a/met/data/config/PointStatConfig_default +++ b/met/data/config/PointStatConfig_default @@ -97,7 +97,8 @@ obs = fcst; message_type = [ "ADPUPA" ]; sid_inc = []; sid_exc = []; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; From ec4631dd5a792fe111d19184e0ba2551d09ee5d1 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 15:15:44 -0600 Subject: [PATCH 26/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_exc. SL --- test/config/PointStatConfig_APCP | 4 +++- test/config/PointStatConfig_APCP_HIRA | 2 ++ test/config/PointStatConfig_GTG_latlon | 2 ++ test/config/PointStatConfig_GTG_lc | 2 ++ test/config/PointStatConfig_INTERP_OPTS | 2 ++ test/config/PointStatConfig_LAND_TOPO_MASK | 2 ++ test/config/PointStatConfig_MASK_SID | 2 ++ test/config/PointStatConfig_PHYS | 2 ++ test/config/PointStatConfig_PHYS_pint | 2 ++ test/config/PointStatConfig_WINDS | 2 ++ test/config/PointStatConfig_aeronet | 4 +++- test/config/PointStatConfig_airnow | 3 ++- test/config/PointStatConfig_climo | 2 ++ test/config/PointStatConfig_climo_WMO | 2 ++ test/config/PointStatConfig_climo_prob | 2 ++ test/config/PointStatConfig_dup | 2 ++ test/config/PointStatConfig_mpr_thresh | 2 ++ test/config/PointStatConfig_obs_summary | 2 ++ test/config/PointStatConfig_obs_summary_all | 2 ++ test/config/PointStatConfig_prob | 2 ++ test/config/PointStatConfig_python | 3 ++- test/config/PointStatConfig_qty | 6 ++++-- test/config/PointStatConfig_sid_inc_exc | 2 ++ 23 files changed, 50 insertions(+), 6 deletions(-) diff --git a/test/config/PointStatConfig_APCP b/test/config/PointStatConfig_APCP index ea8b55a5b4..002e33aa49 100644 --- a/test/config/PointStatConfig_APCP +++ b/test/config/PointStatConfig_APCP @@ -42,7 +42,9 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; - + obs_quality_inc = []; + obs_quality_exc = []; + field = [ { name = "${FCST_FIELD_NAME}"; diff --git a/test/config/PointStatConfig_APCP_HIRA b/test/config/PointStatConfig_APCP_HIRA index 412d2d8fe7..1972bec64b 100644 --- a/test/config/PointStatConfig_APCP_HIRA +++ b/test/config/PointStatConfig_APCP_HIRA @@ -42,6 +42,8 @@ eclv_points = 0.05; cat_thresh = [ >0.254, >2.540 ]; sid_inc = []; sid_exc = []; +obs_quality_inc = []; +obs_quality_exc = []; fcst = { field = [ diff --git a/test/config/PointStatConfig_GTG_latlon b/test/config/PointStatConfig_GTG_latlon index 1ac24d927e..a7fc58e970 100644 --- a/test/config/PointStatConfig_GTG_latlon +++ b/test/config/PointStatConfig_GTG_latlon @@ -60,6 +60,8 @@ obs = { message_type = [ "MEDEDR", "MAXEDR" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/PointStatConfig_GTG_lc b/test/config/PointStatConfig_GTG_lc index 5efd47662c..a9dab3da7a 100644 --- a/test/config/PointStatConfig_GTG_lc +++ b/test/config/PointStatConfig_GTG_lc @@ -65,6 +65,8 @@ obs = { message_type = [ "MEDEDR", "MAXEDR" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/PointStatConfig_INTERP_OPTS b/test/config/PointStatConfig_INTERP_OPTS index c255c5b565..7898e9e17e 100644 --- a/test/config/PointStatConfig_INTERP_OPTS +++ b/test/config/PointStatConfig_INTERP_OPTS @@ -43,6 +43,8 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { name = "TMP"; level = "Z2"; message_type = "ADPSFC"; } diff --git a/test/config/PointStatConfig_LAND_TOPO_MASK b/test/config/PointStatConfig_LAND_TOPO_MASK index 4d1ab530fc..c03318bcf6 100644 --- a/test/config/PointStatConfig_LAND_TOPO_MASK +++ b/test/config/PointStatConfig_LAND_TOPO_MASK @@ -42,6 +42,8 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; name = "TMP"; level = "Z2"; diff --git a/test/config/PointStatConfig_MASK_SID b/test/config/PointStatConfig_MASK_SID index e4174e9e9a..30f427d627 100644 --- a/test/config/PointStatConfig_MASK_SID +++ b/test/config/PointStatConfig_MASK_SID @@ -42,6 +42,8 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { name = "TMP"; level = "Z2"; cat_thresh = [ <=273, >273 ]; message_type = "ADPSFC"; }, diff --git a/test/config/PointStatConfig_PHYS b/test/config/PointStatConfig_PHYS index 7a767a54da..2e227a74b3 100644 --- a/test/config/PointStatConfig_PHYS +++ b/test/config/PointStatConfig_PHYS @@ -42,6 +42,8 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { name = "TMP"; level = "Z2"; message_type = "ADPSFC"; cat_thresh = [ <=273, >273 ]; diff --git a/test/config/PointStatConfig_PHYS_pint b/test/config/PointStatConfig_PHYS_pint index 4149345038..9ca75701a8 100644 --- a/test/config/PointStatConfig_PHYS_pint +++ b/test/config/PointStatConfig_PHYS_pint @@ -50,6 +50,8 @@ fcst = { obs = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { name = "TMP"; level = "Z2"; cat_thresh = [ <=273, >273 ]; message_type = "ADPSFC"; }, diff --git a/test/config/PointStatConfig_WINDS b/test/config/PointStatConfig_WINDS index 2b3ff9988e..8156066edb 100644 --- a/test/config/PointStatConfig_WINDS +++ b/test/config/PointStatConfig_WINDS @@ -55,6 +55,8 @@ message_type_group_map = [ fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; message_type = [ "ADPSFC", "SFCSHP", "USERSF" ]; wind_thresh = [ NA, >=3, >=5 ]; diff --git a/test/config/PointStatConfig_aeronet b/test/config/PointStatConfig_aeronet index 58579bdf68..2151456dce 100644 --- a/test/config/PointStatConfig_aeronet +++ b/test/config/PointStatConfig_aeronet @@ -57,7 +57,9 @@ obs = { message_type = [ "AERONET_AOD_MEAN_010000" ]; sid_inc = []; sid_exc = []; - + obs_quality_inc = []; + obs_quality_exc = []; + field = [ { name = "AOD"; diff --git a/test/config/PointStatConfig_airnow b/test/config/PointStatConfig_airnow index 7420b10455..80df21807a 100644 --- a/test/config/PointStatConfig_airnow +++ b/test/config/PointStatConfig_airnow @@ -74,7 +74,8 @@ obs = { // sid_inc = []; sid_exc = []; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/PointStatConfig_climo b/test/config/PointStatConfig_climo index cb6eaea84b..6f14befcbf 100644 --- a/test/config/PointStatConfig_climo +++ b/test/config/PointStatConfig_climo @@ -46,6 +46,8 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; cat_thresh = []; message_type = [ "ADPSFC" ]; diff --git a/test/config/PointStatConfig_climo_WMO b/test/config/PointStatConfig_climo_WMO index 201e794890..9ee4886da7 100644 --- a/test/config/PointStatConfig_climo_WMO +++ b/test/config/PointStatConfig_climo_WMO @@ -42,6 +42,8 @@ eclv_points = 0.05; message_type = [ "ADPUPA" ]; sid_inc = []; sid_exc = []; +obs_quality_inc = []; +obs_quality_exc = []; // // Forecast and observation fields to be verified diff --git a/test/config/PointStatConfig_climo_prob b/test/config/PointStatConfig_climo_prob index 2447701f95..a3c7eccc38 100644 --- a/test/config/PointStatConfig_climo_prob +++ b/test/config/PointStatConfig_climo_prob @@ -67,6 +67,8 @@ fcst = { obs = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; message_type = [ "ADPSFC" ]; field = [ diff --git a/test/config/PointStatConfig_dup b/test/config/PointStatConfig_dup index 9298bb58ec..9e8b6a68c7 100644 --- a/test/config/PointStatConfig_dup +++ b/test/config/PointStatConfig_dup @@ -45,6 +45,8 @@ fcst = { message_type = [ "ADPSFC" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/PointStatConfig_mpr_thresh b/test/config/PointStatConfig_mpr_thresh index 66bde341ef..3a8631def8 100644 --- a/test/config/PointStatConfig_mpr_thresh +++ b/test/config/PointStatConfig_mpr_thresh @@ -46,6 +46,8 @@ eclv_points = 0.05; fcst = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; cat_thresh = []; message_type = [ "ADPSFC" ]; diff --git a/test/config/PointStatConfig_obs_summary b/test/config/PointStatConfig_obs_summary index b8129521ec..8530672ab9 100644 --- a/test/config/PointStatConfig_obs_summary +++ b/test/config/PointStatConfig_obs_summary @@ -48,6 +48,8 @@ fcst = { message_type = [ "ADPSFC" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/PointStatConfig_obs_summary_all b/test/config/PointStatConfig_obs_summary_all index 080ba56dff..0d868dd519 100644 --- a/test/config/PointStatConfig_obs_summary_all +++ b/test/config/PointStatConfig_obs_summary_all @@ -48,6 +48,8 @@ fcst = { message_type = [ "ADPSFC" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/PointStatConfig_prob b/test/config/PointStatConfig_prob index e2ed42b77f..c576eb31f5 100644 --- a/test/config/PointStatConfig_prob +++ b/test/config/PointStatConfig_prob @@ -55,6 +55,8 @@ fcst = { obs = { sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/PointStatConfig_python b/test/config/PointStatConfig_python index 752fb7a928..2e97f43f29 100644 --- a/test/config/PointStatConfig_python +++ b/test/config/PointStatConfig_python @@ -72,7 +72,8 @@ obs = { message_type = [ "ADPSFC" ]; sid_inc = []; sid_exc = []; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/PointStatConfig_qty b/test/config/PointStatConfig_qty index 6f7db1b826..61793579c7 100644 --- a/test/config/PointStatConfig_qty +++ b/test/config/PointStatConfig_qty @@ -49,7 +49,8 @@ fcst = { level = [ "Z2" ]; cat_thresh = [ <=273, >273 ]; message_type = [ "ADPSFC" ]; - obs_quality = [ ${OBS_QUALITY_SFC} ]; + obs_quality_inc = [ ${OBS_QUALITY_INC_SFC} ]; + obs_quality_exc = []; }, { @@ -57,7 +58,8 @@ fcst = { level = [ "P500" ]; cat_thresh = [ <=273, >273 ]; message_type = [ "ADPUPA" ]; - obs_quality = [ ${OBS_QUALITY_UPA} ]; + obs_quality_inc = [ ${OBS_QUALITY_INC_UPA} ]; + obs_quality_exc = []; } ]; diff --git a/test/config/PointStatConfig_sid_inc_exc b/test/config/PointStatConfig_sid_inc_exc index 9dc3e7fdcf..7ae01d3238 100644 --- a/test/config/PointStatConfig_sid_inc_exc +++ b/test/config/PointStatConfig_sid_inc_exc @@ -42,6 +42,8 @@ wind_logic = UNION; eclv_points = 0.05; sid_inc = []; sid_exc = []; +obs_quality_inc = []; +obs_quality_exc = []; fcst = { From 3a826b46b1e3c53a131a87f6536bf9488ea2e392 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 15:16:42 -0600 Subject: [PATCH 27/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_exc. SL --- test/config/EnsembleStatConfig | 2 ++ test/config/EnsembleStatConfig_MASK_SID | 2 ++ test/config/EnsembleStatConfig_climo | 3 ++- test/config/EnsembleStatConfig_grid_weight | 2 ++ test/config/EnsembleStatConfig_one_cdf_bin | 3 ++- test/config/EnsembleStatConfig_python | 3 ++- test/config/EnsembleStatConfig_qty | 3 ++- 7 files changed, 14 insertions(+), 4 deletions(-) diff --git a/test/config/EnsembleStatConfig b/test/config/EnsembleStatConfig index be1bae6735..3a7db2a4ac 100644 --- a/test/config/EnsembleStatConfig +++ b/test/config/EnsembleStatConfig @@ -92,6 +92,8 @@ fcst = { message_type = [ "ADPSFC" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/EnsembleStatConfig_MASK_SID b/test/config/EnsembleStatConfig_MASK_SID index 6dd857db76..535c79492c 100644 --- a/test/config/EnsembleStatConfig_MASK_SID +++ b/test/config/EnsembleStatConfig_MASK_SID @@ -89,6 +89,8 @@ fcst = { message_type = [ "ADPSFC" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { diff --git a/test/config/EnsembleStatConfig_climo b/test/config/EnsembleStatConfig_climo index d209f009c9..1656128df9 100644 --- a/test/config/EnsembleStatConfig_climo +++ b/test/config/EnsembleStatConfig_climo @@ -128,7 +128,8 @@ climo_cdf = { // May be set separately in each "obs.field" entry // obs_thresh = [ NA ]; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/EnsembleStatConfig_grid_weight b/test/config/EnsembleStatConfig_grid_weight index 3a40783171..1d40aadf0c 100644 --- a/test/config/EnsembleStatConfig_grid_weight +++ b/test/config/EnsembleStatConfig_grid_weight @@ -83,6 +83,8 @@ fcst = { message_type = [ "APDSFC" ]; sid_inc = []; sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = tmp_field; } obs = fcst; diff --git a/test/config/EnsembleStatConfig_one_cdf_bin b/test/config/EnsembleStatConfig_one_cdf_bin index 3343bb6a2e..7e19af2b80 100644 --- a/test/config/EnsembleStatConfig_one_cdf_bin +++ b/test/config/EnsembleStatConfig_one_cdf_bin @@ -123,7 +123,8 @@ climo_cdf = { // May be set separately in each "obs.field" entry // obs_thresh = [ NA ]; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/EnsembleStatConfig_python b/test/config/EnsembleStatConfig_python index 48eef201c6..de502a7250 100644 --- a/test/config/EnsembleStatConfig_python +++ b/test/config/EnsembleStatConfig_python @@ -104,7 +104,8 @@ message_type = []; sid_inc = []; sid_exc = []; obs_thresh = [ NA ]; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/EnsembleStatConfig_qty b/test/config/EnsembleStatConfig_qty index 83ecacdbb1..a73d1dd198 100644 --- a/test/config/EnsembleStatConfig_qty +++ b/test/config/EnsembleStatConfig_qty @@ -92,7 +92,8 @@ fcst = { { name = "TMP"; level = [ "Z2" ]; - obs_quality = [ ${OBS_QUALITY} ]; + obs_quality_inc = [ ${OBS_QUALITY} ]; + obs_quality_exc = []; } ]; } From ff82a7bc6b24e68a18ce1ea7422098f8dfe8679e Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 15:20:37 -0600 Subject: [PATCH 28/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_exc. SL --- met/scripts/config/EnsembleStatConfig | 3 ++- met/scripts/config/PointStatConfig | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/met/scripts/config/EnsembleStatConfig b/met/scripts/config/EnsembleStatConfig index c09cb523e8..91d4cab5d0 100644 --- a/met/scripts/config/EnsembleStatConfig +++ b/met/scripts/config/EnsembleStatConfig @@ -136,7 +136,8 @@ obs = fcst; sid_inc = []; sid_exc = []; obs_thresh = [ NA ]; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/met/scripts/config/PointStatConfig b/met/scripts/config/PointStatConfig index 513c956ab6..a39a25626e 100644 --- a/met/scripts/config/PointStatConfig +++ b/met/scripts/config/PointStatConfig @@ -77,7 +77,8 @@ obs = fcst; // sid_inc = []; sid_exc = []; -obs_quality = []; +obs_quality_inc = []; +obs_quality_exc = []; duplicate_flag = NONE; obs_summary = NONE; obs_percentile = 50; From a8c3be7fb496d08394f3d6ee6d03f286e09e474d Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 15:53:17 -0600 Subject: [PATCH 29/43] Per issue #1858: replaced obs_quality with obs_quality_inc and added obs_quality_inc. SL --- met/docs/Users_Guide/ensemble-stat.rst | 3 ++- met/docs/Users_Guide/point-stat.rst | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/met/docs/Users_Guide/ensemble-stat.rst b/met/docs/Users_Guide/ensemble-stat.rst index d4763fe32f..a39424d289 100644 --- a/met/docs/Users_Guide/ensemble-stat.rst +++ b/met/docs/Users_Guide/ensemble-stat.rst @@ -149,7 +149,8 @@ ____________________ sid_inc = []; sid_exc = []; duplicate_flag = NONE; - obs_quality = []; + obs_quality_inc = []; + obs_quality_exc = []; obs_summary = NONE; obs_perc_value = 50; message_type_group_map = [...]; diff --git a/met/docs/Users_Guide/point-stat.rst b/met/docs/Users_Guide/point-stat.rst index c37c5b06d7..926ad1f0c5 100644 --- a/met/docs/Users_Guide/point-stat.rst +++ b/met/docs/Users_Guide/point-stat.rst @@ -342,7 +342,8 @@ ________________________ sid_inc = []; sid_exc = []; duplicate_flag = NONE; - obs_quality = []; + obs_quality_inc = []; + obs_quality_exc = []; obs_summary = NONE; obs_perc_value = 50; message_type_group_map = [...]; From fc743fb4c3306e81cb1af64b146ca4e39813fbd8 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 14 Sep 2021 16:01:10 -0600 Subject: [PATCH 30/43] Per issue #1858: replaced obs_quality with obs_quality_inc. Added documentation for obs_quality_exc. SL --- met/docs/Users_Guide/config_options.rst | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/met/docs/Users_Guide/config_options.rst b/met/docs/Users_Guide/config_options.rst index 5c3149b03f..23f67fecda 100644 --- a/met/docs/Users_Guide/config_options.rst +++ b/met/docs/Users_Guide/config_options.rst @@ -1997,20 +1997,37 @@ Percentile value to use when obs_summary = PERC obs_perc_value = 50; -.. _obs_quality: +.. _obs_quality_inc: -:ref:`obs_quality ` +:ref:`obs_quality_inc ` -The "obs_quality" entry specifies the quality flag values that are to be +The "obs_quality_inc" entry specifies the quality flag values that are to be retained and used for verification. An empty list signifies that all point observations should be used, regardless of their quality flag value. The quality flag values will vary depending on the original source of the observations. The quality flag values to retain should be specified as an array of strings, even if the values themselves are numeric. +Note "obs_quality_inc" replaces the older option "obs_quality". .. code-block:: none - obs_quality = [ "1", "2", "3", "9" ]; + obs_quality_inc = [ "1", "2", "3", "9" ]; + + +.. _obs_quality_exc: + +:ref:`obs_quality_exc ` + +The "obs_quality_exc" entry specifies the quality flag values that are to be +ignored and not used for verification. An empty list signifies that all +point observations should be used, regardless of their quality flag value. +The quality flag values will vary depending on the original source of the +observations. The quality flag values to ignore should be specified as +an array of strings, even if the values themselves are numeric. + +.. code-block:: none + + obs_quality_exc = [ "1", "2", "3", "9" ]; .. _met_data_dir: From 60c88781811b22166e27d8b44cafeb0e8d4139c9 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 11:05:20 -0600 Subject: [PATCH 31/43] Per issue #1858: checking in latest version. Modified section that calls set_obs_qty_inc_filt...this new function can now handle old 'obs_quality' entry as well as the new 'obs_quality_inc'. SL --- .../ensemble_stat/ensemble_stat_conf_info.cc | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc b/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc index 51e0cfaad1..998862a4bb 100644 --- a/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc +++ b/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc @@ -819,34 +819,23 @@ void EnsembleStatVxOpt::process_config(GrdFileType ftype, Dictionary &fdict, << "Observation error for point verification is " << "defined by a table lookup for each observation.\n"; } - + // Conf: desc vx_pd.set_desc(parse_conf_string(&odict, conf_key_desc).c_str()); - + // Conf: sid_inc vx_pd.set_sid_inc_filt(parse_conf_sid_list(&odict, conf_key_sid_inc)); - + // Conf: sid_exc vx_pd.set_sid_exc_filt(parse_conf_sid_list(&odict, conf_key_sid_exc)); - + // Conf: obs_qty_inc - // Check for old "obs_quality" field - StringArray obs_qty_sa = odict.lookup_string_array(conf_key_obs_qty); - // Send warning if "obs_quality" is still being used - // Use it instead of "obs_quality_inc" if it is in config file - if(obs_qty_sa.n() > 0){ - mlog << Warning << "\nPointStatVxOpt::process_config() -> " - << "The field \"" - << conf_key_obs_qty - << "\" is deprecated " - << "use \"" << conf_key_obs_qty_inc << "\" instead.\n\n"; - vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty(&odict)); - } else - vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); - + vx_pd.set_obs_qty_inc_filt(parse_conf_obs_qty_inc(&odict)); + // Conf: obs_qty_exc vx_pd.set_obs_qty_exc_filt(parse_conf_obs_qty_exc(&odict)); + return; } From f24e1d5b47e98b58d76b1bd3e5b63fdb124cbe8a Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 11:25:19 -0600 Subject: [PATCH 32/43] Per issue #1858: cleaned up some extra line spaces. SL --- met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc b/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc index 998862a4bb..be4d4b582a 100644 --- a/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc +++ b/met/src/tools/core/ensemble_stat/ensemble_stat_conf_info.cc @@ -835,7 +835,6 @@ void EnsembleStatVxOpt::process_config(GrdFileType ftype, Dictionary &fdict, // Conf: obs_qty_exc vx_pd.set_obs_qty_exc_filt(parse_conf_obs_qty_exc(&odict)); - return; } From dbb755ca0e392f4edd7ba54dc6cb0a0f3c02707f Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Wed, 15 Sep 2021 12:38:09 -0600 Subject: [PATCH 33/43] Per #1858, removed the deprecated obs_quality configuration entry from 3 EnsembleStat and 5 PointStat configuration files. --- test/config/EnsembleStatConfig | 11 +++++------ test/config/EnsembleStatConfig_MASK_SID | 11 +++++------ test/config/EnsembleStatConfig_grid_weight | 13 ++++++------- test/config/PointStatConfig_aeronet | 11 +++++------ test/config/PointStatConfig_climo | 13 ++++++------- test/config/PointStatConfig_climo_WMO | 5 ++--- test/config/PointStatConfig_climo_prob | 11 +++++------ test/config/PointStatConfig_mpr_thresh | 13 ++++++------- 8 files changed, 40 insertions(+), 48 deletions(-) diff --git a/test/config/EnsembleStatConfig b/test/config/EnsembleStatConfig index 3a7db2a4ac..c99f8da963 100644 --- a/test/config/EnsembleStatConfig +++ b/test/config/EnsembleStatConfig @@ -89,11 +89,11 @@ nmep_smooth = { // Forecast and observation fields to be verified // fcst = { - message_type = [ "ADPSFC" ]; - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; + message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { @@ -120,7 +120,6 @@ obs = fcst; // May be set separately in each "obs.field" entry // obs_thresh = [ NA ]; -obs_quality = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/EnsembleStatConfig_MASK_SID b/test/config/EnsembleStatConfig_MASK_SID index 535c79492c..d33e7d9bd9 100644 --- a/test/config/EnsembleStatConfig_MASK_SID +++ b/test/config/EnsembleStatConfig_MASK_SID @@ -86,11 +86,11 @@ nmep_smooth = { // Forecast and observation fields to be verified // fcst = { - message_type = [ "ADPSFC" ]; - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; + message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { @@ -110,7 +110,6 @@ obs = fcst; // May be set separately in each "obs.field" entry // obs_thresh = [ NA ]; -obs_quality = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/EnsembleStatConfig_grid_weight b/test/config/EnsembleStatConfig_grid_weight index 1d40aadf0c..da710a73e5 100644 --- a/test/config/EnsembleStatConfig_grid_weight +++ b/test/config/EnsembleStatConfig_grid_weight @@ -80,12 +80,12 @@ nmep_smooth = { // Forecast and observation fields to be verified // fcst = { - message_type = [ "APDSFC" ]; - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; - field = tmp_field; + message_type = [ "APDSFC" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; + field = tmp_field; } obs = fcst; @@ -96,7 +96,6 @@ obs = fcst; // May be set separately in each "obs.field" entry // obs_thresh = [ NA ]; -obs_quality = []; duplicate_flag = NONE; obs_summary = NONE; obs_perc_value = 50; diff --git a/test/config/PointStatConfig_aeronet b/test/config/PointStatConfig_aeronet index 2151456dce..69799ede63 100644 --- a/test/config/PointStatConfig_aeronet +++ b/test/config/PointStatConfig_aeronet @@ -54,11 +54,11 @@ fcst = { } obs = { - message_type = [ "AERONET_AOD_MEAN_010000" ]; - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; + message_type = [ "AERONET_AOD_MEAN_010000" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; field = [ { @@ -203,7 +203,6 @@ output_flag = { //////////////////////////////////////////////////////////////////////////////// -obs_quality = []; duplicate_flag = NONE; rank_corr_flag = TRUE; tmp_dir = "/tmp"; diff --git a/test/config/PointStatConfig_climo b/test/config/PointStatConfig_climo index 6f14befcbf..041642d1a6 100644 --- a/test/config/PointStatConfig_climo +++ b/test/config/PointStatConfig_climo @@ -44,12 +44,12 @@ eclv_points = 0.05; // Forecast and observation fields to be verified // fcst = { - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; - cat_thresh = []; - message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; + cat_thresh = []; + message_type = [ "ADPSFC" ]; field = [ { @@ -272,7 +272,6 @@ output_flag = { //////////////////////////////////////////////////////////////////////////////// -obs_quality = []; duplicate_flag = NONE; rank_corr_flag = TRUE; tmp_dir = "/tmp"; diff --git a/test/config/PointStatConfig_climo_WMO b/test/config/PointStatConfig_climo_WMO index 9ee4886da7..599797cde3 100644 --- a/test/config/PointStatConfig_climo_WMO +++ b/test/config/PointStatConfig_climo_WMO @@ -42,8 +42,8 @@ eclv_points = 0.05; message_type = [ "ADPUPA" ]; sid_inc = []; sid_exc = []; -obs_quality_inc = []; -obs_quality_exc = []; +obs_quality_inc = []; +obs_quality_exc = []; // // Forecast and observation fields to be verified @@ -220,7 +220,6 @@ output_flag = { //////////////////////////////////////////////////////////////////////////////// -obs_quality = []; duplicate_flag = NONE; rank_corr_flag = TRUE; tmp_dir = "/tmp"; diff --git a/test/config/PointStatConfig_climo_prob b/test/config/PointStatConfig_climo_prob index a3c7eccc38..e57f5e003f 100644 --- a/test/config/PointStatConfig_climo_prob +++ b/test/config/PointStatConfig_climo_prob @@ -65,11 +65,11 @@ fcst = { } obs = { - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; - message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; + message_type = [ "ADPSFC" ]; field = [ { @@ -222,7 +222,6 @@ output_flag = { //////////////////////////////////////////////////////////////////////////////// -obs_quality = []; duplicate_flag = NONE; rank_corr_flag = TRUE; tmp_dir = "/tmp"; diff --git a/test/config/PointStatConfig_mpr_thresh b/test/config/PointStatConfig_mpr_thresh index 3a8631def8..6da3ee7c63 100644 --- a/test/config/PointStatConfig_mpr_thresh +++ b/test/config/PointStatConfig_mpr_thresh @@ -44,12 +44,12 @@ eclv_points = 0.05; // Forecast and observation fields to be verified // fcst = { - sid_inc = []; - sid_exc = []; - obs_quality_inc = []; - obs_quality_exc = []; - cat_thresh = []; - message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + obs_quality_inc = []; + obs_quality_exc = []; + cat_thresh = []; + message_type = [ "ADPSFC" ]; name = "TMP"; level = "Z2"; @@ -214,7 +214,6 @@ output_flag = { //////////////////////////////////////////////////////////////////////////////// -obs_quality = []; duplicate_flag = NONE; rank_corr_flag = TRUE; tmp_dir = "/tmp"; From 98c56572fae94a3c218bae846bdd54832bfee9bc Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 13:32:46 -0600 Subject: [PATCH 34/43] Per issue #1858: duplicated fcst/obs fields to run/test with both obs_quality_inc and obs_quality_exc. SL --- test/config/PointStatConfig_qty_inc_exc | 194 ++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 test/config/PointStatConfig_qty_inc_exc diff --git a/test/config/PointStatConfig_qty_inc_exc b/test/config/PointStatConfig_qty_inc_exc new file mode 100644 index 0000000000..ae34eef7a5 --- /dev/null +++ b/test/config/PointStatConfig_qty_inc_exc @@ -0,0 +1,194 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Point-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "WRF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "NA"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +cnt_thresh = [ NA ]; +cnt_logic = UNION; +wind_thresh = [ NA ]; +wind_logic = UNION; +eclv_points = 0.05; + +// +// Forecast and observation fields to be verified +// +fcst = { + sid_inc = []; + sid_exc = []; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPSFC" ]; + obs_quality_inc = [ ${OBS_QUALITY_INC_SFC} ]; + obs_quality_exc = []; + desc = "QTY_INC_SFC"; + }, + + { + name = "TMP"; + level = [ "P500" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPUPA" ]; + obs_quality_inc = [ ${OBS_QUALITY_INC_UPA} ]; + obs_quality_exc = []; + desc = "QTY_INC_UPA"; + }, + + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPSFC" ]; + obs_quality_inc = []; + obs_quality_exc = [ ${OBS_QUALITY_EXC_SFC} ]; + desc = "QTY_EXC_SFC"; + }, + + { + name = "TMP"; + level = [ "P500" ]; + cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPUPA" ]; + obs_quality_inc = []; + obs_quality_exc = [ ${OBS_QUALITY_EXC_UPA} ]; + desc = "QTY_EXC_UPA"; + } + ]; + +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = [ "FULL" ]; + poly = []; + sid = []; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Confidence interval settings +// +ci_alpha = [ 0.05 ]; + +boot = { + interval = PCTILE; + rep_prop = 1.0; + n_rep = 0; + rng = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// HiRA verification method +// +hira = { + flag = FALSE; + width = [ 2, 3, 4, 5 ]; + vld_thresh = 1.0; + cov_thresh = [ ==0.25 ]; + shape = SQUARE; + prob_cat_thresh = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +output_flag = { + fho = BOTH; + ctc = BOTH; + cts = BOTH; + mctc = NONE; + mcts = NONE; + cnt = BOTH; + sl1l2 = BOTH; + sal1l2 = NONE; + vl1l2 = NONE; + val1l2 = NONE; + vcnt = NONE; + pct = NONE; + pstd = NONE; + pjc = NONE; + prc = NONE; + ecnt = NONE; + orank = NONE; + rps = NONE; + eclv = BOTH; + mpr = BOTH; +} + +//////////////////////////////////////////////////////////////////////////////// + +duplicate_flag = NONE; +rank_corr_flag = TRUE; +tmp_dir = "/tmp"; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V10.1.0"; + +//////////////////////////////////////////////////////////////////////////////// From 116f87445d84986e563f8651bf9cbea8ac383235 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 13:38:52 -0600 Subject: [PATCH 35/43] Per issue #1858: duplicated fcst/obs fields to run/test with both obs_quality_inc and obs_quality_exc. SL --- test/config/EnsembleStatConfig_qty_inc_exc | 242 +++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 test/config/EnsembleStatConfig_qty_inc_exc diff --git a/test/config/EnsembleStatConfig_qty_inc_exc b/test/config/EnsembleStatConfig_qty_inc_exc new file mode 100644 index 0000000000..f762de720f --- /dev/null +++ b/test/config/EnsembleStatConfig_qty_inc_exc @@ -0,0 +1,242 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Ensemble-Stat configuration file. +// +// For additional information, please see the MET User's Guide. +// +//////////////////////////////////////////////////////////////////////////////// + +// +// Output model name to be written +// +model = "WRF"; + +// +// Output description to be written +// May be set separately in each "obs.field" entry +// +desc = "NA"; + +// +// Output observation type to be written +// +obtype = "ANALYS"; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification grid +// +regrid = { + to_grid = NONE; + method = NEAREST; + width = 1; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Ensemble product fields to be processed +// +ens = { + ens_thresh = 1.0; + vld_thresh = 1.0; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + cat_thresh = [ <=273, >273 ]; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Neighborhood ensemble probabilities +// +nbrhd_prob = { + width = [ 5 ]; + shape = CIRCLE; + vld_thresh = 0.0; +} + +// +// NMEP smoothing methods +// +nmep_smooth = { + vld_thresh = 0.0; + shape = CIRCLE; + gaussian_dx = 81.27; + gaussian_radius = 120; + type = [ + { + method = GAUSSIAN; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Forecast and observation fields to be verified +// +fcst = { + message_type = [ "ADPSFC" ]; + sid_inc = []; + sid_exc = []; + + field = [ + { + name = "TMP"; + level = [ "Z2" ]; + obs_quality_inc = [ ${OBS_QUALITY_INC} ]; + obs_quality_exc = []; + desc = "QTY_INC"; + }, + + { + name = "TMP"; + level = [ "Z2" ]; + obs_quality_inc = []; + obs_quality_exc = [ ${OBS_QUALITY_EXC} ]; + desc = "QTY_EXC"; + } + ]; +} +obs = fcst; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation filtering options +// May be set separately in each "obs.field" entry +// +obs_thresh = [ NA ]; +duplicate_flag = NONE; +obs_summary = NONE; +obs_perc_value = 50; +skip_const = FALSE; + +// +// Observation error options +// Set dist_type to NONE to use the observation error table instead +// May be set separately in each "obs.field" entry +// +obs_error = { + flag = FALSE; + dist_type = NONE; + dist_parm = []; + inst_bias_scale = 1.0; + inst_bias_offset = 0.0; + min = NA; + max = NA; +} + +// +// Ensemble bin sizes +// May be set separately in each "obs.field" entry +// +ens_ssvar_bin_size = 1.0; +ens_phist_bin_size = 0.05; + +// +// Categorical thresholds to define ensemble probabilities +// May be set separately in each "fcst.field" entry +// +prob_cat_thresh = []; + +//////////////////////////////////////////////////////////////////////////////// + +// +// Point observation time window +// +obs_window = { + beg = -5400; + end = 5400; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Verification masking regions +// +mask = { + grid = [ "FULL" ]; + poly = []; + sid = []; + llpnt = []; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Interpolation methods +// +interp = { + field = BOTH; + vld_thresh = 1.0; + + type = [ + { + method = NEAREST; + width = 1; + } + ]; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Statistical output types +// +output_flag = { + ecnt = BOTH; + rps = NONE; + rhist = BOTH; + phist = BOTH; + orank = BOTH; + ssvar = BOTH; + relp = BOTH; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Ensemble product output types +// +ensemble_flag = { + mean = TRUE; + stdev = TRUE; + minus = TRUE; + plus = TRUE; + min = TRUE; + max = TRUE; + range = TRUE; + vld_count = TRUE; + frequency = TRUE; + nep = FALSE; + nmep = FALSE; + rank = TRUE; + weight = FALSE; +} + +//////////////////////////////////////////////////////////////////////////////// + +// +// Random number generator +// +rng = { + type = "mt19937"; + seed = "1"; +} + +//////////////////////////////////////////////////////////////////////////////// + +grid_weight_flag = NONE; +output_prefix = "${OUTPUT_PREFIX}"; +version = "V10.1.0"; + +//////////////////////////////////////////////////////////////////////////////// From 351af7c6396c6256f7e38024651a910fb1785162 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 13:41:50 -0600 Subject: [PATCH 36/43] Per issue #1858. Deleted these files git repository. These were replaced with: PointStatConfig_qty_inc_exc. SL --- test/config/PointStatConfig_qty_exc | 172 ---------------------------- test/config/PointStatConfig_qty_inc | 172 ---------------------------- 2 files changed, 344 deletions(-) delete mode 100644 test/config/PointStatConfig_qty_exc delete mode 100644 test/config/PointStatConfig_qty_inc diff --git a/test/config/PointStatConfig_qty_exc b/test/config/PointStatConfig_qty_exc deleted file mode 100644 index 9ba878398a..0000000000 --- a/test/config/PointStatConfig_qty_exc +++ /dev/null @@ -1,172 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Point-Stat configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "WRF"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = NONE; - method = NEAREST; - width = 1; -} - -//////////////////////////////////////////////////////////////////////////////// - -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; -eclv_points = 0.05; - -// -// Forecast and observation fields to be verified -// -fcst = { - sid_inc = []; - sid_exc = []; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; - message_type = [ "ADPSFC" ]; - obs_quality_inc = []; - obs_quality_exc = [ ${OBS_QUALITY_EXC_SFC} ]; - }, - - { - name = "TMP"; - level = [ "P500" ]; - cat_thresh = [ <=273, >273 ]; - message_type = [ "ADPUPA" ]; - obs_quality_inc = []; - obs_quality_exc = [ ${OBS_QUALITY_EXC_UPA} ]; - } - ]; - -} -obs = fcst; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = -5400; - end = 5400; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = [ "FULL" ]; - poly = []; - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = "1"; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// HiRA verification method -// -hira = { - flag = FALSE; - width = [ 2, 3, 4, 5 ]; - vld_thresh = 1.0; - cov_thresh = [ ==0.25 ]; - shape = SQUARE; - prob_cat_thresh = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = BOTH; - ctc = BOTH; - cts = BOTH; - mctc = NONE; - mcts = NONE; - cnt = BOTH; - sl1l2 = BOTH; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - ecnt = NONE; - orank = NONE; - rps = NONE; - eclv = BOTH; - mpr = BOTH; -} - -//////////////////////////////////////////////////////////////////////////////// - -duplicate_flag = NONE; -rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.1.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/test/config/PointStatConfig_qty_inc b/test/config/PointStatConfig_qty_inc deleted file mode 100644 index 61793579c7..0000000000 --- a/test/config/PointStatConfig_qty_inc +++ /dev/null @@ -1,172 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Point-Stat configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "WRF"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = NONE; - method = NEAREST; - width = 1; -} - -//////////////////////////////////////////////////////////////////////////////// - -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; -eclv_points = 0.05; - -// -// Forecast and observation fields to be verified -// -fcst = { - sid_inc = []; - sid_exc = []; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; - message_type = [ "ADPSFC" ]; - obs_quality_inc = [ ${OBS_QUALITY_INC_SFC} ]; - obs_quality_exc = []; - }, - - { - name = "TMP"; - level = [ "P500" ]; - cat_thresh = [ <=273, >273 ]; - message_type = [ "ADPUPA" ]; - obs_quality_inc = [ ${OBS_QUALITY_INC_UPA} ]; - obs_quality_exc = []; - } - ]; - -} -obs = fcst; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = -5400; - end = 5400; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = [ "FULL" ]; - poly = []; - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = "1"; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// HiRA verification method -// -hira = { - flag = FALSE; - width = [ 2, 3, 4, 5 ]; - vld_thresh = 1.0; - cov_thresh = [ ==0.25 ]; - shape = SQUARE; - prob_cat_thresh = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = BOTH; - ctc = BOTH; - cts = BOTH; - mctc = NONE; - mcts = NONE; - cnt = BOTH; - sl1l2 = BOTH; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - ecnt = NONE; - orank = NONE; - rps = NONE; - eclv = BOTH; - mpr = BOTH; -} - -//////////////////////////////////////////////////////////////////////////////// - -duplicate_flag = NONE; -rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.1.0"; - -//////////////////////////////////////////////////////////////////////////////// From 20f3635a02d6476b575f106f500e4d6e35279ae1 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 13:43:48 -0600 Subject: [PATCH 37/43] Per issue #1858. Deleted these files from the git repository. These were replaced with: EnsembleStatConfig_qty_inc_exc. SL --- test/config/EnsembleStatConfig_qty | 233 ------------------------- test/config/EnsembleStatConfig_qty_exc | 233 ------------------------- test/config/EnsembleStatConfig_qty_inc | 233 ------------------------- 3 files changed, 699 deletions(-) delete mode 100644 test/config/EnsembleStatConfig_qty delete mode 100644 test/config/EnsembleStatConfig_qty_exc delete mode 100644 test/config/EnsembleStatConfig_qty_inc diff --git a/test/config/EnsembleStatConfig_qty b/test/config/EnsembleStatConfig_qty deleted file mode 100644 index a73d1dd198..0000000000 --- a/test/config/EnsembleStatConfig_qty +++ /dev/null @@ -1,233 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Ensemble-Stat configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "WRF"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "ANALYS"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = NONE; - method = NEAREST; - width = 1; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product fields to be processed -// -ens = { - ens_thresh = 1.0; - vld_thresh = 1.0; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -nbrhd_prob = { - width = [ 5 ]; - shape = CIRCLE; - vld_thresh = 0.0; -} - -// -// NMEP smoothing methods -// -nmep_smooth = { - vld_thresh = 0.0; - shape = CIRCLE; - gaussian_dx = 81.27; - gaussian_radius = 120; - type = [ - { - method = GAUSSIAN; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Forecast and observation fields to be verified -// -fcst = { - message_type = [ "ADPSFC" ]; - sid_inc = []; - sid_exc = []; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - obs_quality_inc = [ ${OBS_QUALITY} ]; - obs_quality_exc = []; - } - ]; -} -obs = fcst; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -obs_thresh = [ NA ]; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; -skip_const = FALSE; - -// -// Observation error options -// Set dist_type to NONE to use the observation error table instead -// May be set separately in each "obs.field" entry -// -obs_error = { - flag = FALSE; - dist_type = NONE; - dist_parm = []; - inst_bias_scale = 1.0; - inst_bias_offset = 0.0; - min = NA; - max = NA; -} - -// -// Ensemble bin sizes -// May be set separately in each "obs.field" entry -// -ens_ssvar_bin_size = 1.0; -ens_phist_bin_size = 0.05; - -// -// Categorical thresholds to define ensemble probabilities -// May be set separately in each "fcst.field" entry -// -prob_cat_thresh = []; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = -5400; - end = 5400; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = [ "FULL" ]; - poly = []; - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - ecnt = BOTH; - rps = NONE; - rhist = BOTH; - phist = BOTH; - orank = BOTH; - ssvar = BOTH; - relp = BOTH; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product output types -// -ensemble_flag = { - mean = TRUE; - stdev = TRUE; - minus = TRUE; - plus = TRUE; - min = TRUE; - max = TRUE; - range = TRUE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Random number generator -// -rng = { - type = "mt19937"; - seed = "1"; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.1.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/test/config/EnsembleStatConfig_qty_exc b/test/config/EnsembleStatConfig_qty_exc deleted file mode 100644 index e6fb15a50e..0000000000 --- a/test/config/EnsembleStatConfig_qty_exc +++ /dev/null @@ -1,233 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Ensemble-Stat configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "WRF"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "ANALYS"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = NONE; - method = NEAREST; - width = 1; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product fields to be processed -// -ens = { - ens_thresh = 1.0; - vld_thresh = 1.0; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -nbrhd_prob = { - width = [ 5 ]; - shape = CIRCLE; - vld_thresh = 0.0; -} - -// -// NMEP smoothing methods -// -nmep_smooth = { - vld_thresh = 0.0; - shape = CIRCLE; - gaussian_dx = 81.27; - gaussian_radius = 120; - type = [ - { - method = GAUSSIAN; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Forecast and observation fields to be verified -// -fcst = { - message_type = [ "ADPSFC" ]; - sid_inc = []; - sid_exc = []; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - obs_quality_inc = []; - obs_quality_exc = [ ${OBS_QUALITY_EXC} ]; - } - ]; -} -obs = fcst; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -obs_thresh = [ NA ]; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; -skip_const = FALSE; - -// -// Observation error options -// Set dist_type to NONE to use the observation error table instead -// May be set separately in each "obs.field" entry -// -obs_error = { - flag = FALSE; - dist_type = NONE; - dist_parm = []; - inst_bias_scale = 1.0; - inst_bias_offset = 0.0; - min = NA; - max = NA; -} - -// -// Ensemble bin sizes -// May be set separately in each "obs.field" entry -// -ens_ssvar_bin_size = 1.0; -ens_phist_bin_size = 0.05; - -// -// Categorical thresholds to define ensemble probabilities -// May be set separately in each "fcst.field" entry -// -prob_cat_thresh = []; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = -5400; - end = 5400; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = [ "FULL" ]; - poly = []; - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - ecnt = BOTH; - rps = NONE; - rhist = BOTH; - phist = BOTH; - orank = BOTH; - ssvar = BOTH; - relp = BOTH; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product output types -// -ensemble_flag = { - mean = TRUE; - stdev = TRUE; - minus = TRUE; - plus = TRUE; - min = TRUE; - max = TRUE; - range = TRUE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Random number generator -// -rng = { - type = "mt19937"; - seed = "1"; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.1.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/test/config/EnsembleStatConfig_qty_inc b/test/config/EnsembleStatConfig_qty_inc deleted file mode 100644 index bca908ab55..0000000000 --- a/test/config/EnsembleStatConfig_qty_inc +++ /dev/null @@ -1,233 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Ensemble-Stat configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "WRF"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "ANALYS"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = NONE; - method = NEAREST; - width = 1; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product fields to be processed -// -ens = { - ens_thresh = 1.0; - vld_thresh = 1.0; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -nbrhd_prob = { - width = [ 5 ]; - shape = CIRCLE; - vld_thresh = 0.0; -} - -// -// NMEP smoothing methods -// -nmep_smooth = { - vld_thresh = 0.0; - shape = CIRCLE; - gaussian_dx = 81.27; - gaussian_radius = 120; - type = [ - { - method = GAUSSIAN; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Forecast and observation fields to be verified -// -fcst = { - message_type = [ "ADPSFC" ]; - sid_inc = []; - sid_exc = []; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - obs_quality_inc = [ ${OBS_QUALITY_INC} ]; - obs_quality_exc = []; - } - ]; -} -obs = fcst; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -obs_thresh = [ NA ]; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; -skip_const = FALSE; - -// -// Observation error options -// Set dist_type to NONE to use the observation error table instead -// May be set separately in each "obs.field" entry -// -obs_error = { - flag = FALSE; - dist_type = NONE; - dist_parm = []; - inst_bias_scale = 1.0; - inst_bias_offset = 0.0; - min = NA; - max = NA; -} - -// -// Ensemble bin sizes -// May be set separately in each "obs.field" entry -// -ens_ssvar_bin_size = 1.0; -ens_phist_bin_size = 0.05; - -// -// Categorical thresholds to define ensemble probabilities -// May be set separately in each "fcst.field" entry -// -prob_cat_thresh = []; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = -5400; - end = 5400; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = [ "FULL" ]; - poly = []; - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - ecnt = BOTH; - rps = NONE; - rhist = BOTH; - phist = BOTH; - orank = BOTH; - ssvar = BOTH; - relp = BOTH; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product output types -// -ensemble_flag = { - mean = TRUE; - stdev = TRUE; - minus = TRUE; - plus = TRUE; - min = TRUE; - max = TRUE; - range = TRUE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Random number generator -// -rng = { - type = "mt19937"; - seed = "1"; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.1.0"; - -//////////////////////////////////////////////////////////////////////////////// From 57b59bf48e26dd7c01e96ee4eadc59e92cf1f430 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 13:44:40 -0600 Subject: [PATCH 38/43] Per issue #1858. Deleted these files from the git repository. These were replaced with: PointStatConfig_qty_inc_exc. SL --- test/config/PointStatConfig_qty | 172 -------------------------------- 1 file changed, 172 deletions(-) delete mode 100644 test/config/PointStatConfig_qty diff --git a/test/config/PointStatConfig_qty b/test/config/PointStatConfig_qty deleted file mode 100644 index 61793579c7..0000000000 --- a/test/config/PointStatConfig_qty +++ /dev/null @@ -1,172 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Point-Stat configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "WRF"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = NONE; - method = NEAREST; - width = 1; -} - -//////////////////////////////////////////////////////////////////////////////// - -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; -eclv_points = 0.05; - -// -// Forecast and observation fields to be verified -// -fcst = { - sid_inc = []; - sid_exc = []; - - field = [ - { - name = "TMP"; - level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; - message_type = [ "ADPSFC" ]; - obs_quality_inc = [ ${OBS_QUALITY_INC_SFC} ]; - obs_quality_exc = []; - }, - - { - name = "TMP"; - level = [ "P500" ]; - cat_thresh = [ <=273, >273 ]; - message_type = [ "ADPUPA" ]; - obs_quality_inc = [ ${OBS_QUALITY_INC_UPA} ]; - obs_quality_exc = []; - } - ]; - -} -obs = fcst; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = -5400; - end = 5400; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = [ "FULL" ]; - poly = []; - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = "1"; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// HiRA verification method -// -hira = { - flag = FALSE; - width = [ 2, 3, 4, 5 ]; - vld_thresh = 1.0; - cov_thresh = [ ==0.25 ]; - shape = SQUARE; - prob_cat_thresh = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = BOTH; - ctc = BOTH; - cts = BOTH; - mctc = NONE; - mcts = NONE; - cnt = BOTH; - sl1l2 = BOTH; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - ecnt = NONE; - orank = NONE; - rps = NONE; - eclv = BOTH; - mpr = BOTH; -} - -//////////////////////////////////////////////////////////////////////////////// - -duplicate_flag = NONE; -rank_corr_flag = TRUE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.1.0"; - -//////////////////////////////////////////////////////////////////////////////// From a499cafd18e34be6260b74513666f36a7a56ac5d Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 15 Sep 2021 14:03:11 -0600 Subject: [PATCH 39/43] Per issue #1858: Modified: Don't need to run separate tests for obs_quality_inc and obs_quality_exc, these are now combined into one test via the updated config files: PointStatConfig_qty_inc_exc and EnsembleStatConfig_qty_inc_exc. SL --- test/xml/unit_quality_filter.xml | 92 +++++++++----------------------- 1 file changed, 24 insertions(+), 68 deletions(-) diff --git a/test/xml/unit_quality_filter.xml b/test/xml/unit_quality_filter.xml index e8178187a5..b3db881fc4 100644 --- a/test/xml/unit_quality_filter.xml +++ b/test/xml/unit_quality_filter.xml @@ -20,65 +20,45 @@ - + &MET_BIN;/point_stat OBS_QUALITY_INC_SFC "8" OBS_QUALITY_INC_UPA "2" - OUTPUT_PREFIX QTY_PB - - \ - &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ - &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ - &CONFIG_DIR;/PointStatConfig_qty_inc \ - -outdir &OUTPUT_DIR;/point_stat -v 3 - - - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V.stat - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_fho.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_ctc.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cts.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cnt.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_sl1l2.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_mpr.txt - - - - - &MET_BIN;/point_stat - OBS_QUALITY_EXC_SFC "9" OBS_QUALITY_EXC_UPA "9" - OUTPUT_PREFIX QTY_PB + OUTPUT_PREFIX QTY_INC_EXC_PB \ &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ - &CONFIG_DIR;/PointStatConfig_qty_exc \ + &CONFIG_DIR;/PointStatConfig_qty_inc_exc \ -outdir &OUTPUT_DIR;/point_stat -v 3 - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V.stat - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_fho.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_ctc.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cts.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cnt.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_sl1l2.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_mpr.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V.stat + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_fho.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_ctc.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_cts.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_cnt.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_sl1l2.txt + &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_mpr.txt - + &MET_BIN;/point_stat OBS_QUALITY_INC_SFC OBS_QUALITY_INC_UPA - OUTPUT_PREFIX QTY_PB + OBS_QUALITY_EXC_SFC + OBS_QUALITY_EXC_UPA + OUTPUT_PREFIX QTY_PB \ &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ - &CONFIG_DIR;/PointStatConfig_qty_inc \ + &CONFIG_DIR;/PointStatConfig_qty_inc_exc \ -outdir &OUTPUT_DIR;/point_stat -v 3 @@ -92,53 +72,29 @@ - + &MET_BIN;/ensemble_stat OBS_QUALITY_INC "V", "G", "S" - OUTPUT_PREFIX QTY_MADIS_VGS - - \ - 3 \ - &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040900_F012.grib \ - &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040900_F012.grib \ - &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040900_F012.grib \ - &CONFIG_DIR;/EnsembleStatConfig_qty_inc \ - -point_obs &OUTPUT_DIR;/madis2nc/metar_2012040912_F000.nc \ - -outdir &OUTPUT_DIR;/ensemble_stat -v 3 - - - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V.stat - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_ecnt.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_rhist.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_phist.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_orank.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_ens.nc - - - - - &MET_BIN;/ensemble_stat - OBS_QUALITY_EXC "C" - OUTPUT_PREFIX QTY_MADIS_VGS + OUTPUT_PREFIX QTY_INC_EXC_MADIS_VGS \ 3 \ &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040900_F012.grib \ &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040900_F012.grib \ &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040900_F012.grib \ - &CONFIG_DIR;/EnsembleStatConfig_qty_exc \ + &CONFIG_DIR;/EnsembleStatConfig_qty_inc_exc \ -point_obs &OUTPUT_DIR;/madis2nc/metar_2012040912_F000.nc \ -outdir &OUTPUT_DIR;/ensemble_stat -v 3 - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V.stat - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_ecnt.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_rhist.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_phist.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_orank.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_MADIS_VGS_20120409_120000V_ens.nc + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V.stat + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_ecnt.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_rhist.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_phist.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_orank.txt + &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_ens.nc From 31e98f22d925415c9e66e7c70a516cb5b9ed8c02 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Wed, 15 Sep 2021 14:19:29 -0600 Subject: [PATCH 40/43] Per #1858, update the logic in parse_conf_obs_qty_inc() to use last_lookup_status(). See forthcoming GitHub issue comment about this. --- met/src/basic/vx_config/config_util.cc | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index 5b124edbeb..371065d756 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -770,22 +770,23 @@ vector parse_conf_llpnt_mask(Dictionary *dict) { StringArray parse_conf_obs_qty_inc(Dictionary *dict) { StringArray sa; const char *method_name = "parse_conf_obs_qty_inc() -> "; - - // Check for old "obs_quality" entry and print a warning message - StringArray obs_qty_sa = dict->lookup_string_array(conf_key_obs_qty); - - if(obs_qty_sa.n() > 0){ - mlog << Warning << "\nparse_conf_obs_qty_inc() -> " - << "The configuration option \"" << conf_key_obs_qty - << "\" is deprecated. Use \"" << conf_key_obs_qty_inc - << "\" instead.\n\n"; - sa = parse_conf_string_array(dict, conf_key_obs_qty, method_name); + // Check for old "obs_quality" entry + sa = dict->lookup_string_array(conf_key_obs_qty, false); + + // Print a warning if the deprecated option was used + if(dict->last_lookup_status()) { + mlog << Warning << "\nparse_conf_obs_qty_inc() -> " + << "Set the \"" << conf_key_obs_qty_inc << "\" value (" + << write_css(sa) << ") from the deprecated \"" + << conf_key_obs_qty << "\" configuration entry. " + << "Replace \"" << conf_key_obs_qty << "\" with \"" + << conf_key_obs_qty_inc << "\".\n\n"; } else { sa = parse_conf_string_array(dict, conf_key_obs_qty_inc, method_name); } - + return(sa); } From 5a3bd3dcda17fc5f550728da45f9f0903de75506 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Wed, 15 Sep 2021 14:39:02 -0600 Subject: [PATCH 41/43] Per #1858, tweak the warning message. --- met/src/basic/vx_config/config_util.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/met/src/basic/vx_config/config_util.cc b/met/src/basic/vx_config/config_util.cc index 371065d756..517c677524 100644 --- a/met/src/basic/vx_config/config_util.cc +++ b/met/src/basic/vx_config/config_util.cc @@ -779,9 +779,9 @@ StringArray parse_conf_obs_qty_inc(Dictionary *dict) { mlog << Warning << "\nparse_conf_obs_qty_inc() -> " << "Set the \"" << conf_key_obs_qty_inc << "\" value (" << write_css(sa) << ") from the deprecated \"" - << conf_key_obs_qty << "\" configuration entry. " + << conf_key_obs_qty << "\" configuration entry.\n" << "Replace \"" << conf_key_obs_qty << "\" with \"" - << conf_key_obs_qty_inc << "\".\n\n"; + << conf_key_obs_qty_inc << "\"!\n\n"; } else { sa = parse_conf_string_array(dict, conf_key_obs_qty_inc, method_name); From cd21f90efd28a9a637deba664e226c92456b1144 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Wed, 15 Sep 2021 17:14:59 -0600 Subject: [PATCH 42/43] Per #1858, made the existing unit_quality_filter.xml tests a bit more concise. Call Point-Stat and Ensemble-Stat only once each time. But for each, test 3 things: all qty, obs_quality_inc, and obs_quality_exc. --- test/config/EnsembleStatConfig_qty_inc_exc | 14 +++++-- test/config/PointStatConfig_qty_inc_exc | 35 +++++++++++----- test/xml/unit_quality_filter.xml | 46 ++++------------------ 3 files changed, 44 insertions(+), 51 deletions(-) diff --git a/test/config/EnsembleStatConfig_qty_inc_exc b/test/config/EnsembleStatConfig_qty_inc_exc index f762de720f..17009a61a0 100644 --- a/test/config/EnsembleStatConfig_qty_inc_exc +++ b/test/config/EnsembleStatConfig_qty_inc_exc @@ -89,6 +89,14 @@ fcst = { sid_exc = []; field = [ + { + name = "TMP"; + level = [ "Z2" ]; + obs_quality_inc = []; + obs_quality_exc = []; + desc = "ALL_QTY"; + }, + { name = "TMP"; level = [ "Z2" ]; @@ -196,10 +204,10 @@ output_flag = { ecnt = BOTH; rps = NONE; rhist = BOTH; - phist = BOTH; + phist = NONE; orank = BOTH; - ssvar = BOTH; - relp = BOTH; + ssvar = NONE; + relp = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/test/config/PointStatConfig_qty_inc_exc b/test/config/PointStatConfig_qty_inc_exc index ae34eef7a5..6e4f88509a 100644 --- a/test/config/PointStatConfig_qty_inc_exc +++ b/test/config/PointStatConfig_qty_inc_exc @@ -40,14 +40,32 @@ eclv_points = 0.05; // Forecast and observation fields to be verified // fcst = { - sid_inc = []; - sid_exc = []; + sid_inc = []; + sid_exc = []; + cat_thresh = [ <=273, >273 ]; field = [ { name = "TMP"; level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; + message_type = [ "ADPSFC" ]; + obs_quality_inc = []; + obs_quality_exc = []; + desc = "ALL_QTY"; + }, + + { + name = "TMP"; + level = [ "P500" ]; + message_type = [ "ADPUPA" ]; + obs_quality_inc = []; + obs_quality_exc = []; + desc = "ALL_QTY"; + }, + + { + name = "TMP"; + level = [ "Z2" ]; message_type = [ "ADPSFC" ]; obs_quality_inc = [ ${OBS_QUALITY_INC_SFC} ]; obs_quality_exc = []; @@ -57,7 +75,6 @@ fcst = { { name = "TMP"; level = [ "P500" ]; - cat_thresh = [ <=273, >273 ]; message_type = [ "ADPUPA" ]; obs_quality_inc = [ ${OBS_QUALITY_INC_UPA} ]; obs_quality_exc = []; @@ -67,7 +84,6 @@ fcst = { { name = "TMP"; level = [ "Z2" ]; - cat_thresh = [ <=273, >273 ]; message_type = [ "ADPSFC" ]; obs_quality_inc = []; obs_quality_exc = [ ${OBS_QUALITY_EXC_SFC} ]; @@ -77,7 +93,6 @@ fcst = { { name = "TMP"; level = [ "P500" ]; - cat_thresh = [ <=273, >273 ]; message_type = [ "ADPUPA" ]; obs_quality_inc = []; obs_quality_exc = [ ${OBS_QUALITY_EXC_UPA} ]; @@ -161,12 +176,12 @@ hira = { // Statistical output types // output_flag = { - fho = BOTH; + fho = NONE; ctc = BOTH; - cts = BOTH; + cts = NONE; mctc = NONE; mcts = NONE; - cnt = BOTH; + cnt = NONE; sl1l2 = BOTH; sal1l2 = NONE; vl1l2 = NONE; @@ -179,7 +194,7 @@ output_flag = { ecnt = NONE; orank = NONE; rps = NONE; - eclv = BOTH; + eclv = NONE; mpr = BOTH; } diff --git a/test/xml/unit_quality_filter.xml b/test/xml/unit_quality_filter.xml index b3db881fc4..215c74328f 100644 --- a/test/xml/unit_quality_filter.xml +++ b/test/xml/unit_quality_filter.xml @@ -23,11 +23,11 @@ &MET_BIN;/point_stat - OBS_QUALITY_INC_SFC "8" - OBS_QUALITY_INC_UPA "2" - OBS_QUALITY_EXC_SFC "9" - OBS_QUALITY_EXC_UPA "9" - OUTPUT_PREFIX QTY_INC_EXC_PB + OBS_QUALITY_INC_SFC "8" + OBS_QUALITY_INC_UPA "2" + OBS_QUALITY_EXC_SFC "9" + OBS_QUALITY_EXC_UPA "9" + OUTPUT_PREFIX QTY_INC_EXC_PB \ &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ @@ -37,47 +37,18 @@ &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V.stat - &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_fho.txt &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_ctc.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_cts.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_cnt.txt &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_sl1l2.txt &OUTPUT_DIR;/point_stat/point_stat_QTY_INC_EXC_PB_120000L_20120409_120000V_mpr.txt - - &MET_BIN;/point_stat - - OBS_QUALITY_INC_SFC - OBS_QUALITY_INC_UPA - OBS_QUALITY_EXC_SFC - OBS_QUALITY_EXC_UPA - OUTPUT_PREFIX QTY_PB - - \ - &DATA_DIR_MODEL;/grib1/nam/nam_2012040900_F012.grib \ - &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \ - &CONFIG_DIR;/PointStatConfig_qty_inc_exc \ - -outdir &OUTPUT_DIR;/point_stat -v 3 - - - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V.stat - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_fho.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_ctc.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cts.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_cnt.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_sl1l2.txt - &OUTPUT_DIR;/point_stat/point_stat_QTY_PB_120000L_20120409_120000V_mpr.txt - - - &MET_BIN;/ensemble_stat - OBS_QUALITY_INC "V", "G", "S" - OBS_QUALITY_EXC "C" - OUTPUT_PREFIX QTY_INC_EXC_MADIS_VGS + OBS_QUALITY_INC "V", "G", "S" + OBS_QUALITY_EXC "C" + OUTPUT_PREFIX QTY_INC_EXC_MADIS_VGS \ 3 \ @@ -92,7 +63,6 @@ &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V.stat &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_ecnt.txt &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_rhist.txt - &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_phist.txt &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_orank.txt &OUTPUT_DIR;/ensemble_stat/ensemble_stat_QTY_INC_EXC_MADIS_VGS_20120409_120000V_ens.nc From 04270920d20cd181b79f979878f7bcd81a579726 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Wed, 15 Sep 2021 17:17:58 -0600 Subject: [PATCH 43/43] Per #1858, remove the _ON from the job name since the _OFF has been included in the same configuration. --- test/xml/unit_quality_filter.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/xml/unit_quality_filter.xml b/test/xml/unit_quality_filter.xml index 215c74328f..912f52bda3 100644 --- a/test/xml/unit_quality_filter.xml +++ b/test/xml/unit_quality_filter.xml @@ -20,7 +20,7 @@ - + &MET_BIN;/point_stat OBS_QUALITY_INC_SFC "8"