From f98840531301d9219d38b14f1dda262a35c14fce Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 6 Aug 2021 14:31:21 -0600 Subject: [PATCH 01/22] Per #1764 added write_orank_row() to do_hera_ens(). SL --- met/src/tools/core/point_stat/point_stat.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 9f49049fdb..6a5b8791ad 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -1749,6 +1749,23 @@ void do_hira_ens(int i_vx, const PairDataPoint *pd_ptr) { txt_at[i_ecnt], i_txt_row[i_ecnt]); } // end if ECNT + // Write out the ORANK line + if(conf_info.vx_opt[i_vx].output_flag[i_orank] != STATOutputType_None) { + + cout << "Doing ORANK ensemble statistics" << endl; + + // Compute ensemble statistics + hira_pd.compute_pair_vals(rng_ptr); + + write_orank_row(shc, &hira_pd, + conf_info.vx_opt[i_vx].output_flag[i_orank], + stat_at, i_stat_row, + txt_at[i_orank], i_txt_row[i_orank]); + + cout << "Check after write_orank_row" << endl; + + } // end if ORANK + // Write out the RPS line if(conf_info.vx_opt[i_vx].output_flag[i_rps] != STATOutputType_None) { From 2482ea26a5075a93f62562d1d1f4aa444245f076 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 6 Aug 2021 14:34:25 -0600 Subject: [PATCH 02/22] Per issue #1764, added orank stat type for ensemble output. SL --- .../core/point_stat/point_stat_conf_info.cc | 5 +++-- .../core/point_stat/point_stat_conf_info.h | 22 ++++++++++--------- 2 files changed, 15 insertions(+), 12 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 e56352d4ad..d93d5805a4 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 @@ -744,7 +744,7 @@ void PointStatVxOpt::process_config(GrdFileType ftype, // Conf: output_flag output_map = parse_conf_output_flag(&odict, txt_file_type, n_txt); - + // Populate the output_flag array with map values for(i=0; i Date: Wed, 11 Aug 2021 15:48:58 -0600 Subject: [PATCH 03/22] Per issue #1764, added code to setup_txt_files() for ORANK output. SL --- met/src/tools/core/point_stat/point_stat.cc | 48 ++++++++++++++++++--- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 6a5b8791ad..6f1d964f79 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -327,9 +327,10 @@ void setup_first_pass(const DataPlane &dp, const Grid &data_grid) { //////////////////////////////////////////////////////////////////////// void setup_txt_files() { - int i, max_col, max_prob_col, max_mctc_col, n_prob, n_cat, n_eclv; + int i, j, max_col, max_prob_col, max_mctc_col, n_prob, n_cat, n_eclv; + int max_orank_col, hira_width, width_max, n_ens; ConcatString base_name; - + // Create output file names for the stat file and optional text files build_outfile_name(fcst_valid_ut, fcst_lead_sec, "", base_name); @@ -343,21 +344,44 @@ void setup_txt_files() { n_prob = conf_info.get_max_n_fprob_thresh(); n_cat = conf_info.get_max_n_cat_thresh() + 1; n_eclv = conf_info.get_max_n_eclv_points(); - + // Check for HiRA output for(i=0; i Date: Tue, 17 Aug 2021 11:46:32 -0600 Subject: [PATCH 05/22] Per #1764, add orank to the list of outputs created by point_stat. --- met/src/tools/core/point_stat/point_stat.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat.h b/met/src/tools/core/point_stat/point_stat.h index dc232a52de..6cbe9b83c2 100644 --- a/met/src/tools/core/point_stat/point_stat.h +++ b/met/src/tools/core/point_stat/point_stat.h @@ -70,8 +70,8 @@ static const char **txt_columns[n_txt] = { sl1l2_columns, sal1l2_columns, vl1l2_columns, val1l2_columns, pct_columns, pstd_columns, pjc_columns, prc_columns, ecnt_columns, - rps_columns, eclv_columns, mpr_columns, - vcnt_columns + orank_columns, rps_columns, eclv_columns, + mpr_columns, vcnt_columns }; // Length of header columns @@ -81,8 +81,8 @@ static const int n_txt_columns[n_txt] = { n_sl1l2_columns, n_sal1l2_columns, n_vl1l2_columns, n_val1l2_columns, n_pct_columns, n_pstd_columns, n_pjc_columns, n_prc_columns, n_ecnt_columns, - n_rps_columns, n_eclv_columns, n_mpr_columns, - n_vcnt_columns + n_orank_columns, n_rps_columns, n_eclv_columns, + n_mpr_columns, n_vcnt_columns }; // Text file abbreviations @@ -92,8 +92,8 @@ static const char *txt_file_abbr[n_txt] = { "sl1l2", "sal1l2", "vl1l2", "val1l2", "pct", "pstd", "pjc", "prc", "ecnt", - "rps", "eclv", "mpr", - "vcnt" + "orank", "rps", "eclv", + "mpr", "vcnt" }; //////////////////////////////////////////////////////////////////////// From 1c5c7fd4096d48fa323edc5d803914297363680e Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Tue, 17 Aug 2021 11:49:07 -0600 Subject: [PATCH 06/22] Per #1764, add functions to compute the number of requested HiRA probabilities and ensemble members. Also update n_txt_row() to keep track of the number of ORANK rows to be written. Not totally sure if I'm counting these ORANK output lines correctly though. --- .../core/point_stat/point_stat_conf_info.cc | 48 ++++++++++++++++++- .../core/point_stat/point_stat_conf_info.h | 20 ++++---- 2 files changed, 59 insertions(+), 9 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 d93d5805a4..bdab1d9d21 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 @@ -523,6 +523,26 @@ int PointStatConfInfo::get_max_n_eclv_points() const { //////////////////////////////////////////////////////////////////////// +int PointStatConfInfo::get_max_n_hira_ens() const { + int i, n; + + for(i=0,n=0; i ECLV lines = // Message Types * Masks * Interpolations * Thresholds * @@ -1283,3 +1316,16 @@ int PointStatVxOpt::get_n_oprob_thresh() const { } //////////////////////////////////////////////////////////////////////// + +int PointStatVxOpt::get_n_hira_ens() const { + int n = (hira_info.flag ? hira_info.width.max() : 0); + return(n*n); +} + +//////////////////////////////////////////////////////////////////////// + +int PointStatVxOpt::get_n_hira_prob() const { + return(hira_info.flag ? hira_info.cov_ta.n() : 0); +} + +//////////////////////////////////////////////////////////////////////// diff --git a/met/src/tools/core/point_stat/point_stat_conf_info.h b/met/src/tools/core/point_stat/point_stat_conf_info.h index d45ca0baa5..5bc964069d 100644 --- a/met/src/tools/core/point_stat/point_stat_conf_info.h +++ b/met/src/tools/core/point_stat/point_stat_conf_info.h @@ -45,8 +45,8 @@ static const int i_pstd = 11; static const int i_pjc = 12; static const int i_prc = 13; static const int i_ecnt = 14; -static const int i_orank = 15; +static const int i_orank = 15; static const int i_rps = 16; static const int i_eclv = 17; static const int i_mpr = 18; @@ -74,8 +74,8 @@ static const STATLineType txt_file_type[n_txt] = { stat_pjc, // 12 stat_prc, // 13 stat_ecnt, // 14 + stat_orank, // 15 - stat_rps, // 16 stat_eclv, // 17 stat_mpr, // 18 @@ -180,19 +180,21 @@ class PointStatVxOpt { int get_n_oprob_thresh() const; int get_n_eclv_points() const; + int get_n_hira_ens() const; + int get_n_hira_prob() const; int get_n_cdf_bin() const; int get_n_ci_alpha() const; }; //////////////////////////////////////////////////////////////////////// -inline int PointStatVxOpt::get_n_msg_typ() const { return(msg_typ.n_elements()); } -inline int PointStatVxOpt::get_n_mask() const { return(mask_name.n_elements()); } -inline int PointStatVxOpt::get_n_interp() const { return(interp_info.n_interp); } +inline int PointStatVxOpt::get_n_msg_typ() const { return(msg_typ.n()); } +inline int PointStatVxOpt::get_n_mask() const { return(mask_name.n()); } +inline int PointStatVxOpt::get_n_interp() const { return(interp_info.n_interp); } -inline int PointStatVxOpt::get_n_eclv_points() const { return(eclv_points.n_elements()); } -inline int PointStatVxOpt::get_n_cdf_bin() const { return(cdf_info.n_bin); } -inline int PointStatVxOpt::get_n_ci_alpha() const { return(ci_alpha.n_elements()); } +inline int PointStatVxOpt::get_n_eclv_points() const { return(eclv_points.n()); } +inline int PointStatVxOpt::get_n_cdf_bin() const { return(cdf_info.n_bin); } +inline int PointStatVxOpt::get_n_ci_alpha() const { return(ci_alpha.n()); } //////////////////////////////////////////////////////////////////////// @@ -268,6 +270,8 @@ class PointStatConfInfo { int get_max_n_fprob_thresh() const; int get_max_n_oprob_thresh() const; int get_max_n_eclv_points() const; + int get_max_n_hira_ens() const; + int get_max_n_hira_prob() const; // Check for any verification of vectors bool get_vflag() const; From 237ed251c784cbfa88fc0c4c19142d0c37d98c3c Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Tue, 17 Aug 2021 11:50:15 -0600 Subject: [PATCH 07/22] Per #1764, update logic in setup_txt_files() to call get_max_n_hira_prob() and get_max_n_hira_ens() functions. --- met/src/tools/core/point_stat/point_stat.cc | 51 ++++++--------------- 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 1ecfb091f8..0608db66da 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -327,8 +327,9 @@ void setup_first_pass(const DataPlane &dp, const Grid &data_grid) { //////////////////////////////////////////////////////////////////////// void setup_txt_files() { - int i, j, max_col, max_prob_col, max_mctc_col, n_prob, n_cat, n_eclv; - int max_orank_col, hira_width, width_max, n_ens; + int i, j; + int max_col, max_prob_col, max_mctc_col, max_orank_col; + int n_prob, n_cat, n_eclv, n_ens; ConcatString base_name; // Create output file names for the stat file and optional text files @@ -341,47 +342,21 @@ void setup_txt_files() { ///////////////////////////////////////////////////////////////////// // Get the maximum number of data columns - n_prob = conf_info.get_max_n_fprob_thresh(); + n_prob = max(conf_info.get_max_n_fprob_thresh(), + conf_info.get_max_n_hira_prob()); n_cat = conf_info.get_max_n_cat_thresh() + 1; n_eclv = conf_info.get_max_n_eclv_points(); - - // Check for HiRA output - for(i=0; i Date: Fri, 20 Aug 2021 10:50:05 -0600 Subject: [PATCH 10/22] Per issue #1764 added 'orank = NONE' to the config files for compatibility with changes to point_stat for calculating ORANK. SL --- test/config/PointStatConfig_APCP | 1 + test/config/PointStatConfig_GTG_latlon | 1 + test/config/PointStatConfig_GTG_lc | 1 + test/config/PointStatConfig_INTERP_OPTS | 1 + test/config/PointStatConfig_LAND_TOPO_MASK | 1 + test/config/PointStatConfig_MASK_SID | 1 + test/config/PointStatConfig_PHYS | 1 + test/config/PointStatConfig_PHYS_pint | 1 + test/config/PointStatConfig_WINDS | 1 + test/config/PointStatConfig_aeronet | 1 + test/config/PointStatConfig_airnow | 1 + test/config/PointStatConfig_climo | 1 + test/config/PointStatConfig_climo_WMO | 1 + test/config/PointStatConfig_climo_prob | 1 + test/config/PointStatConfig_dup | 1 + test/config/PointStatConfig_mpr_thresh | 1 + test/config/PointStatConfig_obs_summary | 1 + test/config/PointStatConfig_obs_summary_all | 1 + test/config/PointStatConfig_prob | 1 + test/config/PointStatConfig_python | 1 + test/config/PointStatConfig_qty | 1 + test/config/PointStatConfig_sid_inc_exc | 1 + 22 files changed, 22 insertions(+) diff --git a/test/config/PointStatConfig_APCP b/test/config/PointStatConfig_APCP index 003f9f50a0..ea8b55a5b4 100644 --- a/test/config/PointStatConfig_APCP +++ b/test/config/PointStatConfig_APCP @@ -120,6 +120,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = NONE; diff --git a/test/config/PointStatConfig_GTG_latlon b/test/config/PointStatConfig_GTG_latlon index 7e6e2c53d2..1ac24d927e 100644 --- a/test/config/PointStatConfig_GTG_latlon +++ b/test/config/PointStatConfig_GTG_latlon @@ -142,6 +142,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_GTG_lc b/test/config/PointStatConfig_GTG_lc index 4b6df47f87..5efd47662c 100644 --- a/test/config/PointStatConfig_GTG_lc +++ b/test/config/PointStatConfig_GTG_lc @@ -150,6 +150,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_INTERP_OPTS b/test/config/PointStatConfig_INTERP_OPTS index 4923dab75b..c255c5b565 100644 --- a/test/config/PointStatConfig_INTERP_OPTS +++ b/test/config/PointStatConfig_INTERP_OPTS @@ -133,6 +133,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = STAT; diff --git a/test/config/PointStatConfig_LAND_TOPO_MASK b/test/config/PointStatConfig_LAND_TOPO_MASK index 74d7e28be1..4d1ab530fc 100644 --- a/test/config/PointStatConfig_LAND_TOPO_MASK +++ b/test/config/PointStatConfig_LAND_TOPO_MASK @@ -173,6 +173,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = BOTH; diff --git a/test/config/PointStatConfig_MASK_SID b/test/config/PointStatConfig_MASK_SID index 95c30a9d16..e4174e9e9a 100644 --- a/test/config/PointStatConfig_MASK_SID +++ b/test/config/PointStatConfig_MASK_SID @@ -128,6 +128,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_PHYS b/test/config/PointStatConfig_PHYS index 4a5640ddcb..7a767a54da 100644 --- a/test/config/PointStatConfig_PHYS +++ b/test/config/PointStatConfig_PHYS @@ -129,6 +129,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_PHYS_pint b/test/config/PointStatConfig_PHYS_pint index 9102584bff..4149345038 100644 --- a/test/config/PointStatConfig_PHYS_pint +++ b/test/config/PointStatConfig_PHYS_pint @@ -124,6 +124,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_WINDS b/test/config/PointStatConfig_WINDS index 4f17fff75a..2b3ff9988e 100644 --- a/test/config/PointStatConfig_WINDS +++ b/test/config/PointStatConfig_WINDS @@ -145,6 +145,7 @@ output_flag = { prc = NONE; ecnt = NONE; rps = NONE; + orank = NONE; eclv = NONE; mpr = NONE; } diff --git a/test/config/PointStatConfig_aeronet b/test/config/PointStatConfig_aeronet index b36dd7f39c..58579bdf68 100644 --- a/test/config/PointStatConfig_aeronet +++ b/test/config/PointStatConfig_aeronet @@ -193,6 +193,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = STAT; diff --git a/test/config/PointStatConfig_airnow b/test/config/PointStatConfig_airnow index cbf3c76c11..7420b10455 100644 --- a/test/config/PointStatConfig_airnow +++ b/test/config/PointStatConfig_airnow @@ -223,6 +223,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = STAT; diff --git a/test/config/PointStatConfig_climo b/test/config/PointStatConfig_climo index cd81aa6fbf..cb6eaea84b 100644 --- a/test/config/PointStatConfig_climo +++ b/test/config/PointStatConfig_climo @@ -262,6 +262,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = BOTH; diff --git a/test/config/PointStatConfig_climo_WMO b/test/config/PointStatConfig_climo_WMO index fa7499ab84..201e794890 100644 --- a/test/config/PointStatConfig_climo_WMO +++ b/test/config/PointStatConfig_climo_WMO @@ -210,6 +210,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = BOTH; + orank = NONE; rps = BOTH; eclv = NONE; mpr = BOTH; diff --git a/test/config/PointStatConfig_climo_prob b/test/config/PointStatConfig_climo_prob index 18ac41ccdf..2447701f95 100644 --- a/test/config/PointStatConfig_climo_prob +++ b/test/config/PointStatConfig_climo_prob @@ -212,6 +212,7 @@ output_flag = { pjc = BOTH; prc = BOTH; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_dup b/test/config/PointStatConfig_dup index 4dfe9f5c11..9298bb58ec 100644 --- a/test/config/PointStatConfig_dup +++ b/test/config/PointStatConfig_dup @@ -146,6 +146,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = STAT; mpr = BOTH; diff --git a/test/config/PointStatConfig_mpr_thresh b/test/config/PointStatConfig_mpr_thresh index daf7a11d2f..66bde341ef 100644 --- a/test/config/PointStatConfig_mpr_thresh +++ b/test/config/PointStatConfig_mpr_thresh @@ -204,6 +204,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = NONE; diff --git a/test/config/PointStatConfig_obs_summary b/test/config/PointStatConfig_obs_summary index 908f86e44c..b8129521ec 100644 --- a/test/config/PointStatConfig_obs_summary +++ b/test/config/PointStatConfig_obs_summary @@ -135,6 +135,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = STAT; mpr = BOTH; diff --git a/test/config/PointStatConfig_obs_summary_all b/test/config/PointStatConfig_obs_summary_all index 636ed3d001..080ba56dff 100644 --- a/test/config/PointStatConfig_obs_summary_all +++ b/test/config/PointStatConfig_obs_summary_all @@ -204,6 +204,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = STAT; mpr = BOTH; diff --git a/test/config/PointStatConfig_prob b/test/config/PointStatConfig_prob index b1fe365e2b..e2ed42b77f 100644 --- a/test/config/PointStatConfig_prob +++ b/test/config/PointStatConfig_prob @@ -131,6 +131,7 @@ output_flag = { pjc = BOTH; prc = BOTH; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = NONE; diff --git a/test/config/PointStatConfig_python b/test/config/PointStatConfig_python index 0c66c8c4f0..752fb7a928 100644 --- a/test/config/PointStatConfig_python +++ b/test/config/PointStatConfig_python @@ -201,6 +201,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = STAT; diff --git a/test/config/PointStatConfig_qty b/test/config/PointStatConfig_qty index 98ad597e46..6f7db1b826 100644 --- a/test/config/PointStatConfig_qty +++ b/test/config/PointStatConfig_qty @@ -153,6 +153,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = BOTH; mpr = BOTH; diff --git a/test/config/PointStatConfig_sid_inc_exc b/test/config/PointStatConfig_sid_inc_exc index 62e6e9b43f..9dc3e7fdcf 100644 --- a/test/config/PointStatConfig_sid_inc_exc +++ b/test/config/PointStatConfig_sid_inc_exc @@ -136,6 +136,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; + orank = NONE; rps = NONE; eclv = NONE; mpr = BOTH; From ecea0ef0e48dbdd2f24ae27b7029d556173bbfe0 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 20 Aug 2021 10:52:03 -0600 Subject: [PATCH 11/22] Per issue #1764 added 'orank = STAT' to config file to produce ORANK output lines in point_stat. SL --- test/config/PointStatConfig_APCP_HIRA | 1 + 1 file changed, 1 insertion(+) diff --git a/test/config/PointStatConfig_APCP_HIRA b/test/config/PointStatConfig_APCP_HIRA index eefbcfdda0..412d2d8fe7 100644 --- a/test/config/PointStatConfig_APCP_HIRA +++ b/test/config/PointStatConfig_APCP_HIRA @@ -123,6 +123,7 @@ output_flag = { pjc = STAT; prc = STAT; ecnt = STAT; + orank = STAT; rps = STAT; eclv = STAT; mpr = STAT; From 9075932ea8eae50843f7d447bb1b4d6e158d7024 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 20 Aug 2021 11:42:56 -0600 Subject: [PATCH 12/22] Per issue #1764 added content in all relevant sections for ORANK: observation rank statistic. SL --- met/docs/Users_Guide/point-stat.rst | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/met/docs/Users_Guide/point-stat.rst b/met/docs/Users_Guide/point-stat.rst index 162f86926c..48a80cb3a9 100644 --- a/met/docs/Users_Guide/point-stat.rst +++ b/met/docs/Users_Guide/point-stat.rst @@ -121,7 +121,7 @@ The forecast value at P is chosen as the grid point inside the interpolation are HiRA framework ~~~~~~~~~~~~~~ -The Point-Stat tool has been enhanced to include the High Resolution Assessment (HiRA) verification logic (:ref:`Mittermaier, 2014 `). HiRA is analogous to neighborhood verification but for point observations. The HiRA logic interprets the forecast values surrounding each point observation as an ensemble forecast. These ensemble values are processed in two ways. First, the ensemble continuous statistics (ECNT) and the ranked probability score (RPS) line types are computed directly from the ensemble values. Second, for each categorical threshold specified, a fractional coverage value is computed as the ratio of the nearby forecast values that meet the threshold criteria. Point-Stat evaluates those fractional coverage values as if they were a probability forecast. When applying HiRA, users should enable the matched pair (MPR), probabilistic (PCT, PSTD, PJC, or PRC), continuous ensemble statistics (ECNT), or ranked probability score (RPS) line types in the **output_flag** dictionary. The number of probabilistic HiRA output lines is determined by the number of categorical forecast thresholds and HiRA neighborhood widths chosen. +The Point-Stat tool has been enhanced to include the High Resolution Assessment (HiRA) verification logic (:ref:`Mittermaier, 2014 `). HiRA is analogous to neighborhood verification but for point observations. The HiRA logic interprets the forecast values surrounding each point observation as an ensemble forecast. These ensemble values are processed in three ways. First, the ensemble continuous statistics (ECNT), the observation rank statistics (ORANK) and the ranked probability score (RPS) line types are computed directly from the ensemble values. Second, for each categorical threshold specified, a fractional coverage value is computed as the ratio of the nearby forecast values that meet the threshold criteria. Point-Stat evaluates those fractional coverage values as if they were a probability forecast. When applying HiRA, users should enable the matched pair (MPR), probabilistic (PCT, PSTD, PJC, or PRC), continuous ensemble statistics (ECNT), observation rank statistics (ORANK) or ranked probability score (RPS) line types in the **output_flag** dictionary. The number of probabilistic HiRA output lines is determined by the number of categorical forecast thresholds and HiRA neighborhood widths chosen. The HiRA framework provides a unique method for evaluating models in the neighborhood of point observations, allowing for some spatial and temporal uncertainty in the forecast and/or the observations. Additionally, the HiRA framework can be used to compare deterministic forecasts to ensemble forecasts. In MET, the neighborhood is a circle or square centered on the grid point closest to the observation location. An event is defined, then the proportion of points with events in the neighborhood is calculated. This proportion is treated as an ensemble probability, though it is likely to be uncalibrated. @@ -425,6 +425,7 @@ ________________________ pjc = BOTH; prc = BOTH; ecnt = BOTH; // Only for HiRA + orank = BOTH; // Only for HiRA rps = BOTH; // Only for HiRA eclv = BOTH; mpr = BOTH; @@ -450,19 +451,19 @@ The **output_flag** array controls the type of output that the Point-Stat tool g 9. **VL1L2** for Vector L1L2 Partial Sums -10. **VCNT** for Vector Continuous Statistics (Note that bootstrap confidence intervals are not currently calculated for this line type.) +10. **VAL1L2** for Vector Anomaly L1L2 Partial Sums when climatological data is supplied -11. **VAL1L2** for Vector Anomaly L1L2 Partial Sums when climatological data is supplied +11. **PCT** for Contingency Table counts for Probabilistic forecasts -12. **PCT** for Contingency Table counts for Probabilistic forecasts +12. **PSTD** for contingency table Statistics for Probabilistic forecasts with Dichotomous outcomes -13. **PSTD** for contingency table Statistics for Probabilistic forecasts with Dichotomous outcomes +13. **PJC** for Joint and Conditional factorization for Probabilistic forecasts -14. **PJC** for Joint and Conditional factorization for Probabilistic forecasts +14. **PRC** for Receiver Operating Characteristic for Probabilistic forecasts -15. **PRC** for Receiver Operating Characteristic for Probabilistic forecasts +15. **ECNT** for Ensemble Continuous Statistics is only computed for the HiRA methodology -16. **ECNT** for Ensemble Continuous Statistics is only computed for the HiRA methodology +16. **ORANK** for Ensemble Matched Pair Information when point observations are supplied for the HiRA methodology 17. **RPS** for Ranked Probability Score is only computed for the HiRA methodology @@ -470,6 +471,9 @@ The **output_flag** array controls the type of output that the Point-Stat tool g 19. **MPR** for Matched Pair data +20. **VCNT** for Vector Continuous Statistics (Note that bootstrap confidence intervals are not currently calculated for this line type.) + + Note that the first two line types are easily derived from each other. Users are free to choose which measures are most desired. The output line types are described in more detail in :numref:`point_stat-output`. Note that writing out matched pair data (MPR lines) for a large number of cases is generally not recommended. The MPR lines create very large output files and are only intended for use on a small set of cases. @@ -489,9 +493,9 @@ point_stat_PREFIX_HHMMSSL_YYYYMMDD_HHMMSSV.stat where PREFIX indicates the user- The output ASCII files are named similarly: -point_stat_PREFIX_HHMMSSL_YYYYMMDD_HHMMSSV_TYPE.txt where TYPE is one of mpr, fho, ctc, cts, cnt, mctc, mcts, pct, pstd, pjc, prc, ecnt, rps, eclv, sl1l2, sal1l2, vl1l2, vcnt or val1l2 to indicate the line type it contains. +point_stat_PREFIX_HHMMSSL_YYYYMMDD_HHMMSSV_TYPE.txt where TYPE is one of mpr, fho, ctc, cts, cnt, mctc, mcts, pct, pstd, pjc, prc, ecnt, orank, rps, eclv, sl1l2, sal1l2, vl1l2, vcnt or val1l2 to indicate the line type it contains. -The first set of header columns are common to all of the output files generated by the Point-Stat tool. Tables describing the contents of the header columns and the contents of the additional columns for each line type are listed in the following tables. The ECNT line type is described in :numref:`table_ES_header_info_es_out_ECNT`. The RPS line type is described in :numref:`table_ES_header_info_es_out_RPS`. +The first set of header columns are common to all of the output files generated by the Point-Stat tool. Tables describing the contents of the header columns and the contents of the additional columns for each line type are listed in the following tables. The ECNT line type is described in :numref:`table_ES_header_info_es_out_ECNT`. The ORANK line type is described in :numref:`table_ES_header_info_es_out_ORANK`. The RPS line type is described in :numref:`table_ES_header_info_es_out_RPS`. .. _table_PS_header_info_point-stat_out: From 4d747df85770decf958dd63b22ce31252afbc95f Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 20 Aug 2021 14:06:30 -0600 Subject: [PATCH 13/22] Added 'orank = NONE' to config file for compatibility with changes to point_stant for ORANK. SL --- met/data/config/PointStatConfig_default | 1 + 1 file changed, 1 insertion(+) diff --git a/met/data/config/PointStatConfig_default b/met/data/config/PointStatConfig_default index 048ff2cb4a..4cdaefaf6e 100644 --- a/met/data/config/PointStatConfig_default +++ b/met/data/config/PointStatConfig_default @@ -280,6 +280,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; // Only for HiRA. + orank = NONE; // Only for HiRA. rps = NONE; // Only for HiRA. eclv = NONE; mpr = NONE; From 10877ba442e1db09e57a8515af3b2fc733cf7ce3 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Fri, 20 Aug 2021 14:07:30 -0600 Subject: [PATCH 14/22] Added 'orank = NONE' to config file for compatibility with changes to point_stant for ORANK. SL --- met/scripts/config/PointStatConfig | 1 + 1 file changed, 1 insertion(+) diff --git a/met/scripts/config/PointStatConfig b/met/scripts/config/PointStatConfig index 6df8e67daf..513c956ab6 100644 --- a/met/scripts/config/PointStatConfig +++ b/met/scripts/config/PointStatConfig @@ -199,6 +199,7 @@ output_flag = { pjc = NONE; prc = NONE; ecnt = NONE; // Only for HiRA + orank = NONE; // Only for HiRA rps = NONE; // Only for HiRA eclv = BOTH; mpr = BOTH; From 8f0b1d89e992bf4c1b37633d0c87be7d2c7a3d3f Mon Sep 17 00:00:00 2001 From: johnhg Date: Fri, 20 Aug 2021 16:05:42 -0600 Subject: [PATCH 15/22] Apply suggestions from code review Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com> --- met/src/tools/core/point_stat/point_stat.cc | 2 +- met/src/tools/core/point_stat/point_stat_conf_info.cc | 1 - 2 files changed, 1 insertion(+), 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 b6a2112ff7..8fde5788b2 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -1745,7 +1745,7 @@ void do_hira_ens(int i_vx, const PairDataPoint *pd_ptr) { // Write out the ECNT line if(conf_info.vx_opt[i_vx].output_flag[i_ecnt] != STATOutputType_None) { - //Compute ensemble statistics + //Compute ensemble statistics hira_pd.compute_pair_vals(rng_ptr); ECNTInfo ecnt_info; ecnt_info.set(hira_pd); 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 bdab1d9d21..e083693eaa 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 @@ -764,7 +764,6 @@ void PointStatVxOpt::process_config(GrdFileType ftype, // Conf: output_flag output_map = parse_conf_output_flag(&odict, txt_file_type, n_txt); - // Populate the output_flag array with map values for(i=0; i Date: Fri, 20 Aug 2021 16:27:21 -0600 Subject: [PATCH 16/22] Per #1764, no real changes, just fixing indents. --- met/src/tools/core/point_stat/point_stat.cc | 41 +++++++++------------ 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 8fde5788b2..0e4fc79484 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -437,7 +437,7 @@ void setup_txt_files() { break; } // end switch - // Setup the text AsciiTable + // Setup the text AsciiTable txt_at[i].set_size(conf_info.n_txt_row(i) + 1, max_col); setup_table(txt_at[i]); @@ -1741,11 +1741,11 @@ void do_hira_ens(int i_vx, const PairDataPoint *pd_ptr) { if(gt) { delete gt; gt = 0; } continue; } - + // Write out the ECNT line if(conf_info.vx_opt[i_vx].output_flag[i_ecnt] != STATOutputType_None) { - - //Compute ensemble statistics + + // Compute ensemble statistics hira_pd.compute_pair_vals(rng_ptr); ECNTInfo ecnt_info; ecnt_info.set(hira_pd); @@ -1758,14 +1758,14 @@ void do_hira_ens(int i_vx, const PairDataPoint *pd_ptr) { // Write out the ORANK line if(conf_info.vx_opt[i_vx].output_flag[i_orank] != STATOutputType_None) { - - // Compute ensemble statistics + + // Compute ensemble statistics hira_pd.compute_pair_vals(rng_ptr); - - write_orank_row(shc, &hira_pd, - conf_info.vx_opt[i_vx].output_flag[i_orank], - stat_at, i_stat_row, - txt_at[i_orank], i_txt_row[i_orank]); + + write_orank_row(shc, &hira_pd, + conf_info.vx_opt[i_vx].output_flag[i_orank], + stat_at, i_stat_row, + txt_at[i_orank], i_txt_row[i_orank]); } // end if ORANK // Write out the RPS line @@ -1944,13 +1944,12 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { // Write out the MPR lines if(conf_info.vx_opt[i_vx].output_flag[i_mpr] != STATOutputType_None) { - - write_mpr_row(shc, &hira_pd, + write_mpr_row(shc, &hira_pd, conf_info.vx_opt[i_vx].output_flag[i_mpr], stat_at, i_stat_row, txt_at[i_mpr], i_txt_row[i_mpr], false); - // Reset the observation valid time + // Reset the observation valid time shc.set_obs_valid_beg(conf_info.vx_opt[i_vx].vx_pd.beg_ut); shc.set_obs_valid_end(conf_info.vx_opt[i_vx].vx_pd.end_ut); } @@ -1960,8 +1959,7 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { // Write out PCT if(conf_info.vx_opt[i_vx].output_flag[i_pct] != STATOutputType_None) { - - write_pct_row(shc, pct_info, + write_pct_row(shc, pct_info, conf_info.vx_opt[i_vx].output_flag[i_pct],1, 1, stat_at, i_stat_row, txt_at[i_pct], i_txt_row[i_pct], false); @@ -1969,8 +1967,7 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { // Write out PSTD if(conf_info.vx_opt[i_vx].output_flag[i_pstd] != STATOutputType_None) { - - write_pstd_row(shc, pct_info, + write_pstd_row(shc, pct_info, conf_info.vx_opt[i_vx].output_flag[i_pstd], 1, 1, stat_at, i_stat_row, txt_at[i_pstd], i_txt_row[i_pstd], false); @@ -1978,8 +1975,7 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { // Write out PJC if(conf_info.vx_opt[i_vx].output_flag[i_pjc] != STATOutputType_None) { - - write_pjc_row(shc, pct_info, + write_pjc_row(shc, pct_info, conf_info.vx_opt[i_vx].output_flag[i_pjc], 1, 1, stat_at, i_stat_row, txt_at[i_pjc], i_txt_row[i_pjc], false); @@ -1987,12 +1983,11 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { // Write out PRC if(conf_info.vx_opt[i_vx].output_flag[i_prc] != STATOutputType_None) { - - write_prc_row(shc, pct_info, + write_prc_row(shc, pct_info, conf_info.vx_opt[i_vx].output_flag[i_prc], 1, 1, stat_at, i_stat_row, txt_at[i_prc], i_txt_row[i_prc], false); - } + } } // end for j } // end for i From d52aa09bc547904d877bdcfae831d320e2f65480 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 20 Aug 2021 16:30:06 -0600 Subject: [PATCH 17/22] Per #1764, no real changes, just fixing indents. --- met/src/tools/core/point_stat/point_stat.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 0e4fc79484..e727cb79f2 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -1980,7 +1980,7 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { stat_at, i_stat_row, txt_at[i_pjc], i_txt_row[i_pjc], false); } - + // Write out PRC if(conf_info.vx_opt[i_vx].output_flag[i_prc] != STATOutputType_None) { write_prc_row(shc, pct_info, From ecfa500726fc360317b849688bd7873f106376da Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 20 Aug 2021 16:34:19 -0600 Subject: [PATCH 18/22] Per #1764, no real changes, just fixing indents. --- met/src/tools/core/point_stat/point_stat_conf_info.cc | 1 + 1 file changed, 1 insertion(+) 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 e083693eaa..dd0d13dee1 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 @@ -764,6 +764,7 @@ void PointStatVxOpt::process_config(GrdFileType ftype, // Conf: output_flag output_map = parse_conf_output_flag(&odict, txt_file_type, n_txt); + // Populate the output_flag array with map values for(i=0; i Date: Fri, 20 Aug 2021 16:41:38 -0600 Subject: [PATCH 19/22] Per #1764, putting the docs for VCNT back into its logical order with the other vector line types. The order that they're listed here does not need to match their order in the enumeration in the code. --- met/docs/Users_Guide/point-stat.rst | 23 ++++++++++----------- met/src/tools/core/point_stat/point_stat.cc | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/met/docs/Users_Guide/point-stat.rst b/met/docs/Users_Guide/point-stat.rst index 48a80cb3a9..cbfbba80ec 100644 --- a/met/docs/Users_Guide/point-stat.rst +++ b/met/docs/Users_Guide/point-stat.rst @@ -453,28 +453,27 @@ The **output_flag** array controls the type of output that the Point-Stat tool g 10. **VAL1L2** for Vector Anomaly L1L2 Partial Sums when climatological data is supplied -11. **PCT** for Contingency Table counts for Probabilistic forecasts +11. **VCNT** for Vector Continuous Statistics (Note that bootstrap confidence intervals are not currently calculated for this line type.) -12. **PSTD** for contingency table Statistics for Probabilistic forecasts with Dichotomous outcomes +12. **PCT** for Contingency Table counts for Probabilistic forecasts -13. **PJC** for Joint and Conditional factorization for Probabilistic forecasts +13. **PSTD** for contingency table Statistics for Probabilistic forecasts with Dichotomous outcomes -14. **PRC** for Receiver Operating Characteristic for Probabilistic forecasts +14. **PJC** for Joint and Conditional factorization for Probabilistic forecasts -15. **ECNT** for Ensemble Continuous Statistics is only computed for the HiRA methodology +15. **PRC** for Receiver Operating Characteristic for Probabilistic forecasts -16. **ORANK** for Ensemble Matched Pair Information when point observations are supplied for the HiRA methodology +16. **ECNT** for Ensemble Continuous Statistics is only computed for the HiRA methodology -17. **RPS** for Ranked Probability Score is only computed for the HiRA methodology +17. **ORANK** for Ensemble Matched Pair Information when point observations are supplied for the HiRA methodology -18. **ECLV** for Economic Cost/Loss Relative Value +18. **RPS** for Ranked Probability Score is only computed for the HiRA methodology -19. **MPR** for Matched Pair data +19. **ECLV** for Economic Cost/Loss Relative Value -20. **VCNT** for Vector Continuous Statistics (Note that bootstrap confidence intervals are not currently calculated for this line type.) +20. **MPR** for Matched Pair data - -Note that the first two line types are easily derived from each other. Users are free to choose which measures are most desired. The output line types are described in more detail in :numref:`point_stat-output`. +Note that the FHO and CTC line types are easily derived from each other. Users are free to choose which measures are most desired. The output line types are described in more detail in :numref:`point_stat-output`. Note that writing out matched pair data (MPR lines) for a large number of cases is generally not recommended. The MPR lines create very large output files and are only intended for use on a small set of cases. diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index e727cb79f2..cd83ee3fc7 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -331,7 +331,7 @@ void setup_txt_files() { int max_col, max_prob_col, max_mctc_col, max_orank_col; int n_prob, n_cat, n_eclv, n_ens; ConcatString base_name; - + // Create output file names for the stat file and optional text files build_outfile_name(fcst_valid_ut, fcst_lead_sec, "", base_name); From 5b24bad8c6c79182a5f459815d2759782be89542 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 20 Aug 2021 16:46:56 -0600 Subject: [PATCH 20/22] Per #1764, fixing a vcnt typo I found in the grid-stat chapter... and making them consistent. --- met/docs/Users_Guide/grid-stat.rst | 2 +- met/docs/Users_Guide/point-stat.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/met/docs/Users_Guide/grid-stat.rst b/met/docs/Users_Guide/grid-stat.rst index 264903825f..ef1a465763 100644 --- a/met/docs/Users_Guide/grid-stat.rst +++ b/met/docs/Users_Guide/grid-stat.rst @@ -388,7 +388,7 @@ The **output_flag** array controls the type of output that the Grid-Stat tool ge 10. **VAL1L2** for Vector Anomaly L1L2 Partial Sums when climatological data is supplied -11. **VCNT** for Vector Contingency Table Statistics +11. **VCNT** for Vector Continuous Statistics 12. **PCT** for Contingency Table Counts for Probabilistic forecasts diff --git a/met/docs/Users_Guide/point-stat.rst b/met/docs/Users_Guide/point-stat.rst index cbfbba80ec..97b93b4b40 100644 --- a/met/docs/Users_Guide/point-stat.rst +++ b/met/docs/Users_Guide/point-stat.rst @@ -453,7 +453,7 @@ The **output_flag** array controls the type of output that the Point-Stat tool g 10. **VAL1L2** for Vector Anomaly L1L2 Partial Sums when climatological data is supplied -11. **VCNT** for Vector Continuous Statistics (Note that bootstrap confidence intervals are not currently calculated for this line type.) +11. **VCNT** for Vector Continuous Statistics 12. **PCT** for Contingency Table counts for Probabilistic forecasts From e40a3dbdaedad076cea7342387be29eb3f9664d9 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Mon, 23 Aug 2021 10:03:55 -0600 Subject: [PATCH 21/22] Per issue #1764: After the call to write_orank_row, added lines to reset the observation begin and end times. SL --- met/src/tools/core/point_stat/point_stat.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 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 cd83ee3fc7..2a618b4af6 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -95,6 +95,7 @@ // 045 03/28/21 Halley Gotway Add mpr_column and mpr_thresh // 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. // //////////////////////////////////////////////////////////////////////// @@ -1764,8 +1765,12 @@ void do_hira_ens(int i_vx, const PairDataPoint *pd_ptr) { write_orank_row(shc, &hira_pd, conf_info.vx_opt[i_vx].output_flag[i_orank], - stat_at, i_stat_row, - txt_at[i_orank], i_txt_row[i_orank]); + stat_at, i_stat_row, + txt_at[i_orank], i_txt_row[i_orank]); + + // Reset the observation valid time + shc.set_obs_valid_beg(conf_info.vx_opt[i_vx].vx_pd.beg_ut); + shc.set_obs_valid_end(conf_info.vx_opt[i_vx].vx_pd.end_ut); } // end if ORANK // Write out the RPS line From 2ae89c00c029d404d38dbc74e9fc596cbc5fa908 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Mon, 23 Aug 2021 11:11:11 -0600 Subject: [PATCH 22/22] Per #1764, no code changes, just fixing indents. --- met/src/tools/core/point_stat/point_stat.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/met/src/tools/core/point_stat/point_stat.cc b/met/src/tools/core/point_stat/point_stat.cc index 2a618b4af6..36c1a3baf6 100644 --- a/met/src/tools/core/point_stat/point_stat.cc +++ b/met/src/tools/core/point_stat/point_stat.cc @@ -1767,10 +1767,10 @@ void do_hira_ens(int i_vx, const PairDataPoint *pd_ptr) { conf_info.vx_opt[i_vx].output_flag[i_orank], stat_at, i_stat_row, txt_at[i_orank], i_txt_row[i_orank]); - - // Reset the observation valid time - shc.set_obs_valid_beg(conf_info.vx_opt[i_vx].vx_pd.beg_ut); - shc.set_obs_valid_end(conf_info.vx_opt[i_vx].vx_pd.end_ut); + + // Reset the observation valid time + shc.set_obs_valid_beg(conf_info.vx_opt[i_vx].vx_pd.beg_ut); + shc.set_obs_valid_end(conf_info.vx_opt[i_vx].vx_pd.end_ut); } // end if ORANK // Write out the RPS line