diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
index 4c1eb33e9c..4e6e3872b7 100644
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -176,7 +176,7 @@ jobs:
- jobid: 'job1'
tests: 'ascii2nc_indy pb2nc_indy tc_dland tc_pairs tc_stat plot_tc tc_rmw rmw_analysis tc_diag tc_gen'
- jobid: 'job2'
- tests: 'met_test_scripts mode_multivar mode_graphics mtd regrid airnow gsi_tools netcdf modis series_analysis wwmca_regrid gen_vx_mask grid_weight interp_shape grid_diag grib_tables lidar2nc shift_data_plane trmm2nc aeronet wwmca_plot ioda2nc gaussian'
+ tests: 'met_test_scripts mode_multivar mode_graphics mtd regrid airnow gsi_tools netcdf modis series_analysis wwmca_regrid gen_vx_mask interp_shape grid_diag grib_tables lidar2nc shift_data_plane trmm2nc aeronet wwmca_plot ioda2nc gaussian'
fail-fast: false
steps:
- uses: actions/checkout@v4
@@ -310,6 +310,8 @@ jobs:
tests: 'ensemble_stat stat_analysis_es'
- jobid: 'job5'
tests: 'ugrid'
+ - jobid: 'job6'
+ tests: 'grid_weight point_weight'
fail-fast: false
steps:
- uses: actions/checkout@v4
diff --git a/data/config/ConfigConstants b/data/config/ConfigConstants
index 23210b6c34..15a2a8db4c 100644
--- a/data/config/ConfigConstants
+++ b/data/config/ConfigConstants
@@ -137,6 +137,10 @@ NONE = 1;
COS_LAT = 2;
AREA = 3;
+// Point weight flag settings
+NONE = 1;
+SID = 2;
+
// Duplicate flag settings
NONE = 1;
UNIQUE = 2;
diff --git a/data/config/EnsembleStatConfig_default b/data/config/EnsembleStatConfig_default
index c496dd3507..b5b39eb803 100644
--- a/data/config/EnsembleStatConfig_default
+++ b/data/config/EnsembleStatConfig_default
@@ -266,8 +266,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/data/config/GridStatConfig_default b/data/config/GridStatConfig_default
index 4a0c7dce44..aa4d9517b5 100644
--- a/data/config/GridStatConfig_default
+++ b/data/config/GridStatConfig_default
@@ -271,8 +271,9 @@ nc_pairs_flag = {
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/data/config/PointStatConfig_default b/data/config/PointStatConfig_default
index 266c251e59..0b34c7537d 100644
--- a/data/config/PointStatConfig_default
+++ b/data/config/PointStatConfig_default
@@ -305,8 +305,10 @@ output_flag = {
////////////////////////////////////////////////////////////////////////////////
-tmp_dir = "/tmp";
-output_prefix = "";
-version = "V12.0.0";
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/docs/Users_Guide/config_options.rst b/docs/Users_Guide/config_options.rst
index 25515fc524..5ef04f530e 100644
--- a/docs/Users_Guide/config_options.rst
+++ b/docs/Users_Guide/config_options.rst
@@ -1847,15 +1847,18 @@ in the following ways:
embedded within another quoted string. Any such embedded quotes must
be escaped using a preceeding backslash character.
-* The "sid" entry is an array of strings which define groups of
- observation station ID's over which to compute statistics. Each entry
- in the array is either a filename of a comma-separated list.
-
- * For a filename, the strings are whitespace-separated. The first
- string is the mask "name" and the remaining strings are the station
+* The "sid" entry is an array of strings which define groups of observation station
+ ID's over which to compute statistics. Each station ID string can be followed by an
+ optional numeric weight enclosed in parenethesis and used by the "point_weight_flag"
+ configuration option. Each entry in the "sid" "array is either a filename or a
+ comma-separated list.
+
+ * For an ASCII filename, the strings contained within it are whitespace-separated.
+ The first string is the mask "name" and the remaining strings are the station
ID's to be used.
* For a comma-separated list, optionally use a colon to specify a name.
- For "MY_LIST:SID1,SID2", name = MY_LIST and values = SID1 and SID2.
+ For "MY_LIST:SID1(WGT1),SID2(WGT2)", name = MY_LIST which consists of
+ two station ID's (SID1 and SID2) and optional numeric weights (WGT1 and WGT2).
* For a comma-separated list of length one with no name specified, the
mask "name" and value are both set to the single station ID string.
For "SID1", name = SID1 and value = SID1.
@@ -1865,6 +1868,7 @@ in the following ways:
For "SID1,SID2", name = MASK_SID and values = SID1 and SID2.
* The "name" of the station ID mask is written to the VX_MASK column
of the MET output files.
+
* The "llpnt" entry is either a single dictionary or an array of
dictionaries. Each dictionary contains three entries, the "name" for
the masking region, "lat_thresh", and "lon_thresh". The latitude and
@@ -2353,8 +2357,9 @@ NBRCTC), partial sums (SL1L2, SAL1L2, VL1L2, and VAL1L2), and statistics
It is meant to account for grid box area distortion and is often applied
to global Lat/Lon grids. It is only applied for grid-to-grid verification
in Grid-Stat and Ensemble-Stat and is not applied for grid-to-point
-verification. It can only be defined once at the highest level of config
-file context and applies to all verification tasks for that run.
+verification, which is controlled by the "point_weight_flag" option.
+It can only be defined once at the highest level of config file context
+and applies to all verification tasks for that run.
Three grid weighting options are currently supported:
@@ -2391,6 +2396,27 @@ versions of MET.
grid_weight_flag = NONE;
+point_weight_flag
+-----------------
+
+The "point_weight_flag" is similar to the "grid_weight_flag", described above,
+but applies to grid-to-point verification in Point-Stat and Ensemble-Stat.
+It is not applied for grid-to-grid verification which is controlled by the
+"grid_weight_flag" option. It can only be defined once at the highest level
+of config file context and applies to all verification tasks for that run.
+
+While only one point weighting option is currently supported, additional
+methods are planned for future versions:
+
+* NONE to disable point weighting using a constant weight of 1.0 (default).
+
+* SID to use the weights defined by the station ID masking configuration option,
+ "mask.sid".
+
+.. code-block:: none
+
+ point_weight_flag = NONE;
+
hss_ec_value
------------
diff --git a/docs/Users_Guide/ensemble-stat.rst b/docs/Users_Guide/ensemble-stat.rst
index 8a2502c525..66e0187814 100644
--- a/docs/Users_Guide/ensemble-stat.rst
+++ b/docs/Users_Guide/ensemble-stat.rst
@@ -182,13 +182,25 @@ ____________________
obs_perc_value = 50;
message_type_group_map = [...];
grid_weight_flag = NONE;
+ point_weight_flag = NONE;
output_prefix = "";
version = "VN.N";
The configuration options listed above are common to many MET tools and are described in :numref:`config_options`.
-Note that the **HIRA** interpolation method is only supported in Ensemble-Stat.
+.. note::
+
+ The **HIRA** interpolation method is only supported in Ensemble-Stat.
+
+.. note::
+
+ The "grid_weight_flag" and "point_weight_flag" options described in
+ :numref:`config_options` define how matched pairs are weighted for
+ grid-to-grid and grid-to-point verification in Ensemble-Stat. These
+ weights currently only apply to the computation of probabilistic
+ outputs (PCT, PSTD, PJC, and PRC) but no other Ensemble-Stat output
+ line types.
_____________________
diff --git a/docs/Users_Guide/point-stat.rst b/docs/Users_Guide/point-stat.rst
index 73b7ce9a33..addaa206e2 100644
--- a/docs/Users_Guide/point-stat.rst
+++ b/docs/Users_Guide/point-stat.rst
@@ -362,6 +362,7 @@ ________________________
obs_summary = NONE;
obs_perc_value = 50;
message_type_group_map = [...];
+ point_weight_flag = NONE;
tmp_dir = "/tmp";
output_prefix = "";
version = "VN.N";
diff --git a/internal/test_unit/config/EnsembleStatConfig b/internal/test_unit/config/EnsembleStatConfig
index 80157bed0c..59661a5fe2 100644
--- a/internal/test_unit/config/EnsembleStatConfig
+++ b/internal/test_unit/config/EnsembleStatConfig
@@ -226,8 +226,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_MASK_SID b/internal/test_unit/config/EnsembleStatConfig_MASK_SID
index 96128cb148..28bd9899b3 100644
--- a/internal/test_unit/config/EnsembleStatConfig_MASK_SID
+++ b/internal/test_unit/config/EnsembleStatConfig_MASK_SID
@@ -218,8 +218,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_climo b/internal/test_unit/config/EnsembleStatConfig_climo
index 06699abf0a..89abf95dd8 100644
--- a/internal/test_unit/config/EnsembleStatConfig_climo
+++ b/internal/test_unit/config/EnsembleStatConfig_climo
@@ -248,8 +248,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_grid_weight b/internal/test_unit/config/EnsembleStatConfig_grid_weight
index 12994a3a5b..67da4d825f 100644
--- a/internal/test_unit/config/EnsembleStatConfig_grid_weight
+++ b/internal/test_unit/config/EnsembleStatConfig_grid_weight
@@ -240,8 +240,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = ${GRID_WEIGHT};
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = ${GRID_WEIGHT};
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin b/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin
index 013763c74d..3828b386e5 100644
--- a/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin
+++ b/internal/test_unit/config/EnsembleStatConfig_one_cdf_bin
@@ -232,8 +232,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_point_weight b/internal/test_unit/config/EnsembleStatConfig_point_weight
new file mode 100644
index 0000000000..2e9ad158b8
--- /dev/null
+++ b/internal/test_unit/config/EnsembleStatConfig_point_weight
@@ -0,0 +1,214 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Ensemble-Stat configuration file.
+//
+// For additional information, please see the MET User's Guide.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Output model name to be written
+//
+model = "FCST";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "${DESC}";
+
+//
+// Output observation type to be written
+//
+obtype = "ANALYS";
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification grid
+//
+regrid = {
+ to_grid = NONE;
+ method = NEAREST;
+ width = 1;
+ vld_thresh = 0.5;
+ shape = SQUARE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// IDs for ensemble members
+// Only set if processing a single file with all ensembles
+//
+ens_member_ids = [];
+control_id = "";
+
+//
+// May be set separately in each "fcst.field" and "obs.field" entry
+//
+censor_thresh = [];
+censor_val = [];
+prob_cat_thresh = [];
+
+//
+// May be set separately in each "fcst.field" entry
+//
+prob_pct_thresh = [ ==0.25 ];
+
+//
+// May be set separately in each "obs.field" entry
+//
+nc_var_str = "";
+eclv_points = 0.05;
+
+//
+// Forecast and observation fields to be verified
+//
+fcst = {
+ ens_thresh = 0.75;
+ vld_thresh = 1.0;
+ message_type = [ "ADPSFC" ];
+ obs_quality_inc = [];
+ obs_quality_exc = [];
+
+ field = [
+ { name = "APCP"; level = "A24"; prob_cat_thresh = [ >=2.54 ]; }
+ ];
+}
+obs = fcst;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation filtering options
+// May be set separately in each "obs.field" entry
+//
+message_type = [];
+sid_inc = [];
+sid_exc = [];
+obs_thresh = [ NA ];
+obs_quality_inc = [];
+obs_quality_exc = [];
+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;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Point observation time window
+//
+obs_window = {
+ beg = -5400;
+ end = 5400;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Verification masking regions
+//
+mask = {
+ grid = [];
+ poly = [];
+ sid = [ "${CONFIG_DIR}/SID_CONUS_ADPSFC_ELEV.txt" ];
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Confidence interval settings
+//
+ci_alpha = [ 0.05 ];
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Interpolation methods
+//
+interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Statistical output types
+// May be set separately in each "obs.field" entry
+//
+output_flag = {
+ ecnt = NONE;
+ rps = NONE;
+ rhist = NONE;
+ phist = NONE;
+ orank = NONE;
+ ssvar = NONE;
+ relp = NONE;
+ pct = STAT;
+ pstd = STAT;
+ pjc = STAT;
+ prc = STAT;
+ eclv = STAT;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Gridded verification output types
+// May be set separately in each "obs.field" entry
+//
+nc_orank_flag = FALSE;
+
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// Random number generator
+//
+rng = {
+ type = "mt19937";
+ seed = "1";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+grid_weight_flag = NONE;
+point_weight_flag = ${POINT_WEIGHT};
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_python b/internal/test_unit/config/EnsembleStatConfig_python
index 4de2045664..e6be01ea44 100644
--- a/internal/test_unit/config/EnsembleStatConfig_python
+++ b/internal/test_unit/config/EnsembleStatConfig_python
@@ -222,8 +222,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc b/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc
index 0881ff3b8d..0a0bf9b074 100644
--- a/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc
+++ b/internal/test_unit/config/EnsembleStatConfig_qty_inc_exc
@@ -235,8 +235,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob b/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob
index af4354bfea..ea1023dc36 100644
--- a/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob
+++ b/internal/test_unit/config/EnsembleStatConfig_rps_climo_bin_prob
@@ -216,8 +216,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_single_file_grib b/internal/test_unit/config/EnsembleStatConfig_single_file_grib
index 20220f82b5..831b5dce36 100644
--- a/internal/test_unit/config/EnsembleStatConfig_single_file_grib
+++ b/internal/test_unit/config/EnsembleStatConfig_single_file_grib
@@ -271,8 +271,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/EnsembleStatConfig_single_file_nc b/internal/test_unit/config/EnsembleStatConfig_single_file_nc
index b3faf78d95..99403c0059 100644
--- a/internal/test_unit/config/EnsembleStatConfig_single_file_nc
+++ b/internal/test_unit/config/EnsembleStatConfig_single_file_nc
@@ -277,8 +277,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_APCP_regrid b/internal/test_unit/config/GridStatConfig_APCP_regrid
index 74bbba5b4d..aea9adeaef 100644
--- a/internal/test_unit/config/GridStatConfig_APCP_regrid
+++ b/internal/test_unit/config/GridStatConfig_APCP_regrid
@@ -208,8 +208,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val b/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val
index 64381023a8..ecce9ddfdf 100644
--- a/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val
+++ b/internal/test_unit/config/GridStatConfig_GRIB_lvl_typ_val
@@ -305,8 +305,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "GRIB_lvl_typ_val";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "GRIB_lvl_typ_val";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_GRIB_set_attr b/internal/test_unit/config/GridStatConfig_GRIB_set_attr
index cb2f86984c..36ab040a33 100644
--- a/internal/test_unit/config/GridStatConfig_GRIB_set_attr
+++ b/internal/test_unit/config/GridStatConfig_GRIB_set_attr
@@ -237,8 +237,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "GRIB_set_attr";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "GRIB_set_attr";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_GTG_latlon b/internal/test_unit/config/GridStatConfig_GTG_latlon
index 90be6f2172..77edd743db 100644
--- a/internal/test_unit/config/GridStatConfig_GTG_latlon
+++ b/internal/test_unit/config/GridStatConfig_GTG_latlon
@@ -216,8 +216,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_GTG_lc b/internal/test_unit/config/GridStatConfig_GTG_lc
index ddd8321fdd..0385bfda9e 100644
--- a/internal/test_unit/config/GridStatConfig_GTG_lc
+++ b/internal/test_unit/config/GridStatConfig_GTG_lc
@@ -216,8 +216,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_SEEPS b/internal/test_unit/config/GridStatConfig_SEEPS
index 51bc14e2d6..808e5a10f3 100644
--- a/internal/test_unit/config/GridStatConfig_SEEPS
+++ b/internal/test_unit/config/GridStatConfig_SEEPS
@@ -215,8 +215,9 @@ seeps_grid_climo_name = "${SEEPS_GRID_CLIMO_NAME}";
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_WRF_pres b/internal/test_unit/config/GridStatConfig_WRF_pres
index 10d46e8f94..98851dfa7b 100644
--- a/internal/test_unit/config/GridStatConfig_WRF_pres
+++ b/internal/test_unit/config/GridStatConfig_WRF_pres
@@ -281,8 +281,9 @@ ugrid_coordinates_file = "";
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_apply_mask b/internal/test_unit/config/GridStatConfig_apply_mask
index 77af6251c0..041cae792d 100644
--- a/internal/test_unit/config/GridStatConfig_apply_mask
+++ b/internal/test_unit/config/GridStatConfig_apply_mask
@@ -217,8 +217,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG b/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG
index 8783cbd9e1..8eab6dccb0 100644
--- a/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG
+++ b/internal/test_unit/config/GridStatConfig_climo_FCST_NCEP_1.0DEG_OBS_WMO_1.5DEG
@@ -284,8 +284,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = COS_LAT;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_climo_WMO b/internal/test_unit/config/GridStatConfig_climo_WMO
index 739d122295..5e37820412 100644
--- a/internal/test_unit/config/GridStatConfig_climo_WMO
+++ b/internal/test_unit/config/GridStatConfig_climo_WMO
@@ -278,8 +278,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = COS_LAT;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_climo_prob b/internal/test_unit/config/GridStatConfig_climo_prob
index 3f00164d86..a1d35ed9e2 100644
--- a/internal/test_unit/config/GridStatConfig_climo_prob
+++ b/internal/test_unit/config/GridStatConfig_climo_prob
@@ -288,8 +288,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = COS_LAT;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_climo_wrap_year b/internal/test_unit/config/GridStatConfig_climo_wrap_year
index beacc6825d..d0a6296ac8 100644
--- a/internal/test_unit/config/GridStatConfig_climo_wrap_year
+++ b/internal/test_unit/config/GridStatConfig_climo_wrap_year
@@ -259,8 +259,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_fbias_perc_thresh b/internal/test_unit/config/GridStatConfig_fbias_perc_thresh
index 9d9d544afb..cb8c1ba195 100644
--- a/internal/test_unit/config/GridStatConfig_fbias_perc_thresh
+++ b/internal/test_unit/config/GridStatConfig_fbias_perc_thresh
@@ -203,8 +203,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_fourier b/internal/test_unit/config/GridStatConfig_fourier
index 3ec891b8dd..c1ae46bb99 100644
--- a/internal/test_unit/config/GridStatConfig_fourier
+++ b/internal/test_unit/config/GridStatConfig_fourier
@@ -243,8 +243,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_gen_ens_prod b/internal/test_unit/config/GridStatConfig_gen_ens_prod
index 015ef3e946..653f178a52 100644
--- a/internal/test_unit/config/GridStatConfig_gen_ens_prod
+++ b/internal/test_unit/config/GridStatConfig_gen_ens_prod
@@ -278,8 +278,9 @@ ugrid_coordinates_file = "";
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_grid_weight b/internal/test_unit/config/GridStatConfig_grid_weight
index 27b266dfa8..0ac9eb393c 100644
--- a/internal/test_unit/config/GridStatConfig_grid_weight
+++ b/internal/test_unit/config/GridStatConfig_grid_weight
@@ -228,8 +228,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = ${GRID_WEIGHT};
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_interp_shape b/internal/test_unit/config/GridStatConfig_interp_shape
index ad250e9802..ac3179cf94 100644
--- a/internal/test_unit/config/GridStatConfig_interp_shape
+++ b/internal/test_unit/config/GridStatConfig_interp_shape
@@ -211,8 +211,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_mpr_thresh b/internal/test_unit/config/GridStatConfig_mpr_thresh
index e99405be7a..54ea06965f 100644
--- a/internal/test_unit/config/GridStatConfig_mpr_thresh
+++ b/internal/test_unit/config/GridStatConfig_mpr_thresh
@@ -276,8 +276,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = COS_LAT;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_no_leap b/internal/test_unit/config/GridStatConfig_no_leap
index 32d05b0862..f22c8e3008 100644
--- a/internal/test_unit/config/GridStatConfig_no_leap
+++ b/internal/test_unit/config/GridStatConfig_no_leap
@@ -217,8 +217,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_prob_as_scalar b/internal/test_unit/config/GridStatConfig_prob_as_scalar
index 0d5bdd25cb..2b8b91a0c4 100644
--- a/internal/test_unit/config/GridStatConfig_prob_as_scalar
+++ b/internal/test_unit/config/GridStatConfig_prob_as_scalar
@@ -238,8 +238,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_python b/internal/test_unit/config/GridStatConfig_python
index 7ca801748e..14021bd14d 100644
--- a/internal/test_unit/config/GridStatConfig_python
+++ b/internal/test_unit/config/GridStatConfig_python
@@ -218,8 +218,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "python";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "python";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_python_mixed b/internal/test_unit/config/GridStatConfig_python_mixed
index 9a39bc9533..b4c9feff07 100644
--- a/internal/test_unit/config/GridStatConfig_python_mixed
+++ b/internal/test_unit/config/GridStatConfig_python_mixed
@@ -222,8 +222,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "python_mixed";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "python_mixed";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_rtma b/internal/test_unit/config/GridStatConfig_rtma
index ddef797d2e..fea47945db 100644
--- a/internal/test_unit/config/GridStatConfig_rtma
+++ b/internal/test_unit/config/GridStatConfig_rtma
@@ -218,8 +218,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_rtma_perc_thresh b/internal/test_unit/config/GridStatConfig_rtma_perc_thresh
index 44ed5f564f..f468a9d1ba 100644
--- a/internal/test_unit/config/GridStatConfig_rtma_perc_thresh
+++ b/internal/test_unit/config/GridStatConfig_rtma_perc_thresh
@@ -221,8 +221,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_st4 b/internal/test_unit/config/GridStatConfig_st4
index 71d165e98a..1a55fc2cca 100644
--- a/internal/test_unit/config/GridStatConfig_st4
+++ b/internal/test_unit/config/GridStatConfig_st4
@@ -222,8 +222,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_st4_censor b/internal/test_unit/config/GridStatConfig_st4_censor
index e1e9adb1df..bfc90cad92 100644
--- a/internal/test_unit/config/GridStatConfig_st4_censor
+++ b/internal/test_unit/config/GridStatConfig_st4_censor
@@ -231,8 +231,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_ugrid_mpas b/internal/test_unit/config/GridStatConfig_ugrid_mpas
index d54b25de53..e61b0c2611 100644
--- a/internal/test_unit/config/GridStatConfig_ugrid_mpas
+++ b/internal/test_unit/config/GridStatConfig_ugrid_mpas
@@ -255,8 +255,9 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag b/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag
index 9e479d0302..0655fd1aa9 100644
--- a/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag
+++ b/internal/test_unit/config/GridStatConfig_ugrid_mpas_diag
@@ -256,8 +256,9 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_APCP b/internal/test_unit/config/PointStatConfig_APCP
index b1df56e94b..ca381a89d4 100644
--- a/internal/test_unit/config/PointStatConfig_APCP
+++ b/internal/test_unit/config/PointStatConfig_APCP
@@ -135,8 +135,11 @@ output_flag = {
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_APCP_HIRA b/internal/test_unit/config/PointStatConfig_APCP_HIRA
index 3dc823a50b..4e965bd716 100644
--- a/internal/test_unit/config/PointStatConfig_APCP_HIRA
+++ b/internal/test_unit/config/PointStatConfig_APCP_HIRA
@@ -142,8 +142,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_GTG_latlon b/internal/test_unit/config/PointStatConfig_GTG_latlon
index 17aba08c1f..ae84d237fd 100644
--- a/internal/test_unit/config/PointStatConfig_GTG_latlon
+++ b/internal/test_unit/config/PointStatConfig_GTG_latlon
@@ -161,8 +161,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_GTG_lc b/internal/test_unit/config/PointStatConfig_GTG_lc
index d45c47f618..198a40dc2f 100644
--- a/internal/test_unit/config/PointStatConfig_GTG_lc
+++ b/internal/test_unit/config/PointStatConfig_GTG_lc
@@ -169,8 +169,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_INTERP_OPTS b/internal/test_unit/config/PointStatConfig_INTERP_OPTS
index 43eb1f0708..e0e75a5b9b 100644
--- a/internal/test_unit/config/PointStatConfig_INTERP_OPTS
+++ b/internal/test_unit/config/PointStatConfig_INTERP_OPTS
@@ -152,8 +152,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK b/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK
index 48a04ed227..780081fb33 100644
--- a/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK
+++ b/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK
@@ -192,8 +192,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_MASK_SID b/internal/test_unit/config/PointStatConfig_MASK_SID
index a77a8f9008..253f7320a1 100644
--- a/internal/test_unit/config/PointStatConfig_MASK_SID
+++ b/internal/test_unit/config/PointStatConfig_MASK_SID
@@ -147,8 +147,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_PHYS b/internal/test_unit/config/PointStatConfig_PHYS
index 3c13262a71..6f3308f785 100644
--- a/internal/test_unit/config/PointStatConfig_PHYS
+++ b/internal/test_unit/config/PointStatConfig_PHYS
@@ -148,8 +148,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_PHYS_pint b/internal/test_unit/config/PointStatConfig_PHYS_pint
index e246c570b3..f98f2e4102 100644
--- a/internal/test_unit/config/PointStatConfig_PHYS_pint
+++ b/internal/test_unit/config/PointStatConfig_PHYS_pint
@@ -143,8 +143,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_SEEPS b/internal/test_unit/config/PointStatConfig_SEEPS
index 20ffa18cfb..cb7244311f 100644
--- a/internal/test_unit/config/PointStatConfig_SEEPS
+++ b/internal/test_unit/config/PointStatConfig_SEEPS
@@ -142,8 +142,11 @@ seeps_point_climo_name = "${SEEPS_POINT_CLIMO_NAME}";
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_WINDS b/internal/test_unit/config/PointStatConfig_WINDS
index 1c87273e89..ba385a0304 100644
--- a/internal/test_unit/config/PointStatConfig_WINDS
+++ b/internal/test_unit/config/PointStatConfig_WINDS
@@ -163,8 +163,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_aeronet b/internal/test_unit/config/PointStatConfig_aeronet
index fef6c9bb42..387a3c54a2 100644
--- a/internal/test_unit/config/PointStatConfig_aeronet
+++ b/internal/test_unit/config/PointStatConfig_aeronet
@@ -212,8 +212,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_airnow b/internal/test_unit/config/PointStatConfig_airnow
index 4223455902..5b5f97c915 100644
--- a/internal/test_unit/config/PointStatConfig_airnow
+++ b/internal/test_unit/config/PointStatConfig_airnow
@@ -240,8 +240,10 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
-tmp_dir = "/tmp";
-output_prefix = "";
-version = "V12.0.0";
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_climo b/internal/test_unit/config/PointStatConfig_climo
index d7f89b3cb0..d87ff87ca5 100644
--- a/internal/test_unit/config/PointStatConfig_climo
+++ b/internal/test_unit/config/PointStatConfig_climo
@@ -285,8 +285,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_climo_WMO b/internal/test_unit/config/PointStatConfig_climo_WMO
index 01c3f9b3de..c34dc0989e 100644
--- a/internal/test_unit/config/PointStatConfig_climo_WMO
+++ b/internal/test_unit/config/PointStatConfig_climo_WMO
@@ -230,8 +230,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_climo_prob b/internal/test_unit/config/PointStatConfig_climo_prob
index 364c1bfe73..b69812fae5 100644
--- a/internal/test_unit/config/PointStatConfig_climo_prob
+++ b/internal/test_unit/config/PointStatConfig_climo_prob
@@ -232,8 +232,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_dup b/internal/test_unit/config/PointStatConfig_dup
index 8fad74b0e5..ff42a31eab 100644
--- a/internal/test_unit/config/PointStatConfig_dup
+++ b/internal/test_unit/config/PointStatConfig_dup
@@ -165,8 +165,11 @@ seeps_p1_thresh = NA;
duplicate_flag = ${DUPLICATE_FLAG};
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_mpr_thresh b/internal/test_unit/config/PointStatConfig_mpr_thresh
index 675b0696c2..6b62a8df4f 100644
--- a/internal/test_unit/config/PointStatConfig_mpr_thresh
+++ b/internal/test_unit/config/PointStatConfig_mpr_thresh
@@ -224,8 +224,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_obs_summary b/internal/test_unit/config/PointStatConfig_obs_summary
index a931ba6b21..dc5b55a67e 100644
--- a/internal/test_unit/config/PointStatConfig_obs_summary
+++ b/internal/test_unit/config/PointStatConfig_obs_summary
@@ -153,8 +153,11 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_obs_summary_all b/internal/test_unit/config/PointStatConfig_obs_summary_all
index 384e4ada19..e5bc4dcd7a 100644
--- a/internal/test_unit/config/PointStatConfig_obs_summary_all
+++ b/internal/test_unit/config/PointStatConfig_obs_summary_all
@@ -222,8 +222,11 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_point_weight b/internal/test_unit/config/PointStatConfig_point_weight
new file mode 100644
index 0000000000..4f9528e26e
--- /dev/null
+++ b/internal/test_unit/config/PointStatConfig_point_weight
@@ -0,0 +1,145 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Point-Stat configuration file.
+//
+// For additional information, please see the MET User's Guide.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+model = "SREF";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "${DESC}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+regrid = {
+ to_grid = NONE;
+ method = NEAREST;
+ width = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+obs_window = {
+ beg = -1800;
+ end = 1800;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+mpr_column = [];
+mpr_thresh = [];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+eclv_points = 0.05;
+
+fcst = {
+ sid_inc = [];
+ sid_exc = [];
+ obs_quality_inc = [];
+ obs_quality_exc = [];
+
+ field = [
+ { name = "TMP"; level = "P850"; message_type = "ADPUPA"; cat_thresh = [ >273, >283 ]; },
+ { name = "UGRD"; level = "P850"; message_type = "ADPUPA"; cat_thresh = [ >5 ]; },
+ { name = "VGRD"; level = "P850"; message_type = "ADPUPA"; cat_thresh = [ >5 ]; }
+ ];
+
+}
+obs = fcst;
+
+////////////////////////////////////////////////////////////////////////////////
+
+mask = {
+ grid = [];
+ poly = [];
+ sid = [ "${CONFIG_DIR}/SID_CONUS_ADPUPA_ELEV.txt" ];
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 200;
+ rng = "mt19937";
+ seed = "1";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+interp = {
+ vld_thresh = 1.0;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+hira = {
+ flag = FALSE;
+ width = [ 2, 3, 4, 5 ];
+ vld_thresh = 1.0;
+ cov_thresh = [ ==0.25 ];
+ shape = SQUARE;
+ prob_cat_thresh = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+output_flag = {
+ fho = NONE;
+ ctc = STAT;
+ cts = STAT;
+ mctc = STAT;
+ mcts = STAT;
+ cnt = STAT;
+ sl1l2 = STAT;
+ sal1l2 = NONE;
+ vl1l2 = STAT;
+ val1l2 = NONE;
+ vcnt = STAT;
+ pct = NONE;
+ pstd = NONE;
+ pjc = NONE;
+ prc = NONE;
+ ecnt = NONE;
+ orank = NONE;
+ rps = NONE;
+ eclv = STAT;
+ mpr = STAT;
+ seeps = NONE;
+ seeps_mpr = NONE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Threshold for SEEPS p1 (Probability of being dry)
+
+seeps_p1_thresh = NA;
+
+////////////////////////////////////////////////////////////////////////////////
+
+duplicate_flag = NONE;
+rank_corr_flag = TRUE;
+
+point_weight_flag = ${POINT_WEIGHT};
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_prob b/internal/test_unit/config/PointStatConfig_prob
index ab8067a79e..e4149c7eff 100644
--- a/internal/test_unit/config/PointStatConfig_prob
+++ b/internal/test_unit/config/PointStatConfig_prob
@@ -150,8 +150,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_prob_point_weight b/internal/test_unit/config/PointStatConfig_prob_point_weight
new file mode 100644
index 0000000000..f083cb8807
--- /dev/null
+++ b/internal/test_unit/config/PointStatConfig_prob_point_weight
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Point-Stat configuration file.
+//
+// For additional information, please see the MET User's Guide.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+model = "SREF";
+
+//
+// Output description to be written
+// May be set separately in each "obs.field" entry
+//
+desc = "${DESC}";
+
+////////////////////////////////////////////////////////////////////////////////
+
+regrid = {
+ to_grid = NONE;
+ method = NEAREST;
+ width = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+obs_window = {
+ beg = -1800;
+ end = 1800;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+mpr_column = [];
+mpr_thresh = [];
+cnt_thresh = [ NA ];
+cnt_logic = UNION;
+wind_thresh = [ NA ];
+wind_logic = UNION;
+eclv_points = 0.05;
+
+fcst = {
+ sid_inc = [];
+ sid_exc = [];
+ obs_quality_inc = [];
+ obs_quality_exc = [];
+
+ field = [
+ { name = "PROB"; level = "P850";
+ prob = { name = "TMP"; thresh_hi = 273; };
+ cat_thresh = ==0.25; }
+ ];
+
+}
+obs = {
+ message_type = "ADPUPA";
+
+ field = [
+ { name = "TMP"; level = "P850"; cat_thresh = <273; }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+mask = {
+ grid = [ "FULL" ];
+ poly = [];
+ sid = [ "${CONFIG_DIR}/SID_CONUS_ADPUPA_ELEV.txt" ];
+ llpnt = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+ci_alpha = [ 0.05 ];
+
+boot = {
+ interval = PCTILE;
+ rep_prop = 1.0;
+ n_rep = 200;
+ rng = "mt19937";
+ seed = "1";
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+interp = {
+ vld_thresh = 1.0;
+
+ type = [
+ {
+ method = NEAREST;
+ width = 1;
+ }
+ ];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+hira = {
+ flag = FALSE;
+ width = [ 2, 3, 4, 5 ];
+ vld_thresh = 1.0;
+ cov_thresh = [ ==0.25 ];
+ shape = SQUARE;
+ prob_cat_thresh = [];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+output_flag = {
+ fho = NONE;
+ ctc = NONE;
+ cts = NONE;
+ mctc = NONE;
+ mcts = NONE;
+ cnt = NONE;
+ sl1l2 = NONE;
+ sal1l2 = NONE;
+ vl1l2 = NONE;
+ val1l2 = NONE;
+ vcnt = NONE;
+ pct = STAT;
+ pstd = STAT;
+ pjc = STAT;
+ prc = STAT;
+ ecnt = NONE;
+ orank = NONE;
+ rps = NONE;
+ eclv = STAT;
+ mpr = STAT;
+ seeps = NONE;
+ seeps_mpr = NONE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Threshold for SEEPS p1 (Probability of being dry)
+
+seeps_p1_thresh = NA;
+
+////////////////////////////////////////////////////////////////////////////////
+
+duplicate_flag = NONE;
+rank_corr_flag = TRUE;
+
+point_weight_flag = ${POINT_WEIGHT};
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_python b/internal/test_unit/config/PointStatConfig_python
index 5116179451..3f56423d96 100644
--- a/internal/test_unit/config/PointStatConfig_python
+++ b/internal/test_unit/config/PointStatConfig_python
@@ -219,9 +219,12 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_qty_inc_exc b/internal/test_unit/config/PointStatConfig_qty_inc_exc
index 1eab2b184c..2345684e7a 100644
--- a/internal/test_unit/config/PointStatConfig_qty_inc_exc
+++ b/internal/test_unit/config/PointStatConfig_qty_inc_exc
@@ -209,8 +209,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_sid_inc_exc b/internal/test_unit/config/PointStatConfig_sid_inc_exc
index a586064f53..9ab93b7417 100644
--- a/internal/test_unit/config/PointStatConfig_sid_inc_exc
+++ b/internal/test_unit/config/PointStatConfig_sid_inc_exc
@@ -156,8 +156,11 @@ seeps_p1_thresh = NA;
duplicate_flag = NONE;
obs_summary = NEAREST;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag b/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag
index 886c6bb301..3c1a4054a6 100644
--- a/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag
+++ b/internal/test_unit/config/PointStatConfig_ugrid_mpas_diag
@@ -160,8 +160,11 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_ugrid_mpas_out b/internal/test_unit/config/PointStatConfig_ugrid_mpas_out
index c16deb0f7d..dcb7afe613 100644
--- a/internal/test_unit/config/PointStatConfig_ugrid_mpas_out
+++ b/internal/test_unit/config/PointStatConfig_ugrid_mpas_out
@@ -160,8 +160,11 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/PointStatConfig_ugrid_no_dataset b/internal/test_unit/config/PointStatConfig_ugrid_no_dataset
index 9c7c7f5b3a..2cc3296b6e 100644
--- a/internal/test_unit/config/PointStatConfig_ugrid_no_dataset
+++ b/internal/test_unit/config/PointStatConfig_ugrid_no_dataset
@@ -160,8 +160,11 @@ ugrid_coordinates_file = "${MET_TEST_INPUT}/ugrid_data/mpas/static.40962_reduced
duplicate_flag = NONE;
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "${OUTPUT_PREFIX}";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${OUTPUT_PREFIX}";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/SID_CONUS_ADPSFC_ELEV.txt b/internal/test_unit/config/SID_CONUS_ADPSFC_ELEV.txt
new file mode 100644
index 0000000000..03da3d6060
--- /dev/null
+++ b/internal/test_unit/config/SID_CONUS_ADPSFC_ELEV.txt
@@ -0,0 +1,2109 @@
+SID_CONUS_ADPSFC_ELEV
+1L2(47.07002)
+3CLO3(2.57002)
+AAT(1492.32002)
+AATC1(318.82002)
+ABCC1(1419.32002)
+ABEW1(182.57002)
+ABMC1(1426.07002)
+ABNW1(281.32002)
+ABRC1(1455.82002)
+ABTM8(1348.82002)
+ACLN2(1838.32002)
+ACMC1(43.07002)
+ACRI1(1771.07002)
+ACRU1(2216.82002)
+ACV(72.57002)
+ADRC1(307.07002)
+AFHA3(1553.32002)
+AFMA3(1278.57002)
+AFRA3(901.07002)
+AFRC1(2086.07002)
+AFRI1(1386.32002)
+AFSC1(1455.82002)
+AFSN2(2029.82002)
+AGDO3(672.82002)
+AGKO3(1514.82002)
+AGPC1(2767.82002)
+AGTQ1(910.82002)
+AGWC1(638.57002)
+AIDC1(0.57002)
+AJGW1(193.32002)
+AJO(306.57002)
+AKEC1(1041.07002)
+ALDC1(553.57002)
+ALFO3(1569.32002)
+ALKN2(1922.32002)
+ALLN2(2004.57002)
+ALMA3(563.07002)
+ALPC1(671.32002)
+ALRN2(1626.57002)
+ALW(501.57002)
+AMBC1(2004.07002)
+ANAC1(106.82002)
+ANDC1(494.82002)
+ANEC1(654.07002)
+ANIC1(0.070023)
+ANRO3(1916.07002)
+ANSO3(1711.57002)
+APC(73.82002)
+APDN2(926.07002)
+APIC1(1453.57002)
+APKC1(1460.07002)
+APLC1(941.07002)
+APSW1(457.32002)
+APYC1(1361.82002)
+ARAO3(55.07002)
+ARAU1(1446.82002)
+ARAW1(675.82002)
+ARFO3(1248.07002)
+ARGC1(384.82002)
+ARKI1(1354.82002)
+ASFA3(1807.57002)
+ASHW1(944.82002)
+ASMC1(354.32002)
+ASRC1(655.07002)
+AST(11.82002)
+ASYU1(2478.82002)
+ATAI1(2067.57002)
+ATFO3(1461.07002)
+ATHC1(1339.82002)
+ATLC1(254.07002)
+ATLI1(2289.32002)
+ATNC1(1160.57002)
+ATRC1(1088.57002)
+ATSC1(1496.57002)
+AUBW1(95.82002)
+AURO3(67.07002)
+AVLC1(1727.57002)
+AVNC1(0.57002)
+AVX(23.57002)
+AZRQ1(1107.82002)
+BAB(104.07002)
+BABC1(1253.57002)
+BADM8(1806.57002)
+BADU1(1144.32002)
+BAEI1(2204.57002)
+BAFO3(1320.57002)
+BAGA3(1147.82002)
+BAJC1(600.82002)
+BALO3(1239.32002)
+BAMC1(456.57002)
+BANM8(1254.32002)
+BANO3(34.57002)
+BARQ1(964.07002)
+BARQ2(1466.57002)
+BASC1(1137.82002)
+BASI1(2203.57002)
+BASQ1(829.32002)
+BATN2(1573.32002)
+BBBC1(1706.57002)
+BBFO3(1239.57002)
+BBRA3(1741.82002)
+BBYC1(3.57002)
+BCDO3(1545.82002)
+BCDW1(145.07002)
+BCFO3(1313.82002)
+BCNC1(1598.32002)
+BCRQ1(1161.32002)
+BCYC1(1381.82002)
+BDDA3(1294.07002)
+BDFO3(319.82002)
+BDMC1(1065.07002)
+BDOC1(1834.82002)
+BDYC1(733.32002)
+BEAM8(2414.82002)
+BEBC1(133.32002)
+BEDO3(1542.32002)
+BEFM8(1915.07002)
+BENC1(242.07002)
+BERN2(2213.82002)
+BETC1(2246.57002)
+BEUO3(1317.32002)
+BEWO3(1178.07002)
+BFL(183.07002)
+BFRI1(1574.57002)
+BFYI1(1079.32002)
+BGBC1(981.32002)
+BGCO3(1128.07002)
+BGFO3(1380.57002)
+BGRM8(1342.32002)
+BGVC1(744.07002)
+BHAU1(1401.07002)
+BHNC1(270.32002)
+BIEQ1(903.82002)
+BIGN2(2094.82002)
+BIH(1884.57002)
+BIIC1(795.07002)
+BIRQ2(1121.82002)
+BISM8(1311.07002)
+BKBW1(135.82002)
+BKCU1(1996.82002)
+BKE(1193.57002)
+BKFN2(2023.82002)
+BKFO3(612.32002)
+BKGC1(1070.32002)
+BKLC1(1314.82002)
+BKRC1(2257.82002)
+BKRN2(2023.82002)
+BKSI1(1887.32002)
+BKVN2(763.07002)
+BLAO3(1066.32002)
+BLBC1(80.32002)
+BLBO3(551.07002)
+BLCC1(2231.32002)
+BLCN2(1699.57002)
+BLDQ1(1185.07002)
+BLEN2(1710.07002)
+BLH(131.57002)
+BLI(61.07002)
+BLKM8(1868.32002)
+BLKO3(1159.07002)
+BLMC1(2163.07002)
+BLOM8(2219.07002)
+BLPO3(1740.57002)
+BLRC1(284.07002)
+BLSC1(1622.32002)
+BLTM8(1135.32002)
+BLTQ1(952.57002)
+BLU(1381.82002)
+BLUN2(1525.82002)
+BMEC1(864.07002)
+BMFW1(1183.82002)
+BMOC1(1081.07002)
+BMTC1(534.82002)
+BMUC1(1538.57002)
+BNCC1(186.57002)
+BNCN2(1573.57002)
+BNDC1(284.07002)
+BNDO3(1178.07002)
+BNDW1(615.07002)
+BNFO3(421.32002)
+BNGC1(211.57002)
+BNKC1(1359.82002)
+BNO(1369.82002)
+BNRI1(2203.57002)
+BNTC1(1001.07002)
+BNVC1(422.32002)
+BOCC1(2054.82002)
+BOFO3(1183.07002)
+BOGC1(1867.07002)
+BOI(970.57002)
+BOKO3(110.57002)
+BOLC1(1569.82002)
+BONO3(566.07002)
+BOOM8(1316.82002)
+BORO3(1760.32002)
+BOUN2(609.57002)
+BOWC1(1768.32002)
+BPAW1(1158.32002)
+BPFC1(1638.32002)
+BPKC1(1700.32002)
+BPKN2(2249.82002)
+BPMC1(1700.32002)
+BPNC1(1378.82002)
+BPOC1(2480.07002)
+BQFO3(1635.57002)
+BRAQ2(1663.07002)
+BRBI1(1671.57002)
+BRCN2(2287.57002)
+BRCQ1(2131.82002)
+BRDC1(335.82002)
+BRHC1(711.32002)
+BRLM8(2082.57002)
+BRLN2(1719.82002)
+BRMO3(1136.32002)
+BRNQ1(820.32002)
+BROC1(846.82002)
+BROQ1(1142.57002)
+BRRC1(643.32002)
+BRRI1(1818.57002)
+BRRM8(2132.82002)
+BRUO3(331.82002)
+BRWC1(85.57002)
+BSCM8(1981.57002)
+BSCN2(1305.07002)
+BSDI1(1268.82002)
+BSNC1(1460.07002)
+BSPM8(1931.32002)
+BSTU1(1783.57002)
+BTFO3(1261.82002)
+BTM(1918.32002)
+BTRC1(1249.82002)
+BTRI1(1875.57002)
+BTTC1(54.32002)
+BTYO3(1454.82002)
+BUBC1(186.57002)
+BUCO3(1200.57002)
+BUCW1(409.32002)
+BUFC1(1499.32002)
+BUFN2(1468.32002)
+BUFO3(856.07002)
+BUGC1(1181.07002)
+BULI1(1830.82002)
+BULO3(890.32002)
+BULQ1(1326.82002)
+BULQ2(1297.07002)
+BUMC1(1001.07002)
+BUO(1001.07002)
+BUPC1(1314.82002)
+BUR(400.32002)
+BUSW1(695.82002)
+BVAQ1(852.82002)
+BVDC1(1053.82002)
+BVLQ1(1408.32002)
+BVRC1(167.32002)
+BVRO3(1345.32002)
+BWFO3(1433.32002)
+BWSO3(1555.82002)
+BWSQ1(2318.82002)
+BYCU1(2325.07002)
+BYFO3(1374.57002)
+BYI(1307.82002)
+BZRC1(941.57002)
+CAEC1(379.32002)
+CAFO3(1428.07002)
+CAHC1(611.32002)
+CALU1(1709.82002)
+CAMI1(1163.32002)
+CANO3(129.07002)
+CAPC1(352.57002)
+CAPN2(1838.32002)
+CASN2(1044.32002)
+CATN2(1799.82002)
+CAWN2(615.57002)
+CAZC1(779.32002)
+CBFI1(2468.07002)
+CBRA3(206.57002)
+CBUC1(1715.57002)
+CCCC1(794.57002)
+CCCQ1(1301.57002)
+CCDI1(1551.82002)
+CCEC1(804.07002)
+CCEN2(637.82002)
+CCHC1(402.07002)
+CCR(86.07002)
+CCRN2(1826.32002)
+CCRO3(180.57002)
+CCUN2(1877.57002)
+CCZC1(123.32002)
+CDAW1(717.32002)
+CDCU1(2042.07002)
+CDEC1(1110.57002)
+CDGC1(561.32002)
+CDLC1(463.32002)
+CDMU1(1612.57002)
+CEC(62.82002)
+CECU1(2011.82002)
+CEDN2(2100.57002)
+CEDW1(575.82002)
+CEEC1(295.07002)
+CEFO3(1330.32002)
+CEKC1(856.57002)
+CENW1(145.07002)
+CESC1(1699.82002)
+CFCC1(1585.82002)
+CFRC1(1483.32002)
+CFWC1(85.57002)
+CGDN2(1001.82002)
+CGFO3(1276.82002)
+CGFW1(859.57002)
+CGVC1(2744.57002)
+CGWO3(843.57002)
+CHAC1(1432.82002)
+CHEA3(1392.82002)
+CHFQ1(1614.82002)
+CHMC1(1823.82002)
+CHMQ1(979.32002)
+CHMQ2(824.82002)
+CHOC1(1318.57002)
+CHPQ1(1568.32002)
+CHRI1(2024.07002)
+CHRO3(208.32002)
+CHSN2(2178.57002)
+CHTC1(396.07002)
+CHUM8(1922.32002)
+CHWC1(611.32002)
+CICC1(88.07002)
+CIFO3(1533.82002)
+CINW1(473.07002)
+CISC1(1050.07002)
+CJAW1(596.82002)
+CLBC1(1135.82002)
+CLFC1(568.07002)
+CLFO3(1475.07002)
+CLFU1(1752.82002)
+CLHC1(380.82002)
+CLKI1(1165.32002)
+CLKO3(1197.07002)
+CLLC1(153.07002)
+CLLO3(1136.57002)
+CLM(432.57002)
+CLNC1(1473.32002)
+CLSC1(-0.42998)
+CLSW1(152.82002)
+CLVM8(2188.07002)
+CMA(58.32002)
+CMAC1(69.82002)
+CMBM8(1785.32002)
+CMFW1(1133.07002)
+CMNC1(1096.07002)
+CMOC1(1000.82002)
+CMPQ1(1745.82002)
+CMVC1(1215.57002)
+CNAC1(353.57002)
+CNFC1(1453.82002)
+CNFO3(262.32002)
+CNGC1(488.82002)
+CNIC1(605.07002)
+CNJC1(153.07002)
+CNO(269.82002)
+CNSC1(1094.32002)
+CNYC1(1463.32002)
+COCC1(244.57002)
+CODC1(494.82002)
+COE(828.07002)
+COEC1(494.82002)
+COGC1(581.07002)
+COIN2(2005.82002)
+COKC1(1728.32002)
+COLO3(1365.82002)
+COMN2(2082.82002)
+CONM8(1755.32002)
+COPM8(1864.32002)
+COVC1(989.32002)
+COWC1(548.07002)
+COXQ1(1930.57002)
+COYN2(1868.07002)
+COZI1(1938.32002)
+CPCM8(1809.32002)
+CPFO3(1733.57002)
+CPLC1(2317.32002)
+CPPW1(1380.57002)
+CPWA3(1660.57002)
+CQFO3(1421.57002)
+CQLQ2(504.07002)
+CQT(87.82002)
+CRAQ1(842.07002)
+CRCA3(1752.32002)
+CRCW1(958.32002)
+CRGC1(53.57002)
+CRIC1(217.07002)
+CRKI1(990.82002)
+CRLC1(2654.82002)
+CRLO3(1711.57002)
+CRMI1(1867.82002)
+CROQ1(1719.07002)
+CRQ(29.32002)
+CRSN2(1843.32002)
+CRTI1(1867.82002)
+CRVC1(2594.82002)
+CRVO3(95.57002)
+CRWA3(308.32002)
+CRWC1(1561.07002)
+CRWW1(145.07002)
+CRXC1(99.07002)
+CRYN2(653.57002)
+CRZC1(1197.82002)
+CSCI1(1635.57002)
+CSCO3(1553.07002)
+CSDI1(1635.57002)
+CSFO3(1464.32002)
+CSHW1(236.32002)
+CSMC1(538.32002)
+CSTC1(583.57002)
+CSTO3(1574.82002)
+CSUC1(446.57002)
+CSVC1(410.07002)
+CSWC1(1238.32002)
+CSXC1(783.32002)
+CSZC1(1587.82002)
+CTB(1155.57002)
+CTLN2(2114.07002)
+CTNC1(879.32002)
+CTOC1(149.32002)
+CUGW1(699.82002)
+CUMW1(674.32002)
+CUTQ1(2228.57002)
+CUUC1(1457.57002)
+CVAC1(38.32002)
+CVBC1(335.07002)
+CVFO3(671.82002)
+CVSC1(1020.32002)
+CVSO3(161.57002)
+CWFO3(1326.07002)
+CWSN2(587.32002)
+CWXW1(575.82002)
+CXCC1(67.57002)
+CYAC1(988.32002)
+CYFI1(1494.07002)
+CYFW1(555.57002)
+CYMC1(875.32002)
+CYOC1(410.07002)
+CYVC1(1786.82002)
+CZFO3(1790.57002)
+CZZ(971.07002)
+DACC1(559.07002)
+DAG(774.07002)
+DALM8(1921.32002)
+DANO3(1310.82002)
+DARW1(786.57002)
+DBCQ2(1799.57002)
+DBLC1(572.32002)
+DCCW1(817.32002)
+DCEN2(692.07002)
+DCKN2(587.32002)
+DCRM8(1575.07002)
+DCUC1(303.07002)
+DCWC1(85.57002)
+DDWC1(462.57002)
+DEAI1(977.07002)
+DECC1(1031.07002)
+DEDN2(1336.82002)
+DEEM8(1716.82002)
+DEFO3(828.32002)
+DEHI1(1377.57002)
+DEIC1(683.07002)
+DEMC1(1070.32002)
+DENC1(1013.07002)
+DERM8(1780.07002)
+DESC1(734.07002)
+DESN2(1602.57002)
+DEVC1(539.32002)
+DEW(710.32002)
+DGFC1(1118.82002)
+DGRC1(291.82002)
+DHDI1(2190.07002)
+DHLM8(2060.57002)
+DIAO3(1643.32002)
+DIDN2(926.07002)
+DIVM8(2339.57002)
+DIXO3(126.07002)
+DKFC1(1050.07002)
+DKYC1(2509.57002)
+DLBQ1(1262.82002)
+DLCC1(1732.57002)
+DLN(1711.07002)
+DLS(362.07002)
+DLTU1(1439.82002)
+DLVC1(476.57002)
+DMLC1(1737.07002)
+DMRA3(1642.32002)
+DNPC1(1544.57002)
+DNRC1(2091.32002)
+DNVC1(1511.57002)
+DOGC1(1949.07002)
+DOGQ1(1956.32002)
+DOTW1(284.57002)
+DOUW1(740.82002)
+DPHC1(1381.82002)
+DPKI1(1763.82002)
+DPSA3(1472.07002)
+DPYM8(1611.07002)
+DRBM8(1755.57002)
+DRBN2(2007.57002)
+DRCN2(2111.07002)
+DRYN2(1809.07002)
+DRYW1(987.57002)
+DSNC1(117.32002)
+DUCC1(1508.57002)
+DUCN2(692.07002)
+DUDC1(864.07002)
+DUIC1(1047.07002)
+DUNO3(119.32002)
+DVLO3(246.82002)
+DVOC1(984.07002)
+DVRC1(159.07002)
+DVSC1(1766.07002)
+DVT(476.32002)
+DWAI1(818.82002)
+DWRN2(1586.57002)
+DYCN2(1777.32002)
+DYLC1(1555.82002)
+DYNN2(2159.32002)
+EACQ2(1800.57002)
+EAT(754.32002)
+EBTC1(2394.32002)
+ECHO3(209.32002)
+ECKC1(832.82002)
+ECSC1(556.82002)
+EDOC1(433.32002)
+EDW(732.32002)
+EED(351.57002)
+EELC1(989.32002)
+EEPC1(1286.82002)
+EGCC1(1578.82002)
+EGKO3(213.32002)
+EGLC1(520.07002)
+EIMO3(1608.07002)
+EKA(127.82002)
+EKAN2(2042.07002)
+EKO(1704.82002)
+EKRI1(945.07002)
+ELBI1(1045.57002)
+ELCC1(-20.17998)
+ELDA3(726.82002)
+ELEW1(714.57002)
+ELJC1(176.82002)
+ELKC1(879.57002)
+ELKQ2(858.32002)
+ELN(835.07002)
+ELRN2(2205.07002)
+ELRQ1(1547.82002)
+ELSQ2(659.07002)
+ELXC1(43.32002)
+ELY(2205.07002)
+EMCM8(1324.32002)
+EMFO3(1388.57002)
+EMIO3(1200.57002)
+EMRC1(897.32002)
+EMTI1(945.32002)
+ENCQ1(829.07002)
+ENCW1(409.32002)
+ENFO3(1243.32002)
+ENMW1(259.07002)
+ENTU1(1798.57002)
+ENUW1(409.32002)
+ENV(1440.82002)
+ENVI1(1047.82002)
+EORC1(552.82002)
+EPH(429.82002)
+EPKC1(628.32002)
+ERAW1(740.57002)
+ERCC1(422.07002)
+ESCC1(258.32002)
+ESEC1(514.57002)
+ESOC1(258.32002)
+ESPC1(822.07002)
+ESRC1(348.07002)
+EUG(165.07002)
+EUL(728.57002)
+EURM8(1327.32002)
+EVAQ1(2190.32002)
+EVFO3(699.57002)
+EXQC1(242.82002)
+EZRI1(2087.07002)
+FADO3(378.07002)
+FAFI1(1604.07002)
+FAFO3(1193.57002)
+FALN2(1196.82002)
+FALQ1(1641.57002)
+FAT(74.32002)
+FBOC1(450.82002)
+FBSC1(814.82002)
+FCHC1(311.57002)
+FCKO3(1761.57002)
+FCRM8(2060.07002)
+FEFO3(964.57002)
+FERI1(1202.57002)
+FFFO3(1454.82002)
+FFXW1(695.82002)
+FGFO3(1512.32002)
+FGMC1(514.32002)
+FGRC1(781.07002)
+FHCC1(117.57002)
+FHDC1(1733.32002)
+FHFI1(1408.07002)
+FHLC1(448.82002)
+FHR(6.07002)
+FIFW1(567.82002)
+FINQ1(820.57002)
+FISN2(1825.82002)
+FISO3(1361.07002)
+FISW1(1437.07002)
+FKFO3(1401.57002)
+FLAC1(1773.82002)
+FLEI1(2262.57002)
+FLFC1(2136.07002)
+FLFI1(1594.57002)
+FLFO3(1524.32002)
+FMFO3(1386.82002)
+FMLQR(968.57002)
+FMNQ1(1929.57002)
+FMOC1(1062.82002)
+FMRC1(1406.57002)
+FNWC1(1011.57002)
+FNWO3(161.57002)
+FNXA3(374.82002)
+FOGO3(258.07002)
+FOIC1(2086.07002)
+FOSO3(385.57002)
+FOXN2(1742.32002)
+FPRO3(178.07002)
+FPWU1(1060.82002)
+FRAW1(281.07002)
+FRCC1(216.07002)
+FRCW1(1004.32002)
+FRGC1(47.57002)
+FRHM8(1917.32002)
+FRIC1(238.32002)
+FRIW1(259.07002)
+FRKW1(197.07002)
+FRLO3(1545.82002)
+FRMM8(1202.57002)
+FRSO3(145.82002)
+FRTC1(1140.57002)
+FSHC1(1180.82002)
+FSLC1(140.82002)
+FSNC1(56.82002)
+FSSO3(238.07002)
+FTAW1(817.82002)
+FTDC1(204.32002)
+FTFW1(961.32002)
+FTMM8(1759.57002)
+FTNC1(581.82002)
+FTSC1(607.57002)
+FUL(27.07002)
+FVVN2(1477.82002)
+FWFW1(1071.32002)
+FWNN2(653.57002)
+FWSC1(1706.57002)
+FWSN2(653.57002)
+FZWA3(1881.82002)
+GAAM8(1989.57002)
+GALN2(2015.32002)
+GARI1(2175.07002)
+GARW1(817.82002)
+GASC1(486.57002)
+GASO3(190.82002)
+GAVI1(1554.57002)
+GBDA3(282.57002)
+GBRC1(870.32002)
+GCAW1(668.57002)
+GCDC1(493.82002)
+GCHA3(1354.82002)
+GCKQ1(1783.82002)
+GCN(1863.82002)
+GCRA3(1672.57002)
+GDFO3(1022.82002)
+GDLC1(1788.82002)
+GDPN2(1100.07002)
+GDRO3(356.07002)
+GDRQ2(730.82002)
+GDTA3(143.32002)
+GDTC1(142.57002)
+GECU1(1945.57002)
+GEG(700.82002)
+GEOC1(810.32002)
+GERW1(349.32002)
+GGDA3(300.07002)
+GGRC1(418.07002)
+GHDQ1(1684.07002)
+GHFW1(883.57002)
+GILO3(1089.82002)
+GISC1(960.07002)
+GKSC1(1508.57002)
+GLAW1(930.32002)
+GLDO3(1668.32002)
+GLEQ1(898.82002)
+GLFM8(1308.82002)
+GLNI1(2600.32002)
+GLSI1(2600.32002)
+GMFW1(906.57002)
+GMTC1(880.82002)
+GNFC1(2143.82002)
+GNLC1(2143.57002)
+GNLW1(768.07002)
+GNNC1(1126.07002)
+GNSC1(265.82002)
+GNTC1(1113.07002)
+GODW1(1157.57002)
+GOLW1(483.07002)
+GOSC1(760.57002)
+GOYC1(241.57002)
+GPEN2(2015.32002)
+GPFO3(212.57002)
+GPI(1061.32002)
+GPRM8(1772.82002)
+GQEC1(486.57002)
+GRBO3(1554.32002)
+GRCA3(1672.57002)
+GRCM8(1621.32002)
+GRCW1(1108.07002)
+GRFW1(734.07002)
+GRHC1(348.07002)
+GRMO3(140.57002)
+GRNQ2(1708.57002)
+GRNW1(1081.57002)
+GROQ2(1410.57002)
+GRRC1(1461.82002)
+GRSC1(1757.32002)
+GRSI1(2191.32002)
+GRVN2(2024.07002)
+GRWA3(1651.32002)
+GRZO3(1067.32002)
+GSFO3(1336.07002)
+GSGN2(1310.82002)
+GSKI1(1861.57002)
+GSNM8(1719.07002)
+GSPC1(745.82002)
+GSTC1(36.07002)
+GSTO3(1554.32002)
+GSVC1(770.07002)
+GTCC1(167.32002)
+GTMC1(1137.82002)
+GTOC1(475.32002)
+GTOM8(1825.82002)
+GVPC1(1070.32002)
+GVYC1(2090.07002)
+GWFW1(1146.57002)
+GWWW1(349.32002)
+GZFC1(1009.07002)
+HABC1(1530.57002)
+HAIC1(607.07002)
+HAMA3(639.82002)
+HANM8(1377.82002)
+HATC1(1158.32002)
+HAWM8(1442.32002)
+HAYI1(828.07002)
+HBFI1(1452.32002)
+HBRC1(1777.82002)
+HCNC1(1646.57002)
+HCPC1(442.57002)
+HCTC1(349.32002)
+HDLC1(944.32002)
+HDLI1(1332.32002)
+HDZC1(740.07002)
+HEMI1(1238.32002)
+HESC1(1060.07002)
+HFLC1(1041.07002)
+HGFW1(1036.82002)
+HHAI1(1963.07002)
+HHDW1(674.32002)
+HHFO3(975.07002)
+HHR(13.32002)
+HIBW1(791.07002)
+HIDC1(187.07002)
+HIMN2(2010.07002)
+HIO(145.82002)
+HIRO3(1172.07002)
+HJO(58.82002)
+HKFW1(284.57002)
+HLCC1(1023.07002)
+HLKC1(1656.32002)
+HLLC1(1773.07002)
+HLMO3(879.57002)
+HLTI1(2393.82002)
+HMGC1(1545.57002)
+HMS(255.82002)
+HNAO3(677.82002)
+HNBO3(898.32002)
+HNDO3(898.32002)
+HNEO3(734.32002)
+HNFO3(968.32002)
+HNGC1(856.57002)
+HNGO3(734.32002)
+HNHO3(968.32002)
+HNIO3(968.32002)
+HNJO3(1185.82002)
+HNSW1(259.07002)
+HNTC1(1770.07002)
+HNYM8(1181.07002)
+HOAC1(830.57002)
+HODO3(485.82002)
+HOHU1(1687.57002)
+HOMI1(758.07002)
+HONC1(357.57002)
+HOOM8(1596.32002)
+HOTM8(1151.32002)
+HOTN2(1305.57002)
+HOWO3(1421.07002)
+HOXO3(485.82002)
+HPDC1(524.57002)
+HPEC1(220.07002)
+HPFI1(2544.07002)
+HPRC1(803.32002)
+HPRO3(898.32002)
+HPWO3(1365.07002)
+HQM(44.57002)
+HQSI1(1016.57002)
+HRHW1(351.32002)
+HRI(212.57002)
+HRLO3(1512.82002)
+HRWM8(1348.32002)
+HRZC1(664.57002)
+HSEC1(331.07002)
+HSFO3(763.82002)
+HSGC1(819.07002)
+HSKO3(341.57002)
+HSPC1(67.57002)
+HSQC1(2740.07002)
+HTRC1(1377.07002)
+HTSC1(1022.32002)
+HUFW1(300.07002)
+HUGI1(1369.57002)
+HUSQ1(896.82002)
+HUZI1(1748.57002)
+HVSA3(312.32002)
+HWCI1(1637.57002)
+HWD(103.32002)
+HWKC1(377.07002)
+HWRW1(389.07002)
+HYFC1(1034.57002)
+HYFO3(900.82002)
+HYNI1(2486.07002)
+HYSC1(1879.57002)
+ICKC1(2047.32002)
+ICPC1(2047.32002)
+IDA(1494.82002)
+IDAC1(818.57002)
+IDKC1(1357.82002)
+IDOC1(338.32002)
+IDPC1(2203.32002)
+IDWC1(1406.82002)
+IGM(1229.82002)
+ILLQ2(1445.32002)
+IMHO3(1278.07002)
+IMTW1(1231.07002)
+IMWN2(1889.82002)
+INDI1(1864.32002)
+INTC1(1166.57002)
+IPL(-25.67998)
+IPLC1(38.32002)
+IRFO3(1380.82002)
+ISPQ1(896.57002)
+ISWC1(484.82002)
+IWLC1(1068.57002)
+IZA(402.07002)
+JAPN2(2033.32002)
+JBGC1(508.57002)
+JBLC1(434.57002)
+JCUN2(2033.32002)
+JEAN2(1075.07002)
+JER(1144.57002)
+JESN2(1130.32002)
+JETM8(1021.82002)
+JKPI1(1925.07002)
+JLNQ2(826.07002)
+JNLC1(661.32002)
+JOJO3(961.57002)
+JPRC1(1704.82002)
+JRFO3(1395.32002)
+JRHQ1(1699.32002)
+JRMA3(1379.07002)
+JRMI1(1081.32002)
+JSDC1(810.32002)
+JSNC1(1564.32002)
+JSPN2(1723.57002)
+JSPU1(1827.07002)
+JTAC1(1461.07002)
+JUFW1(205.57002)
+JULC1(1065.82002)
+JUMQ2(654.32002)
+JWBC1(1297.32002)
+KADW1(1063.82002)
+KBFO3(1309.07002)
+KBNC1(1290.82002)
+KCFW1(640.32002)
+KCPC1(701.57002)
+KCYC1(286.57002)
+KEDW1(1140.82002)
+KEEO3(1425.57002)
+KELC1(575.07002)
+KESC1(363.57002)
+KFAW1(840.82002)
+KFLW1(840.82002)
+KIMO3(733.57002)
+KLS(195.57002)
+KMFW1(632.32002)
+KMRO3(1515.32002)
+KNNC1(454.82002)
+KNSN2(1484.32002)
+KNWC1(1179.32002)
+KOSW1(645.07002)
+KRCI1(1881.07002)
+KRCM8(1661.07002)
+KRKC1(1640.57002)
+KRNC1(1508.07002)
+KRTC1(1457.57002)
+KSPC1(2283.07002)
+KTLC1(230.07002)
+KTLW1(840.82002)
+KTTC1(109.57002)
+KUSW1(770.82002)
+KYCN2(1758.32002)
+L13(11.32002)
+LADN2(2014.07002)
+LAFC1(1670.07002)
+LAFN2(552.32002)
+LAGC1(25.07002)
+LAGO3(1095.32002)
+LAHC1(179.82002)
+LALN2(552.32002)
+LAS(692.07002)
+LAX(47.07002)
+LAYC1(596.32002)
+LBBM8(1124.32002)
+LBCO3(935.57002)
+LBDC1(129.82002)
+LBFO3(1413.07002)
+LBIC1(8.07002)
+LBRW1(470.32002)
+LCBC1(35.82002)
+LCFW1(1113.57002)
+LCHN2(1818.57002)
+LDOI1(2287.57002)
+LDRC1(1432.07002)
+LDWM8(1151.82002)
+LEBC1(1355.07002)
+LECW1(954.82002)
+LEFW1(946.07002)
+LEGC1(459.07002)
+LEGW1(201.32002)
+LENN2(2023.82002)
+LESQ1(2054.32002)
+LEXC1(313.57002)
+LFDQ1(892.07002)
+LFRM8(1132.57002)
+LGB(2.32002)
+LGD(1105.82002)
+LGFO3(698.32002)
+LGRC1(207.32002)
+LGWN2(535.07002)
+LHCA3(428.57002)
+LIBM8(1118.57002)
+LICC1(72.32002)
+LIDW1(446.32002)
+LIMQ1(1592.32002)
+LINM8(1754.82002)
+LINQR(919.57002)
+LKCC1(410.07002)
+LKCO3(1706.32002)
+LKN(1704.82002)
+LKNC1(1292.07002)
+LKSO3(615.07002)
+LKTI1(1369.57002)
+LKWA3(1426.57002)
+LLEC1(931.32002)
+LLFW1(1055.82002)
+LLJ(2024.07002)
+LMCN2(1746.57002)
+LMCO3(1680.82002)
+LMDN2(1001.82002)
+LMDO3(996.07002)
+LMHM8(2112.32002)
+LMLN2(2125.57002)
+LMRM8(2148.82002)
+LMRN2(1001.82002)
+LMT(1346.82002)
+LNBW1(353.82002)
+LNCM8(1754.82002)
+LOAC1(201.07002)
+LOBC1(2497.82002)
+LOFO3(259.07002)
+LOIN2(1958.82002)
+LOKC1(1494.57002)
+LOL(1286.07002)
+LONN2(1940.82002)
+LOSC1(129.82002)
+LOSO3(865.32002)
+LPAC1(153.07002)
+LPC(152.07002)
+LPDC1(981.07002)
+LPFI1(1852.57002)
+LPOC1(624.82002)
+LPOW1(865.32002)
+LPRC1(620.32002)
+LPRU1(1974.32002)
+LPSI1(1735.57002)
+LPSW1(1075.32002)
+LPTC1(1507.82002)
+LPWO3(509.32002)
+LPZC1(639.07002)
+LRCM8(1755.57002)
+LRLC1(889.32002)
+LRRM8(2199.82002)
+LSFW1(954.82002)
+LSGC1(312.82002)
+LSHC1(735.07002)
+LSLC1(327.57002)
+LSNC1(1249.82002)
+LSPC1(1715.57002)
+LSRC1(150.07002)
+LSTC1(1126.07002)
+LSV(704.82002)
+LTAI1(1554.57002)
+LTHC1(1029.07002)
+LTJC1(605.07002)
+LTLC1(984.07002)
+LTRC1(205.82002)
+LUBM8(1436.32002)
+LUFI1(1109.57002)
+LUKO3(1197.57002)
+LUNN2(2077.82002)
+LVGQ1(1881.07002)
+LVK(246.82002)
+LVMC1(165.32002)
+LVPN2(587.32002)
+LVTC1(2722.57002)
+LVYN2(1973.32002)
+LWDC1(422.07002)
+LWDI1(2604.32002)
+LWNW1(1214.07002)
+LWS(597.82002)
+MADC1(1039.57002)
+MAE(86.57002)
+MAEC1(487.57002)
+MAFC1(236.57002)
+MAMC1(2671.82002)
+MANM8(1812.57002)
+MANW1(809.32002)
+MAPC1(603.57002)
+MARW1(824.32002)
+MAYI1(1925.32002)
+MBBC1(951.57002)
+MBCA3(628.07002)
+MBCC1(123.32002)
+MBMW1(824.32002)
+MBUC1(129.07002)
+MCCC1(1347.07002)
+MCDO3(1538.82002)
+MCDW1(261.82002)
+MCE(40.57002)
+MCFC1(1017.57002)
+MCGC1(274.32002)
+MCGN2(2217.32002)
+MCKI1(1136.07002)
+MCPA3(1150.57002)
+MCUC1(1081.57002)
+MDAC1(222.57002)
+MDDC1(939.57002)
+MDFI1(1785.07002)
+MDFO3(636.82002)
+MDHC1(1317.82002)
+MDLA3(1073.32002)
+MDLI1(2400.07002)
+MDMI1(1306.57002)
+MDRW1(709.07002)
+MEAA3(1087.32002)
+MEEC1(71.82002)
+MEFO3(1123.32002)
+MEFW1(1219.82002)
+MFDU1(1857.07002)
+MFDW1(222.32002)
+MFLC1(1031.07002)
+MFR(531.82002)
+MGCA3(628.07002)
+MGFO3(1204.32002)
+MGMI1(1857.82002)
+MGSW1(872.07002)
+MHBC1(93.32002)
+MHEC1(502.32002)
+MHLA3(1162.57002)
+MHMC1(589.82002)
+MHS(1579.32002)
+MHSI1(1858.32002)
+MHSW1(1033.07002)
+MHV(854.07002)
+MHWO3(1816.07002)
+MHYC1(2135.57002)
+MIAC1(1017.57002)
+MIDI1(2081.82002)
+MIDW1(709.07002)
+MIGC1(157.57002)
+MILW1(799.07002)
+MIPW1(148.07002)
+MISI1(966.07002)
+MITW1(730.57002)
+MJBN2(1472.57002)
+MJCC1(875.07002)
+MKBI1(2332.07002)
+MKEC1(2179.57002)
+MKZO3(1345.32002)
+MLCC1(1154.32002)
+MLFO3(565.57002)
+MLGC1(1052.82002)
+MLHN2(776.32002)
+MLKI1(2356.57002)
+MLLO3(256.57002)
+MLNC1(1052.82002)
+MLP(1392.82002)
+MMCW1(824.32002)
+MMFO3(708.57002)
+MMIA3(402.07002)
+MMKC1(1335.32002)
+MMRO3(708.82002)
+MMTA3(1073.32002)
+MMTC1(2246.82002)
+MMV(79.82002)
+MMWA3(572.82002)
+MNAC1(1603.32002)
+MNCC1(1230.07002)
+MNCN2(2014.07002)
+MNGC1(1483.32002)
+MNHC1(1819.57002)
+MNLC1(1124.07002)
+MNNA3(1347.82002)
+MNRN2(2015.32002)
+MNSI1(2367.32002)
+MNTN2(1659.07002)
+MOAN2(703.07002)
+MOD(14.07002)
+MOFI1(1656.57002)
+MOGN2(1805.82002)
+MOIC1(377.82002)
+MOKI1(2017.07002)
+MOLC1(541.32002)
+MOMN2(2123.57002)
+MORN2(1633.07002)
+MORQ1(846.32002)
+MOSI1(866.32002)
+MOSO3(1423.32002)
+MOUC1(903.32002)
+MOWC1(1625.32002)
+MPEC1(76.82002)
+MPLO3(203.57002)
+MPOC1(535.82002)
+MPSW1(1021.32002)
+MRDC1(1483.32002)
+MRFO3(1228.32002)
+MRGI1(2231.57002)
+MRIC1(535.82002)
+MRKI1(1647.32002)
+MRLN2(1973.32002)
+MRNC1(422.07002)
+MRSC1(452.57002)
+MRSO3(747.07002)
+MRWA3(470.07002)
+MRY(19.57002)
+MRYM8(1764.57002)
+MRYN2(1185.82002)
+MSAC1(1579.32002)
+MSCI1(878.82002)
+MSEC1(244.07002)
+MSFO3(1358.07002)
+MSJC1(1107.32002)
+MSLQ1(1013.07002)
+MSO(1372.82002)
+MSPM8(1311.07002)
+MSQN2(855.07002)
+MSRC1(1579.32002)
+MSRU1(1816.32002)
+MSVA3(572.82002)
+MSYC1(1090.82002)
+MTAW1(874.07002)
+MTCW1(897.57002)
+MTHI1(833.07002)
+MTHN2(2139.82002)
+MTHO3(1177.57002)
+MTIC1(377.82002)
+MTKM8(1922.32002)
+MTMC1(188.07002)
+MTMI1(1739.32002)
+MTQC1(840.57002)
+MTR(19.57002)
+MTRO3(1187.32002)
+MTSC1(2103.32002)
+MTSN2(1341.82002)
+MTTC1(2090.07002)
+MTZC1(600.32002)
+MUDC1(981.32002)
+MUDW1(171.82002)
+MULM8(2247.82002)
+MUO(833.07002)
+MVDC1(1233.07002)
+MVDN2(1712.82002)
+MVEW1(100.32002)
+MVLC1(1376.82002)
+MWH(392.82002)
+MWSA3(783.07002)
+MYF(76.82002)
+MYL(1746.07002)
+MYMA3(321.07002)
+MYRC1(2228.07002)
+MYRI1(1217.57002)
+MYV(22.32002)
+MZTC1(1625.32002)
+NADC1(168.82002)
+NAPC1(254.07002)
+NBKO3(318.32002)
+NBRC1(75.07002)
+NCKC1(1016.07002)
+NCLO3(1594.32002)
+NCSW1(1115.07002)
+NEFW1(766.57002)
+NEIQ1(1161.57002)
+NFEM8(1524.82002)
+NFFI1(2566.57002)
+NFFW1(213.82002)
+NFJM8(1673.32002)
+NFKC1(1544.57002)
+NFL(1250.57002)
+NFRC1(854.57002)
+NFRO3(698.32002)
+NHPC1(446.57002)
+NHRU1(1995.32002)
+NID(850.07002)
+NINM8(1348.82002)
+NIPC1(384.82002)
+NISW1(944.82002)
+NKSW1(61.07002)
+NKX(76.82002)
+NLC(50.57002)
+NLSC1(791.57002)
+NLSN2(575.82002)
+NMPI1(809.82002)
+NMSC1(342.57002)
+NOIM8(1320.82002)
+NPFO3(798.07002)
+NPXC1(1180.57002)
+NRAC1(100.82002)
+NRDC1(1031.82002)
+NRKW1(173.57002)
+NTCC1(562.82002)
+NTDN2(1618.82002)
+NTPO3(1709.57002)
+NTRC1(1861.82002)
+NUCI1(1300.32002)
+NUQ(157.07002)
+NUW(0.82002)
+NVRM8(1714.07002)
+NWRA3(901.07002)
+NWRC1(27.82002)
+NXP(715.57002)
+NYAN2(1873.57002)
+NYL(166.07002)
+NYSO3(717.32002)
+NZAC1(1279.32002)
+NZCM8(1965.32002)
+OAGW1(718.07002)
+OAK(29.07002)
+OAMC1(31.57002)
+OASN2(1923.82002)
+OBRC1(532.57002)
+OCFW1(1255.32002)
+OCHO3(1167.32002)
+OCMO3(1415.07002)
+OCNC1(63.07002)
+OCTC1(259.07002)
+OCWO3(1408.57002)
+ODBN2(926.07002)
+ODLC1(28.82002)
+ODSW1(502.82002)
+OGD(1454.82002)
+OGDC1(949.07002)
+OGOC1(616.07002)
+OGVC1(1180.57002)
+OHOI1(2151.32002)
+OICC1(1010.07002)
+OITC1(417.57002)
+OJAC1(561.32002)
+OJIC1(561.32002)
+OKB(63.07002)
+OKFO3(1515.57002)
+OKNC1(1194.82002)
+OKPC1(354.32002)
+OLDQ1(1015.82002)
+OLNM8(1374.32002)
+OMFO3(613.07002)
+OMFW1(1016.82002)
+OMK(792.57002)
+OMTC1(828.82002)
+OMWW1(1021.32002)
+ONCC1(2046.07002)
+ONO(708.57002)
+ONOC1(120.82002)
+ONSC1(823.57002)
+ONT(559.07002)
+ONYC1(1312.32002)
+OOFO3(1648.57002)
+OORC1(1651.57002)
+OPCA3(532.57002)
+OPLC1(875.07002)
+ORCO3(72.82002)
+ORDC1(266.82002)
+ORIC1(96.07002)
+ORWN2(1356.57002)
+OTOW1(313.82002)
+OTTC1(119.07002)
+OURC1(830.82002)
+OVE(96.82002)
+OVNM8(1549.07002)
+OVRC1(2064.07002)
+OWDC1(133.32002)
+OWFO3(1061.07002)
+OWNC1(2132.07002)
+OWYN2(1817.07002)
+OXR(58.32002)
+OXSI1(1699.82002)
+OYFO3(1607.57002)
+P68(1960.07002)
+P69(1202.57002)
+PACW1(1036.82002)
+PAE(39.82002)
+PAFO3(594.32002)
+PAHN2(1302.82002)
+PALW1(446.57002)
+PAMC1(937.32002)
+PANN2(1759.32002)
+PASQ1(1977.32002)
+PBCC1(1310.32002)
+PBFW1(100.32002)
+PBUI1(1571.32002)
+PCEC1(434.82002)
+PCIC1(476.57002)
+PCKC1(1277.57002)
+PCKI1(1751.82002)
+PCLC1(410.07002)
+PCON2(1698.57002)
+PCQC1(671.82002)
+PCRW1(1591.82002)
+PCYO3(1535.82002)
+PDEC1(508.57002)
+PDGC1(457.07002)
+PDT(411.07002)
+PDX(87.57002)
+PEAC1(348.57002)
+PEFO3(291.57002)
+PEFW1(974.07002)
+PELQR(1600.32002)
+PEOW1(976.82002)
+PEPC1(2030.57002)
+PESW1(961.57002)
+PFHC1(1397.57002)
+PFRC1(278.07002)
+PFTC1(414.57002)
+PGRC1(600.32002)
+PHGM8(1989.32002)
+PHRC1(955.32002)
+PHX(368.32002)
+PIBC1(162.57002)
+PIBN2(587.32002)
+PICM8(1771.07002)
+PIDC1(1031.82002)
+PIEC1(1624.32002)
+PIEI1(1096.57002)
+PIFC1(1362.82002)
+PIFW1(977.82002)
+PIH(1370.57002)
+PIHC1(982.57002)
+PION2(1798.82002)
+PIPA3(1543.82002)
+PIRI1(1096.57002)
+PISC1(80.57002)
+PITC1(789.82002)
+PIVC1(1426.07002)
+PKCC1(680.07002)
+PKFC1(537.07002)
+PKFO3(819.32002)
+PKSQ1(1594.57002)
+PLAM8(1179.32002)
+PLCC1(433.32002)
+PLEC1(165.07002)
+PLFI1(1057.32002)
+PLIC1(877.07002)
+PLKI1(1151.57002)
+PLLC1(1530.57002)
+PLMC1(29.32002)
+PLRC1(924.82002)
+PLTC1(307.07002)
+PLVM8(1337.07002)
+PMD(950.57002)
+PMFW1(966.07002)
+PMNM8(1294.57002)
+PNCC1(2143.57002)
+PNCQR(1110.32002)
+PNFI1(1419.82002)
+PNGO3(485.82002)
+PNKW1(935.32002)
+PNRI1(1034.07002)
+PNTM8(1515.32002)
+POEM8(1519.32002)
+POLM8(1514.57002)
+POMC1(389.57002)
+PORQ1(1387.57002)
+POSC1(1823.82002)
+POTC1(762.32002)
+POTI1(874.32002)
+POWC1(213.82002)
+POWO3(502.07002)
+PPDN2(692.07002)
+PPHC1(1055.32002)
+PPPC1(842.82002)
+PPRC1(442.57002)
+PPRW1(1356.07002)
+PPSC1(307.57002)
+PRAI1(1557.82002)
+PRB(350.82002)
+PRBC1(350.82002)
+PRBQ1(1576.07002)
+PRC(1651.32002)
+PRCI1(1175.07002)
+PRCO3(1473.32002)
+PRDM8(1302.82002)
+PRFO3(741.07002)
+PRGC1(1675.32002)
+PRHC1(461.07002)
+PRIQ1(1259.07002)
+PRKA3(230.32002)
+PRLI1(1820.32002)
+PRMC1(937.32002)
+PROO3(875.32002)
+PRPC1(828.82002)
+PRSN2(2211.57002)
+PSAC1(291.82002)
+PSC(182.07002)
+PSCC1(2163.07002)
+PSP(794.57002)
+PSPC1(1721.57002)
+PSQC1(258.32002)
+PSRC1(2097.82002)
+PSTA3(1651.32002)
+PSTC1(1748.32002)
+PSTM8(1481.07002)
+PTEC1(231.57002)
+PTFO3(1498.32002)
+PTHC1(1095.07002)
+PTHW1(1409.82002)
+PTNM8(2195.32002)
+PTPC1(19.57002)
+PTV(193.82002)
+PUGC1(119.07002)
+PUW(835.82002)
+PVRO3(1027.82002)
+PWYC1(213.82002)
+PYFO3(1003.32002)
+PYLC1(1131.07002)
+PYNC1(1193.32002)
+PYPC1(566.32002)
+PYTI1(729.32002)
+QBAA3(1828.07002)
+QBMA3(1816.82002)
+QBRA3(1443.82002)
+QBYQ2(1429.57002)
+QCAC1(58.32002)
+QCCO3(737.32002)
+QCKA3(1214.57002)
+QCNW1(289.07002)
+QDPA3(2360.07002)
+QFSA3(1933.57002)
+QGDA3(1326.57002)
+QGSA3(1711.57002)
+QHAA3(351.57002)
+QHBA3(1070.07002)
+QHQA3(726.57002)
+QHUA3(1535.57002)
+QISA3(1651.32002)
+QLGA3(1715.07002)
+QMBA3(1292.32002)
+QMLA3(1715.07002)
+QMMA3(1291.57002)
+QNFA3(1715.07002)
+QNYC1(1504.57002)
+QOKA3(1282.82002)
+QPFO3(569.07002)
+QRMO3(1703.32002)
+QRTA3(1572.32002)
+QSPA3(1214.57002)
+QSTA3(1042.57002)
+QTCW1(566.07002)
+QTUA3(1863.82002)
+QTWA3(1466.32002)
+QTZC1(1234.57002)
+QUEQ1(925.07002)
+QUPA3(628.07002)
+QWSA3(2150.82002)
+QYJA3(1641.32002)
+QYRC1(1504.57002)
+RAL(309.57002)
+RAWN2(1395.07002)
+RAYQ1(956.82002)
+RBG(319.32002)
+RBL(108.82002)
+RBTN2(1664.82002)
+RBVN2(2048.57002)
+RBYC1(370.07002)
+RBYM8(1907.82002)
+RCCW1(193.32002)
+RCEC1(2297.32002)
+RCFC1(47.57002)
+RCHC1(846.82002)
+RCPC1(1286.82002)
+RCRO3(1587.57002)
+RCSO3(1590.57002)
+RDD(155.82002)
+RDKI1(2303.32002)
+RDLO3(478.07002)
+RDM(929.07002)
+RDOC1(0.32002)
+RDVC1(667.32002)
+REDO3(1123.07002)
+REEO3(83.82002)
+RENI1(1220.57002)
+REO(1261.57002)
+RFCN2(653.57002)
+RFSC1(363.57002)
+RFTI1(1347.82002)
+RGTC1(984.07002)
+RIV(457.07002)
+RJSC1(395.32002)
+RKBC1(277.07002)
+RKHO3(287.32002)
+RKPM8(1992.07002)
+RLFO3(1389.57002)
+RLGW1(1181.57002)
+RLKC1(990.07002)
+RLKN2(2027.57002)
+RLYO3(1393.32002)
+RMFO3(110.57002)
+RMNC1(475.32002)
+RMTC1(1179.32002)
+RNDC1(1477.07002)
+RNDN2(1723.32002)
+RNFO3(1485.82002)
+RNM(475.32002)
+RNO(1777.32002)
+RNT(54.82002)
+ROCI1(1315.82002)
+ROLC1(712.07002)
+RONM8(1080.32002)
+RORO3(1281.07002)
+ROSQ1(762.57002)
+ROVC1(1031.82002)
+RPSA3(171.32002)
+RRAC1(155.82002)
+RRFI1(1704.57002)
+RRKN2(1305.07002)
+RRMC1(1592.32002)
+RROO3(1333.82002)
+RRRC1(520.57002)
+RSBU1(1657.32002)
+RSCN2(1826.57002)
+RSFW1(159.82002)
+RSHC1(1497.07002)
+RSPC1(508.07002)
+RTFO3(1374.57002)
+RTHN2(2138.57002)
+RTLC1(1440.07002)
+RUBC1(2136.07002)
+RUSC1(1113.32002)
+RVDC1(1716.82002)
+RVYC1(324.32002)
+RWCC1(111.32002)
+RWDN2(575.82002)
+RXFO3(1092.07002)
+RYNC1(549.07002)
+RZVW1(562.82002)
+SABC1(2896.07002)
+SAC(-4.42998)
+SAFO3(1148.32002)
+SAHN2(575.82002)
+SAN(56.82002)
+SAPC1(-5.92998)
+SARC1(75.07002)
+SAUC1(558.32002)
+SAYC1(410.07002)
+SBA(142.57002)
+SBFO3(880.32002)
+SBIC1(0.070023)
+SBKW1(76.82002)
+SBMW1(677.57002)
+SBP(318.82002)
+SBPC1(318.82002)
+SBTC1(1166.82002)
+SBVC1(244.07002)
+SBYC1(745.82002)
+SCAQ1(2022.82002)
+SCCN2(575.82002)
+SCCQ1(2190.07002)
+SCDO3(190.82002)
+SCFI1(1328.57002)
+SCFO3(1481.32002)
+SCHC1(313.57002)
+SCHI1(2118.82002)
+SCHO3(1417.32002)
+SCK(-4.17998)
+SCKC1(0.32002)
+SCOO3(190.82002)
+SCRN2(1851.57002)
+SCSC1(508.32002)
+SCTI1(1774.82002)
+SCWW1(278.07002)
+SDB(1131.07002)
+SDDC1(363.82002)
+SDFO3(1570.82002)
+SDLC1(796.82002)
+SDM(179.82002)
+SDMM8(1981.57002)
+SDMO3(393.07002)
+SDMW1(315.07002)
+SDOC1(416.07002)
+SDRC1(1128.82002)
+SEA(76.82002)
+SENW1(1094.82002)
+SERC1(1940.57002)
+SETC1(973.07002)
+SEW(37.82002)
+SEXC1(208.57002)
+SEYC1(1762.32002)
+SFBC1(1748.32002)
+SFBO3(495.57002)
+SFF(705.32002)
+SFKC1(532.57002)
+SFKO3(477.32002)
+SFNW1(205.82002)
+SFO(24.07002)
+SFOC1(2.82002)
+SFXC1(64.82002)
+SGEC1(438.07002)
+SGFO3(879.57002)
+SGGU1(1359.32002)
+SGHQ1(1781.82002)
+SGNW1(1145.07002)
+SGPC1(1180.82002)
+SGQC1(396.07002)
+SGRU1(1101.82002)
+SGUU1(1050.07002)
+SGX(258.32002)
+SGYC1(962.32002)
+SHDC1(364.82002)
+SHFO3(1392.82002)
+SHHC1(653.57002)
+SHIC1(801.57002)
+SHLQ2(1300.57002)
+SHMC1(1483.32002)
+SHN(70.57002)
+SHNC1(669.82002)
+SHPW1(817.57002)
+SHQC1(746.82002)
+SHRO3(1182.82002)
+SHRQ1(1725.82002)
+SHVC1(1642.82002)
+SHWI1(1061.57002)
+SIAN2(1673.32002)
+SIDW1(638.57002)
+SIGU1(2386.57002)
+SIY(970.32002)
+SJBC1(207.07002)
+SJC(198.57002)
+SKAM8(1843.07002)
+SKFI1(1924.82002)
+SKKW1(1143.82002)
+SKLA3(1611.07002)
+SKMW1(200.07002)
+SKNC1(551.82002)
+SKOQ1(2292.82002)
+SKOW1(663.82002)
+SKYW1(982.82002)
+SLAC1(739.32002)
+SLE(66.57002)
+SLFC1(735.07002)
+SLFO3(1415.07002)
+SLKO3(1701.57002)
+SLMC1(2231.32002)
+SLON2(704.82002)
+SLPC1(1020.82002)
+SLRC1(175.82002)
+SLTC1(1247.07002)
+SLTO3(1370.32002)
+SLVO3(1715.32002)
+SLWC1(23.07002)
+SMBA3(691.32002)
+SMBC1(1007.32002)
+SMDC1(1949.07002)
+SMF(-5.92998)
+SMFO3(1762.07002)
+SMGC1(318.82002)
+SMIO3(263.57002)
+SMLO3(1565.07002)
+SMN(1853.32002)
+SMNN2(1422.07002)
+SMNQ2(540.82002)
+SMO(47.07002)
+SMOC1(23.07002)
+SMPC1(307.32002)
+SMPN2(926.07002)
+SMPW1(1063.82002)
+SMRC1(364.82002)
+SMRO3(1701.57002)
+SMRQ1(1080.32002)
+SMSC1(1148.32002)
+SMTC1(10.57002)
+SMTI1(1695.07002)
+SMTM8(1580.82002)
+SMVC1(354.32002)
+SMWN2(1422.07002)
+SMX(103.57002)
+SMYI1(1853.32002)
+SNA(100.82002)
+SNFW1(516.07002)
+SNS(168.82002)
+SNSI1(1309.82002)
+SNT(2352.07002)
+SNWC1(1140.32002)
+SOAC1(904.07002)
+SOAO3(898.32002)
+SOBO3(898.32002)
+SOCO3(898.32002)
+SODO3(898.32002)
+SOEO3(898.32002)
+SOFO3(898.32002)
+SOGO3(898.32002)
+SOUI1(1054.57002)
+SOX(306.57002)
+SPAI1(1559.57002)
+SPB(127.57002)
+SPCC1(2179.57002)
+SPCW1(668.57002)
+SPEW1(246.57002)
+SPGC1(1728.32002)
+SPGN2(1616.07002)
+SPGW1(1299.57002)
+SPLW1(1121.32002)
+SPMN2(1956.82002)
+SPMW1(1071.57002)
+SPNQ1(1798.82002)
+SPSO3(1200.57002)
+SPWC1(1020.32002)
+SPXC1(142.57002)
+SQFO3(1127.32002)
+SQLW1(473.07002)
+SQPM8(1356.57002)
+SQPW1(1036.32002)
+SQSC1(932.32002)
+SRAC1(2722.57002)
+SRBN2(1001.82002)
+SRBW1(476.07002)
+SRCQ1(1787.32002)
+SRFI1(1497.57002)
+SRGM8(1348.07002)
+SRIC1(24.32002)
+SRMO3(631.07002)
+SRTC1(712.32002)
+SRUC1(398.32002)
+SRXC1(607.07002)
+SRYM8(1764.57002)
+SSCN2(2178.57002)
+SSPW1(927.07002)
+STAC1(100.82002)
+STAM8(1480.57002)
+STAN2(2028.32002)
+STCQ1(1379.32002)
+STDQ1(882.82002)
+STEC1(176.82002)
+STFC1(624.07002)
+STFO3(1623.82002)
+STGM8(1348.07002)
+STHC1(275.32002)
+STKM8(1499.57002)
+STMN2(1994.07002)
+STMQR(1764.57002)
+STNI1(2352.07002)
+STPC1(1949.07002)
+STQC1(1651.57002)
+STRO3(1525.07002)
+STRQ1(932.32002)
+STRW1(1555.32002)
+STS(206.57002)
+STSM8(1263.07002)
+STTM8(1454.07002)
+STUC1(1748.32002)
+STVM8(1521.32002)
+STWO3(1598.57002)
+STYC1(1105.32002)
+SUAM8(1931.32002)
+SUMM8(1771.07002)
+SUNN2(1812.57002)
+SUNQ1(2034.07002)
+SVCO3(1629.57002)
+SVFI1(1654.07002)
+SVFO3(584.32002)
+SVMO3(1556.57002)
+SVNW1(1236.32002)
+SVPI1(1787.57002)
+SVRQ2(1122.82002)
+SWAC1(697.82002)
+SWBC1(1342.82002)
+SWCW1(920.32002)
+SWDC1(11.32002)
+SWIC1(161.32002)
+SWLC1(118.07002)
+SWNN2(653.57002)
+SWPI1(2391.82002)
+SXT(599.07002)
+SYDC1(354.32002)
+SYNO3(229.32002)
+SYSC1(999.82002)
+SZKQ2(947.32002)
+TABC1(351.57002)
+TACA3(131.32002)
+TACN2(1975.57002)
+TANC1(841.32002)
+TAPC1(1359.82002)
+TAYI1(2006.32002)
+TBRC1(1455.07002)
+TBSU1(2418.32002)
+TCAC1(944.32002)
+TCFI1(1440.07002)
+TCFO3(583.57002)
+TCFW1(1023.07002)
+TCKC1(628.32002)
+TCLC1(671.82002)
+TCM(36.07002)
+TCMO3(1430.82002)
+TCNC1(442.57002)
+TCRA3(1343.57002)
+TEKC1(924.82002)
+TEKW1(834.07002)
+TENQR(1728.82002)
+TEPM8(2006.82002)
+TERC1(261.07002)
+TEXN2(1613.07002)
+TFRU1(1778.07002)
+TGCC1(2091.82002)
+TGFI1(1741.57002)
+THAM8(1298.57002)
+THBW1(1494.32002)
+THDC1(267.32002)
+THFI1(2051.07002)
+THLN2(1777.32002)
+THMI1(1956.57002)
+THRQ1(875.07002)
+TIGC1(973.32002)
+TIJC1(37.82002)
+TILO3(711.32002)
+TILQ1(2241.57002)
+TILW1(473.07002)
+TIW(28.82002)
+TIXC1(38.32002)
+TLHC1(903.32002)
+TLMO3(300.07002)
+TLRW1(297.82002)
+TLYO3(1027.82002)
+TMCM8(1866.07002)
+TMFO3(1600.57002)
+TMKO3(300.07002)
+TMNC1(1306.57002)
+TMRO3(1355.07002)
+TNRC1(203.82002)
+TOFO3(1349.82002)
+TOHW1(1222.57002)
+TOPI1(1758.57002)
+TORC1(295.82002)
+TPEO3(1482.07002)
+TPFW1(973.07002)
+TPGC1(311.07002)
+TPH(1745.07002)
+TPHC1(1306.57002)
+TQIN2(2066.82002)
+TRCM8(1184.82002)
+TRFO3(513.57002)
+TRFW1(1121.32002)
+TRGW1(1060.82002)
+TRHC1(944.32002)
+TRII1(1680.07002)
+TRM(238.32002)
+TRMC1(590.07002)
+TRMI1(1784.82002)
+TRNW1(720.82002)
+TROM8(1218.07002)
+TRON2(926.32002)
+TRTC1(2086.07002)
+TRUC1(2108.32002)
+TRVQ1(919.07002)
+TSCC1(502.32002)
+TSDC1(1357.82002)
+TSHC1(1238.32002)
+TSOW1(1088.07002)
+TSP(1359.82002)
+TTD(138.82002)
+TTRC1(338.57002)
+TUFO3(1224.32002)
+TUSN2(1975.57002)
+TVL(2128.57002)
+TVWU1(1660.32002)
+TWBI1(1064.82002)
+TWCC1(1359.82002)
+TWDC1(402.07002)
+TWDN2(855.07002)
+TWF(1307.57002)
+TWLM8(1864.57002)
+TWMC1(485.57002)
+TWRW1(720.82002)
+TYBO3(1545.07002)
+TYEC1(940.57002)
+TYLO3(1457.82002)
+U24(1439.82002)
+UAO(55.07002)
+UCCC1(1048.57002)
+UCLC1(167.32002)
+UCRC1(363.32002)
+UDWC1(930.32002)
+UFDN2(926.32002)
+UHLC1(1564.32002)
+UIL(79.82002)
+UKIO3(1290.57002)
+ULVN2(1044.32002)
+UMCQ2(1488.57002)
+UMNC1(312.82002)
+UMTO3(175.07002)
+UNYO3(1447.82002)
+UPSO3(780.82002)
+UPWW1(1060.82002)
+USEA3(906.57002)
+VABC1(1653.57002)
+VAMA3(609.07002)
+VAQC1(231.57002)
+VBPC1(1949.07002)
+VCB(67.82002)
+VCFO3(283.57002)
+VDBC1(131.07002)
+VDBN2(755.82002)
+VDCA3(1423.32002)
+VDPA3(1438.57002)
+VENO3(373.57002)
+VENU1(1796.57002)
+VGAC1(2548.07002)
+VGRC1(1054.07002)
+VGT(755.82002)
+VICC1(463.82002)
+VICQ1(1745.82002)
+VIOC1(1624.57002)
+VIS(61.07002)
+VKOC1(2950.57002)
+VLCC1(563.32002)
+VLKC1(588.07002)
+VLYC1(1235.57002)
+VNCU1(1903.32002)
+VNNI1(2462.82002)
+VNOC1(240.57002)
+VNY(312.82002)
+VOFN2(597.82002)
+VSTC1(167.07002)
+VTUC1(208.57002)
+VUO(87.57002)
+VVDN2(575.82002)
+WAGI1(1912.32002)
+WAHI1(850.57002)
+WALC1(2288.07002)
+WARO3(1291.32002)
+WASC1(82.57002)
+WATC1(1306.57002)
+WATQ1(1796.07002)
+WBA(1973.82002)
+WBRI1(1641.57002)
+WCGU1(1657.07002)
+WCLN2(1851.57002)
+WCWO3(898.32002)
+WDEC1(311.07002)
+WEAC1(975.07002)
+WEDC1(96.07002)
+WEEC1(1230.32002)
+WEFI1(1396.07002)
+WEHC1(561.32002)
+WEIN2(718.07002)
+WESC1(304.82002)
+WFHC1(1379.82002)
+WFSW1(162.32002)
+WGRM8(1333.82002)
+WGVN2(1532.82002)
+WGWC1(1031.82002)
+WHDI1(1700.82002)
+WHHM8(1656.57002)
+WHLA3(2070.82002)
+WHSW1(872.57002)
+WHTW1(1465.07002)
+WIKA3(983.57002)
+WIMQ1(946.07002)
+WIWO3(1423.07002)
+WJF(753.32002)
+WKFO3(320.57002)
+WKPA3(735.07002)
+WLBC1(1010.07002)
+WLCI1(2005.57002)
+WLDN2(896.82002)
+WLFQ2(990.32002)
+WLKC1(-0.67998)
+WLLM8(1381.32002)
+WLLO3(959.57002)
+WLMO3(741.07002)
+WLYC1(442.57002)
+WMC(1532.82002)
+WMFO3(1044.32002)
+WMSC1(856.82002)
+WNDN2(831.07002)
+WODI1(1614.07002)
+WODM8(1915.07002)
+WPKO3(770.32002)
+WPOC1(344.57002)
+WPRW1(680.82002)
+WRIC1(1347.82002)
+WRKC1(1359.82002)
+WRMM8(2064.07002)
+WRNQ1(936.32002)
+WRPM8(1427.57002)
+WRRC1(320.07002)
+WRRU1(1359.32002)
+WRSC1(450.82002)
+WRSM8(2222.07002)
+WRTN2(994.57002)
+WSBO3(539.57002)
+WSDC1(377.07002)
+WSFM8(1925.32002)
+WSFO3(1102.57002)
+WSHC1(2118.57002)
+WSJN2(926.32002)
+WSPC1(512.57002)
+WSRO3(737.57002)
+WSTQ1(1803.32002)
+WTFO3(1462.57002)
+WTHC1(145.82002)
+WTPC1(898.82002)
+WTRC1(124.82002)
+WTSO3(300.07002)
+WUPA3(983.57002)
+WVAA3(1488.82002)
+WVI(149.32002)
+WVTC1(2063.57002)
+WWAC1(1016.07002)
+WWDC1(1636.07002)
+WWNC1(1729.32002)
+WWRC1(1995.07002)
+WYDW1(389.07002)
+WYTC1(733.32002)
+XXXC1(2379.07002)
+YALW1(434.07002)
+YBCA3(1672.57002)
+YBGA3(1672.57002)
+YBLC1(216.07002)
+YCGN2(1345.57002)
+YCPA3(1379.07002)
+YCPC1(1335.32002)
+YCVA3(1535.07002)
+YCWA3(1659.07002)
+YEFO3(695.32002)
+YFCA3(1672.57002)
+YFFI1(2410.82002)
+YKA(844.07002)
+YKAM8(1409.57002)
+YKM(409.82002)
+YLCA3(1659.07002)
+YLPO3(1514.57002)
+YMNA3(1403.57002)
+YNFO3(273.32002)
+YOBC1(1198.07002)
+YPWA3(1651.32002)
+YRKC1(404.07002)
+YRV(1352.82002)
+YSAC1(999.82002)
+YSMA3(1672.57002)
+YSUA3(1897.32002)
+YTBA3(1672.57002)
+YTPA3(1672.57002)
+YUCA3(879.57002)
+YUGA3(1672.57002)
+YVR(1.82002)
+YVVC1(1453.82002)
+YWAC1(1729.32002)
+YWPA3(1640.82002)
+YWSA3(1672.57002)
+YXC(1142.07002)
+YXX(60.07002)
+YYC(1065.07002)
+YYF(1119.82002)
+YYVC1(2450.32002)
+ZBHA3(806.07002)
+ZENC1(753.82002)
+ZFWA3(744.82002)
+ZIOU1(1600.57002)
+ZONM8(1151.82002)
diff --git a/internal/test_unit/config/SID_CONUS_ADPUPA_ELEV.txt b/internal/test_unit/config/SID_CONUS_ADPUPA_ELEV.txt
new file mode 100644
index 0000000000..42eb4fd1fb
--- /dev/null
+++ b/internal/test_unit/config/SID_CONUS_ADPUPA_ELEV.txt
@@ -0,0 +1,98 @@
+SID_CONUS_ADPUPA_ELEV
+72206(4.07002)
+72520(316.07002)
+72597(531.82002)
+72518(137.82002)
+71600(0.070023)
+71722(214.57002)
+72764(541.57002)
+71836(14.82002)
+71908(729.57002)
+71867(261.32002)
+71913(0.070023)
+71945(374.82002)
+72250(4.82002)
+72208(6.07002)
+72632(307.07002)
+74001(204.32002)
+72403(115.82002)
+72572(1486.57002)
+72662(1025.82002)
+72712(182.82002)
+71845(355.57002)
+76644(8.82002)
+76595(2.32002)
+72201(0.070023)
+76225(1572.07002)
+72230(169.57002)
+72388(926.32002)
+72318(640.32002)
+72440(374.32002)
+72528(201.82002)
+72645(222.57002)
+72776(1057.82002)
+71934(220.07002)
+72393(57.32002)
+72305(2.82002)
+72493(131.32002)
+72456(300.32002)
+72476(1638.57002)
+72426(308.57002)
+72501(17.57002)
+72649(277.57002)
+72786(670.57002)
+72261(324.32002)
+72364(1244.82002)
+72340(103.57002)
+72317(251.07002)
+72451(770.32002)
+74002(12.32002)
+72562(887.82002)
+72681(970.57002)
+72694(66.57002)
+72634(400.57002)
+76743(12.82002)
+72558(363.07002)
+72797(79.82002)
+71203(868.57002)
+70398(22.57002)
+78073(0.070023)
+72210(3.82002)
+72251(12.57002)
+72240(2.07002)
+72265(855.82002)
+72327(169.82002)
+72768(688.07002)
+74455(210.82002)
+71603(11.57002)
+72659(395.82002)
+71811(3.07002)
+71816(74.82002)
+76458(12.82002)
+72202(1.57002)
+72274(883.32002)
+72235(103.07002)
+78016(0.070023)
+72402(3.32002)
+71815(38.57002)
+72747(346.82002)
+71119(718.57002)
+78526(42.07002)
+72248(60.82002)
+72215(263.32002)
+72357(359.82002)
+74560(189.07002)
+74494(1.82002)
+74389(77.32002)
+71906(62.82002)
+ASDE04(0.070023)
+76394(433.07002)
+72233(7.07002)
+72214(25.82002)
+72249(190.57002)
+72293(76.82002)
+74004(136.07002)
+72363(1078.82002)
+71109(97.82002)
+71823(334.57002)
+71907(5.32002)
diff --git a/internal/test_unit/config/ref_config/GridStatConfig_03h b/internal/test_unit/config/ref_config/GridStatConfig_03h
index 0a3daba7a1..278acf3be0 100644
--- a/internal/test_unit/config/ref_config/GridStatConfig_03h
+++ b/internal/test_unit/config/ref_config/GridStatConfig_03h
@@ -198,8 +198,9 @@ nc_pairs_flag = FALSE;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${MODEL}_F${FCST_TIME}_03h";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${MODEL}_F${FCST_TIME}_03h";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/ref_config/GridStatConfig_24h b/internal/test_unit/config/ref_config/GridStatConfig_24h
index 8804e2d708..2d0c263303 100644
--- a/internal/test_unit/config/ref_config/GridStatConfig_24h
+++ b/internal/test_unit/config/ref_config/GridStatConfig_24h
@@ -198,8 +198,9 @@ nc_pairs_flag = FALSE;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "${MODEL}_F${FCST_TIME}_24h";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "${MODEL}_F${FCST_TIME}_24h";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA b/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA
index 226be944df..2d98af4d87 100644
--- a/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA
+++ b/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA
@@ -182,8 +182,11 @@ output_flag = {
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${MODEL}_F${FCST_TIME}_ADPUPA";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${MODEL}_F${FCST_TIME}_ADPUPA";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF b/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF
index 9667c95b10..3f8a2a6367 100644
--- a/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF
+++ b/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF
@@ -192,8 +192,11 @@ output_flag = {
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${MODEL}_F${FCST_TIME}_ONLYSF";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${MODEL}_F${FCST_TIME}_ONLYSF";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/ref_config/PointStatConfig_WINDS b/internal/test_unit/config/ref_config/PointStatConfig_WINDS
index 87fe9c01bd..ffb0a2f06f 100644
--- a/internal/test_unit/config/ref_config/PointStatConfig_WINDS
+++ b/internal/test_unit/config/ref_config/PointStatConfig_WINDS
@@ -175,8 +175,11 @@ output_flag = {
duplicate_flag = NONE;
rank_corr_flag = FALSE;
-tmp_dir = "/tmp";
-output_prefix = "${MODEL}_F${FCST_TIME}_WINDS";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "${MODEL}_F${FCST_TIME}_WINDS";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/t b/internal/test_unit/t
deleted file mode 100755
index 8df021c329..0000000000
--- a/internal/test_unit/t
+++ /dev/null
@@ -1,114 +0,0 @@
-export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410'
-export 'DESC=NO_WEIGHT'
-export 'GRID_WEIGHT=NONE'
-export 'OUTPUT_PREFIX=NO_WEIGHT'
-/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/grid_stat \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfs/gfs_2012040900_F024.grib2 \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfsanl/gfsanl_4_20120410_0000_000.grb2 \
- /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/GridStatConfig_grid_weight \
- -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1
-unset CLIMO_MEAN_FILE
-unset DESC
-unset GRID_WEIGHT
-unset OUTPUT_PREFIX
-
-
-export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410'
-export 'DESC=COS_LAT_WEIGHT'
-export 'GRID_WEIGHT=COS_LAT'
-export 'OUTPUT_PREFIX=COS_LAT_WEIGHT'
-/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/grid_stat \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfs/gfs_2012040900_F024.grib2 \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfsanl/gfsanl_4_20120410_0000_000.grb2 \
- /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/GridStatConfig_grid_weight \
- -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1
-unset CLIMO_MEAN_FILE
-unset DESC
-unset GRID_WEIGHT
-unset OUTPUT_PREFIX
-
-
-export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410'
-export 'DESC=AREA_WEIGHT'
-export 'GRID_WEIGHT=AREA'
-export 'OUTPUT_PREFIX=AREA_WEIGHT'
-/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/grid_stat \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfs/gfs_2012040900_F024.grib2 \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib2/gfsanl/gfsanl_4_20120410_0000_000.grb2 \
- /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/GridStatConfig_grid_weight \
- -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1
-unset CLIMO_MEAN_FILE
-unset DESC
-unset GRID_WEIGHT
-unset OUTPUT_PREFIX
-
-
-export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410'
-export 'CLIMO_STDEV_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cstdv_1d.19790410'
-export 'DESC=NO_WEIGHT'
-export 'GRID_WEIGHT=NONE'
-export 'OUTPUT_PREFIX=NO_WEIGHT'
-/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/ensemble_stat \
- 6 \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \
- /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/EnsembleStatConfig_grid_weight \
- -grid_obs /d1/projects/MET/MET_test_data/unit_test/obs_data/laps/laps_2012041012_F000.grib \
- -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1
-unset CLIMO_MEAN_FILE
-unset CLIMO_STDEV_FILE
-unset DESC
-unset GRID_WEIGHT
-unset OUTPUT_PREFIX
-
-
-export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410'
-export 'CLIMO_STDEV_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cstdv_1d.19790410'
-export 'DESC=COS_LAT_WEIGHT'
-export 'GRID_WEIGHT=COS_LAT'
-export 'OUTPUT_PREFIX=COS_LAT_WEIGHT'
-/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/ensemble_stat \
- 6 \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \
- /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/EnsembleStatConfig_grid_weight \
- -grid_obs /d1/projects/MET/MET_test_data/unit_test/obs_data/laps/laps_2012041012_F000.grib \
- -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1
-unset CLIMO_MEAN_FILE
-unset CLIMO_STDEV_FILE
-unset DESC
-unset GRID_WEIGHT
-unset OUTPUT_PREFIX
-
-
-export 'CLIMO_MEAN_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cmean_1d.19790410'
-export 'CLIMO_STDEV_FILE=${MET_TEST_INPUT}/climatology_data/NCEP_1.0deg/cstdv_1d.19790410'
-export 'DESC=AREA_WEIGHT'
-export 'GRID_WEIGHT=AREA'
-export 'OUTPUT_PREFIX=AREA_WEIGHT'
-/d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../share/met/../../bin/ensemble_stat \
- 6 \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \
- /d1/projects/MET/MET_test_data/unit_test/model_data/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \
- /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/config/EnsembleStatConfig_grid_weight \
- -grid_obs /d1/projects/MET/MET_test_data/unit_test/obs_data/laps/laps_2012041012_F000.grib \
- -outdir /d1/personal/johnhg/MET/MET_development/MET-feature_2887_categorical_weights/internal/test_unit/../../test_output/grid_weight -v 1
-unset CLIMO_MEAN_FILE
-unset CLIMO_STDEV_FILE
-unset DESC
-unset GRID_WEIGHT
-unset OUTPUT_PREFIX
-
-
diff --git a/internal/test_unit/xml/unit_point_weight.xml b/internal/test_unit/xml/unit_point_weight.xml
new file mode 100644
index 0000000000..b034b54a3a
--- /dev/null
+++ b/internal/test_unit/xml/unit_point_weight.xml
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+ &TEST_DIR;
+ true
+
+
+ &MET_BIN;/point_stat
+
+ OUTPUT_PREFIX NO_WEIGHT
+ DESC NO_WEIGHT
+ POINT_WEIGHT NONE
+ CONFIG_DIR &CONFIG_DIR;
+
+ \
+ &DATA_DIR_MODEL;/grib2/sref_mn/sref_mean_2012040821_F015.grib2 \
+ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \
+ &CONFIG_DIR;/PointStatConfig_point_weight \
+ -outdir &OUTPUT_DIR;/point_weight -v 1
+
+
+
+
+
+ &MET_BIN;/point_stat
+
+ OUTPUT_PREFIX SID_WEIGHT
+ DESC SID_WEIGHT
+ POINT_WEIGHT SID
+ CONFIG_DIR &CONFIG_DIR;
+
+ \
+ &DATA_DIR_MODEL;/grib2/sref_mn/sref_mean_2012040821_F015.grib2 \
+ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \
+ &CONFIG_DIR;/PointStatConfig_point_weight \
+ -outdir &OUTPUT_DIR;/point_weight -v 1
+
+
+
+
+
+ &MET_BIN;/point_stat
+
+ OUTPUT_PREFIX PROB_NO_WEIGHT
+ DESC NO_WEIGHT
+ POINT_WEIGHT NONE
+ CONFIG_DIR &CONFIG_DIR;
+
+ \
+ &DATA_DIR_MODEL;/grib2/sref_pr/sref_prob_2012040821_F015.grib2 \
+ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \
+ &CONFIG_DIR;/PointStatConfig_prob_point_weight \
+ -outdir &OUTPUT_DIR;/point_weight -v 1
+
+
+
+
+
+ &MET_BIN;/point_stat
+
+ OUTPUT_PREFIX PROB_SID_WEIGHT
+ DESC SID_WEIGHT
+ POINT_WEIGHT SID
+ CONFIG_DIR &CONFIG_DIR;
+
+ \
+ &DATA_DIR_MODEL;/grib2/sref_pr/sref_prob_2012040821_F015.grib2 \
+ &OUTPUT_DIR;/pb2nc/gdas1.20120409.t12z.prepbufr.nc \
+ &CONFIG_DIR;/PointStatConfig_prob_point_weight \
+ -outdir &OUTPUT_DIR;/point_weight -v 1
+
+
+
+
+
+ &MET_BIN;/ensemble_stat
+
+ OUTPUT_PREFIX NO_WEIGHT
+ DESC NO_WEIGHT
+ POINT_WEIGHT NONE
+ CONFIG_DIR &CONFIG_DIR;
+
+ \
+ 6 \
+ &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \
+ &CONFIG_DIR;/EnsembleStatConfig_point_weight \
+ -point_obs &OUTPUT_DIR;/ascii2nc/gauge_2012041012_24hr.nc \
+ -outdir &OUTPUT_DIR;/point_weight -v 1
+
+
+
+
+
+ &MET_BIN;/ensemble_stat
+
+ OUTPUT_PREFIX SID_WEIGHT
+ DESC SID_WEIGHT
+ POINT_WEIGHT SID
+ CONFIG_DIR &CONFIG_DIR;
+
+ \
+ 6 \
+ &DATA_DIR_MODEL;/grib1/arw-fer-gep1/arw-fer-gep1_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-fer-gep5/arw-fer-gep5_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-sch-gep2/arw-sch-gep2_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-sch-gep6/arw-sch-gep6_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-tom-gep3/arw-tom-gep3_2012040912_F024.grib \
+ &DATA_DIR_MODEL;/grib1/arw-tom-gep7/arw-tom-gep7_2012040912_F024.grib \
+ &CONFIG_DIR;/EnsembleStatConfig_point_weight \
+ -point_obs &OUTPUT_DIR;/ascii2nc/gauge_2012041012_24hr.nc \
+ -outdir &OUTPUT_DIR;/point_weight -v 1
+
+
+
+
+
+
diff --git a/scripts/config/EnsembleStatConfig b/scripts/config/EnsembleStatConfig
index bc84b81d8e..9071cf77e4 100644
--- a/scripts/config/EnsembleStatConfig
+++ b/scripts/config/EnsembleStatConfig
@@ -272,8 +272,10 @@ rng = {
////////////////////////////////////////////////////////////////////////////////
-grid_weight_flag = NONE;
-output_prefix = "";
-version = "V12.0.0";
+grid_weight_flag = NONE;
+point_weight_flag = NONE;
+
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/scripts/config/GridStatConfig_APCP_12 b/scripts/config/GridStatConfig_APCP_12
index 2358000a81..3cbc179064 100644
--- a/scripts/config/GridStatConfig_APCP_12
+++ b/scripts/config/GridStatConfig_APCP_12
@@ -217,8 +217,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "APCP_12";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "APCP_12";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/scripts/config/GridStatConfig_APCP_24 b/scripts/config/GridStatConfig_APCP_24
index 39eaa7d220..383efc78c5 100644
--- a/scripts/config/GridStatConfig_APCP_24
+++ b/scripts/config/GridStatConfig_APCP_24
@@ -227,8 +227,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "APCP_24";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "APCP_24";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/scripts/config/GridStatConfig_POP_12 b/scripts/config/GridStatConfig_POP_12
index 6fb4775939..974a3a79b7 100644
--- a/scripts/config/GridStatConfig_POP_12
+++ b/scripts/config/GridStatConfig_POP_12
@@ -226,8 +226,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "POP_12";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "POP_12";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/scripts/config/GridStatConfig_all b/scripts/config/GridStatConfig_all
index a165ef836d..f39e7e90cf 100644
--- a/scripts/config/GridStatConfig_all
+++ b/scripts/config/GridStatConfig_all
@@ -257,8 +257,9 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
grid_weight_flag = NONE;
-tmp_dir = "/tmp";
-output_prefix = "";
-version = "V12.0.0";
+
+tmp_dir = "/tmp";
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/scripts/config/PointStatConfig b/scripts/config/PointStatConfig
index 3c79f15262..1f4140de1e 100644
--- a/scripts/config/PointStatConfig
+++ b/scripts/config/PointStatConfig
@@ -216,8 +216,11 @@ seeps_p1_thresh = NA;
////////////////////////////////////////////////////////////////////////////////
rank_corr_flag = TRUE;
-tmp_dir = "/tmp";
-output_prefix = "";
-version = "V12.0.0";
+
+point_weight_flag = NONE;
+
+tmp_dir = "/tmp";
+output_prefix = "";
+version = "V12.0.0";
////////////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_config/config_constants.h b/src/basic/vx_config/config_constants.h
index 7bba9e759e..12f4b2025b 100644
--- a/src/basic/vx_config/config_constants.h
+++ b/src/basic/vx_config/config_constants.h
@@ -462,6 +462,17 @@ enum class GridWeightType {
////////////////////////////////////////////////////////////////////////
+//
+// Enumeration for point_weight_flag configuration parameter
+//
+
+enum class PointWeightType {
+ None, // Apply no point weighting
+ SID // Apply station ID weighting
+};
+
+////////////////////////////////////////////////////////////////////////
+
//
// Enumeration for grid_decomp_flag configuration parameter
//
@@ -753,6 +764,7 @@ static const char conf_key_topo_mask[] = "topo_mask";
static const char conf_key_topo_mask_flag[] = "topo_mask.flag";
static const char conf_key_use_obs_thresh[] = "use_obs_thresh";
static const char conf_key_interp_fcst_thresh[] = "interp_fcst_thresh";
+static const char conf_key_point_weight_flag[] = "point_weight_flag";
//
// Grid-Stat specific parameter key names
@@ -1300,6 +1312,9 @@ static const char conf_val_bca[] = "BCA";
static const char conf_val_cos_lat[] = "COS_LAT";
static const char conf_val_area[] = "AREA";
+// Point weight flag values
+static const char conf_val_sid[] = "SID";
+
// Duplicate flag values
static const char conf_val_unique[] = "UNIQUE";
diff --git a/src/basic/vx_config/config_util.cc b/src/basic/vx_config/config_util.cc
index 5cce67dfcb..a4323a23b1 100644
--- a/src/basic/vx_config/config_util.cc
+++ b/src/basic/vx_config/config_util.cc
@@ -600,16 +600,14 @@ StringArray parse_conf_message_type(Dictionary *dict, bool error_out) {
///////////////////////////////////////////////////////////////////////////////
StringArray parse_conf_sid_list(Dictionary *dict, const char *conf_key) {
- StringArray sa, cur, sid_sa;
- ConcatString mask_name;
+ StringArray sid_sa;
const char *method_name = "parse_conf_sid_list() -> ";
- sa = parse_conf_string_array(dict, conf_key, method_name);
+ StringArray sa(parse_conf_string_array(dict, conf_key, method_name));
- // Parse station ID's to exclude from each entry
+ // Append to the list of station ID's
for(int i=0; i ";
// Check for an empty length string
- if(mask_sid_str.empty()) return;
+ if(mask_sid_str.empty()) return mask_sid;
// Replace any instances of MET_BASE with it's expanded value
- tmp_file = replace_path(mask_sid_str.c_str());
+ ConcatString tmp_file(replace_path(mask_sid_str.c_str()));
// Process file name
if(file_exists(tmp_file.c_str())) {
- mlog << Debug(4) << "parse_sid_mask() -> "
+ mlog << Debug(4) << method_name
<< "parsing station ID masking file \"" << tmp_file << "\"\n";
// Open the mask station id file specified
+ ifstream in;
in.open(tmp_file.c_str());
if(!in) {
- mlog << Error << "\nparse_sid_mask() -> "
+ mlog << Error << "\n" << method_name
<< "Can't open the station ID masking file \""
<< tmp_file << "\".\n\n";
exit(1);
@@ -665,7 +659,7 @@ void parse_sid_mask(const ConcatString &mask_sid_str,
// Store the first entry as the name of the mask
in >> sid_str;
- mask_name = sid_str;
+ mask_sid.set_name(sid_str);
// Store the rest of the entries as masking station ID's
while(in >> sid_str) mask_sid.add(sid_str.c_str());
@@ -673,9 +667,9 @@ void parse_sid_mask(const ConcatString &mask_sid_str,
// Close the input file
in.close();
- mlog << Debug(4) << "parse_sid_mask() -> "
+ mlog << Debug(4) << method_name
<< "parsed " << mask_sid.n() << " station ID's for the \""
- << mask_name << "\" mask from file \"" << tmp_file << "\"\n";
+ << mask_sid.name() << "\" mask from file \"" << tmp_file << "\"\n";
}
// Process list of strings
else {
@@ -683,19 +677,19 @@ void parse_sid_mask(const ConcatString &mask_sid_str,
// Print a warning if the string contains a dot which suggests
// the user was trying to specify a file name.
if(check_reg_exp("[.]", mask_sid_str.c_str())) {
- mlog << Warning << "\nparse_sid_mask() -> "
+ mlog << Warning << "\n" << method_name
<< "unable to process \"" << mask_sid_str
<< "\" as a file name and processing it as a single "
<< "station ID mask instead.\n\n";
}
- mlog << Debug(4) << "parse_sid_mask() -> "
+ mlog << Debug(4) << method_name
<< "storing single station ID mask \"" << mask_sid_str << "\"\n";
// Check for embedded whitespace or slashes
if(check_reg_exp(ws_reg_exp, mask_sid_str.c_str()) ||
check_reg_exp("[/]", mask_sid_str.c_str())) {
- mlog << Error << "\nparse_sid_mask() -> "
+ mlog << Error << "\n" << method_name
<< "masking station ID string can't contain whitespace or "
<< "slashes \"" << mask_sid_str << "\".\n\n";
exit(1);
@@ -708,15 +702,16 @@ void parse_sid_mask(const ConcatString &mask_sid_str,
// One elements means no colon was specified
if(sa.n() == 1) {
mask_sid.add_css(sa[0]);
- mask_name = ( mask_sid.n() == 1 ? mask_sid[0] : "MASK_SID" );
+ mask_sid.set_name((mask_sid.n() == 1 ?
+ mask_sid.sid_map().begin()->first : "MASK_SID"));
}
// Two elements means one colon was specified
else if(sa.n() == 2) {
- mask_name = sa[0];
mask_sid.add_css(sa[1]);
+ mask_sid.set_name(sa[0]);
}
else {
- mlog << Error << "\nparse_sid_mask() -> "
+ mlog << Error << "\n" << method_name
<< "masking station ID string may contain at most one colon to "
<< "specify the mask name \"" << mask_sid_str << "\".\n\n";
exit(1);
@@ -724,14 +719,26 @@ void parse_sid_mask(const ConcatString &mask_sid_str,
}
- // Sort the mask_sid's
- mask_sid.sort();
-
- return;
+ return mask_sid;
}
///////////////////////////////////////////////////////////////////////////////
+StringArray parse_sid_mask_as_list(const ConcatString &mask_sid_str) {
+
+ MaskSID ms = parse_sid_mask(mask_sid_str);
+
+ StringArray sa;
+ for(const auto &pair : ms.sid_map()) sa.add(pair.first);
+
+ return sa;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Code for MaskLatLon struct
+//
+///////////////////////////////////////////////////////////////////////////////
void MaskLatLon::clear() {
name.clear();
@@ -764,7 +771,6 @@ MaskLatLon &MaskLatLon::operator=(const MaskLatLon &a) noexcept {
return *this;
}
-
///////////////////////////////////////////////////////////////////////////////
vector parse_conf_llpnt_mask(Dictionary *dict) {
@@ -2189,9 +2195,10 @@ HiRAInfo parse_conf_hira(Dictionary *dict) {
GridWeightType parse_conf_grid_weight_flag(Dictionary *dict) {
GridWeightType t = GridWeightType::None;
int v;
+ const char *method_name = "parse_conf_grid_weight_flag() -> ";
if(!dict) {
- mlog << Error << "\nparse_conf_grid_weight_flag() -> "
+ mlog << Error << "\n" << method_name
<< "empty dictionary!\n\n";
exit(1);
}
@@ -2204,7 +2211,7 @@ GridWeightType parse_conf_grid_weight_flag(Dictionary *dict) {
else if(v == conf_const.lookup_int(conf_val_cos_lat)) t = GridWeightType::Cos_Lat;
else if(v == conf_const.lookup_int(conf_val_area)) t = GridWeightType::Area;
else {
- mlog << Error << "\nparse_conf_grid_weight_flag() -> "
+ mlog << Error << "\n" << method_name
<< "Unexpected config file value of " << v << " for \""
<< conf_key_grid_weight_flag << "\".\n\n";
exit(1);
@@ -2215,6 +2222,35 @@ GridWeightType parse_conf_grid_weight_flag(Dictionary *dict) {
///////////////////////////////////////////////////////////////////////////////
+PointWeightType parse_conf_point_weight_flag(Dictionary *dict) {
+ PointWeightType t = PointWeightType::None;
+ int v;
+ const char *method_name = "parse_conf_point_weight_flag() -> ";
+
+ if(!dict) {
+ mlog << Error << "\n" << method_name
+ << "empty dictionary!\n\n";
+ exit(1);
+ }
+
+ // Get the integer flag value for the current entry
+ v = dict->lookup_int(conf_key_point_weight_flag);
+
+ // Convert integer to enumerated GridWeightType
+ if(v == conf_const.lookup_int(conf_val_none)) t = PointWeightType::None;
+ else if(v == conf_const.lookup_int(conf_val_sid)) t = PointWeightType::SID;
+ else {
+ mlog << Error << "\n" << method_name
+ << "Unexpected config file value of " << v << " for \""
+ << conf_key_point_weight_flag << "\".\n\n";
+ exit(1);
+ }
+
+ return t;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
DuplicateType parse_conf_duplicate_flag(Dictionary *dict) {
DuplicateType t = DuplicateType::None;
int v;
diff --git a/src/basic/vx_config/config_util.h b/src/basic/vx_config/config_util.h
index 15de1e00f0..885fa6fb2e 100644
--- a/src/basic/vx_config/config_util.h
+++ b/src/basic/vx_config/config_util.h
@@ -55,10 +55,8 @@ extern StringArray parse_conf_message_type(
extern StringArray parse_conf_sid_list(
Dictionary *dict,
const char *);
-extern void parse_sid_mask(
- const ConcatString &,
- StringArray &,
- ConcatString &);
+extern MaskSID parse_sid_mask(const ConcatString &);
+extern StringArray parse_sid_mask_as_list(const ConcatString &);
extern std::vector
parse_conf_llpnt_mask(Dictionary *dict);
extern StringArray parse_conf_obs_qty_inc(Dictionary *dict);
@@ -105,6 +103,7 @@ extern InterpInfo parse_conf_interp(Dictionary *dict, const char *);
extern NbrhdInfo parse_conf_nbrhd(Dictionary *dict, const char *);
extern HiRAInfo parse_conf_hira(Dictionary *dict);
extern GridWeightType parse_conf_grid_weight_flag(Dictionary *dict);
+extern PointWeightType parse_conf_point_weight_flag(Dictionary *dict);
extern DuplicateType parse_conf_duplicate_flag(Dictionary *dict);
extern ObsSummary parse_conf_obs_summary(Dictionary *dict);
extern ConcatString parse_conf_tmp_dir(Dictionary *dict);
diff --git a/src/basic/vx_util/Makefile.am b/src/basic/vx_util/Makefile.am
index b0daa451e9..db0896bbd6 100644
--- a/src/basic/vx_util/Makefile.am
+++ b/src/basic/vx_util/Makefile.am
@@ -61,6 +61,7 @@ libvx_util_a_SOURCES = ascii_table.cc ascii_table.h \
empty_string.h \
polyline.h polyline.cc \
mask_poly.h mask_poly.cc \
+ mask_sid.h mask_sid.cc \
read_fortran_binary.h read_fortran_binary.cc \
met_buffer.h met_buffer.cc \
smart_buffer.h smart_buffer.cc \
diff --git a/src/basic/vx_util/Makefile.in b/src/basic/vx_util/Makefile.in
index 4c05def519..2a7015be79 100644
--- a/src/basic/vx_util/Makefile.in
+++ b/src/basic/vx_util/Makefile.in
@@ -129,13 +129,14 @@ am__libvx_util_a_SOURCES_DIST = ascii_table.cc ascii_table.h \
interp_util.h two_to_one.cc two_to_one.h get_filenames.cc \
get_filenames.h util_constants.h bool_to_string.h \
empty_string.h polyline.h polyline.cc mask_poly.h mask_poly.cc \
- read_fortran_binary.h read_fortran_binary.cc met_buffer.h \
- met_buffer.cc smart_buffer.h smart_buffer.cc vx_util.h \
- CircularTemplate.h CircularTemplate.cc GridTemplate.h \
- GridTemplate.cc GridPoint.h GridPoint.cc GridOffset.h \
- GridOffset.cc observation.h observation.cc stat_column_defs.h \
- handle_openmp.h handle_openmp.cc RectangularTemplate.h \
- RectangularTemplate.cc python_line.h python_line.cc
+ mask_sid.h mask_sid.cc read_fortran_binary.h \
+ read_fortran_binary.cc met_buffer.h met_buffer.cc \
+ smart_buffer.h smart_buffer.cc vx_util.h CircularTemplate.h \
+ CircularTemplate.cc GridTemplate.h GridTemplate.cc GridPoint.h \
+ GridPoint.cc GridOffset.h GridOffset.cc observation.h \
+ observation.cc stat_column_defs.h handle_openmp.h \
+ handle_openmp.cc RectangularTemplate.h RectangularTemplate.cc \
+ python_line.h python_line.cc
@ENABLE_PYTHON_TRUE@am__objects_1 = \
@ENABLE_PYTHON_TRUE@ libvx_util_a-python_line.$(OBJEXT)
am__objects_2 = $(am__objects_1)
@@ -172,6 +173,7 @@ am_libvx_util_a_OBJECTS = libvx_util_a-ascii_table.$(OBJEXT) \
libvx_util_a-get_filenames.$(OBJEXT) \
libvx_util_a-polyline.$(OBJEXT) \
libvx_util_a-mask_poly.$(OBJEXT) \
+ libvx_util_a-mask_sid.$(OBJEXT) \
libvx_util_a-read_fortran_binary.$(OBJEXT) \
libvx_util_a-met_buffer.$(OBJEXT) \
libvx_util_a-smart_buffer.$(OBJEXT) \
@@ -230,6 +232,7 @@ am__depfiles_remade = ./$(DEPDIR)/libvx_util_a-CircularTemplate.Po \
./$(DEPDIR)/libvx_util_a-main.Po \
./$(DEPDIR)/libvx_util_a-make_path.Po \
./$(DEPDIR)/libvx_util_a-mask_poly.Po \
+ ./$(DEPDIR)/libvx_util_a-mask_sid.Po \
./$(DEPDIR)/libvx_util_a-memory.Po \
./$(DEPDIR)/libvx_util_a-met_buffer.Po \
./$(DEPDIR)/libvx_util_a-normalize.Po \
@@ -508,6 +511,7 @@ libvx_util_a_SOURCES = ascii_table.cc ascii_table.h \
empty_string.h \
polyline.h polyline.cc \
mask_poly.h mask_poly.cc \
+ mask_sid.h mask_sid.cc \
read_fortran_binary.h read_fortran_binary.cc \
met_buffer.h met_buffer.cc \
smart_buffer.h smart_buffer.cc \
@@ -602,6 +606,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-main.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-make_path.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-mask_poly.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-mask_sid.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-memory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-met_buffer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_util_a-normalize.Po@am__quote@ # am--include-marker
@@ -1128,6 +1133,20 @@ libvx_util_a-mask_poly.obj: mask_poly.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_util_a-mask_poly.obj `if test -f 'mask_poly.cc'; then $(CYGPATH_W) 'mask_poly.cc'; else $(CYGPATH_W) '$(srcdir)/mask_poly.cc'; fi`
+libvx_util_a-mask_sid.o: mask_sid.cc
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_util_a-mask_sid.o -MD -MP -MF $(DEPDIR)/libvx_util_a-mask_sid.Tpo -c -o libvx_util_a-mask_sid.o `test -f 'mask_sid.cc' || echo '$(srcdir)/'`mask_sid.cc
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_util_a-mask_sid.Tpo $(DEPDIR)/libvx_util_a-mask_sid.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mask_sid.cc' object='libvx_util_a-mask_sid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_util_a-mask_sid.o `test -f 'mask_sid.cc' || echo '$(srcdir)/'`mask_sid.cc
+
+libvx_util_a-mask_sid.obj: mask_sid.cc
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_util_a-mask_sid.obj -MD -MP -MF $(DEPDIR)/libvx_util_a-mask_sid.Tpo -c -o libvx_util_a-mask_sid.obj `if test -f 'mask_sid.cc'; then $(CYGPATH_W) 'mask_sid.cc'; else $(CYGPATH_W) '$(srcdir)/mask_sid.cc'; fi`
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_util_a-mask_sid.Tpo $(DEPDIR)/libvx_util_a-mask_sid.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mask_sid.cc' object='libvx_util_a-mask_sid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_util_a-mask_sid.obj `if test -f 'mask_sid.cc'; then $(CYGPATH_W) 'mask_sid.cc'; else $(CYGPATH_W) '$(srcdir)/mask_sid.cc'; fi`
+
libvx_util_a-read_fortran_binary.o: read_fortran_binary.cc
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_util_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_util_a-read_fortran_binary.o -MD -MP -MF $(DEPDIR)/libvx_util_a-read_fortran_binary.Tpo -c -o libvx_util_a-read_fortran_binary.o `test -f 'read_fortran_binary.cc' || echo '$(srcdir)/'`read_fortran_binary.cc
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_util_a-read_fortran_binary.Tpo $(DEPDIR)/libvx_util_a-read_fortran_binary.Po
@@ -1440,6 +1459,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libvx_util_a-main.Po
-rm -f ./$(DEPDIR)/libvx_util_a-make_path.Po
-rm -f ./$(DEPDIR)/libvx_util_a-mask_poly.Po
+ -rm -f ./$(DEPDIR)/libvx_util_a-mask_sid.Po
-rm -f ./$(DEPDIR)/libvx_util_a-memory.Po
-rm -f ./$(DEPDIR)/libvx_util_a-met_buffer.Po
-rm -f ./$(DEPDIR)/libvx_util_a-normalize.Po
@@ -1531,6 +1551,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libvx_util_a-main.Po
-rm -f ./$(DEPDIR)/libvx_util_a-make_path.Po
-rm -f ./$(DEPDIR)/libvx_util_a-mask_poly.Po
+ -rm -f ./$(DEPDIR)/libvx_util_a-mask_sid.Po
-rm -f ./$(DEPDIR)/libvx_util_a-memory.Po
-rm -f ./$(DEPDIR)/libvx_util_a-met_buffer.Po
-rm -f ./$(DEPDIR)/libvx_util_a-normalize.Po
diff --git a/src/basic/vx_util/mask_sid.cc b/src/basic/vx_util/mask_sid.cc
new file mode 100644
index 0000000000..7c888bfda3
--- /dev/null
+++ b/src/basic/vx_util/mask_sid.cc
@@ -0,0 +1,161 @@
+// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
+// ** Copyright UCAR (c) 1992 - 2024
+// ** University Corporation for Atmospheric Research (UCAR)
+// ** National Center for Atmospheric Research (NCAR)
+// ** Research Applications Lab (RAL)
+// ** P.O.Box 3000, Boulder, Colorado, 80307-3000, USA
+// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
+
+///////////////////////////////////////////////////////////////////////////////
+
+#include "vx_util.h"
+
+#include "mask_sid.h"
+
+using namespace std;
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Code for MaskSID struct
+//
+///////////////////////////////////////////////////////////////////////////////
+
+MaskSID::MaskSID() {
+ init_from_scratch();
+}
+
+////////////////////////////////////////////////////////////////////////
+
+MaskSID::~MaskSID() {
+ clear();
+}
+
+////////////////////////////////////////////////////////////////////////
+
+MaskSID::MaskSID(const MaskSID &m) {
+
+ init_from_scratch();
+
+ assign(m);
+}
+
+////////////////////////////////////////////////////////////////////////
+
+MaskSID & MaskSID::operator=(const MaskSID &m) noexcept {
+
+ if(this == &m) return *this;
+
+ assign(m);
+
+ return *this;
+}
+
+////////////////////////////////////////////////////////////////////////
+
+void MaskSID::init_from_scratch() {
+
+ clear();
+
+ return;
+}
+
+////////////////////////////////////////////////////////////////////////
+
+void MaskSID::clear() {
+ Name.clear();
+ HasWeights = false;
+ SIDMap.clear();
+}
+
+////////////////////////////////////////////////////////////////////////
+
+void MaskSID::assign(const MaskSID & m) {
+ Name = m.Name;
+ HasWeights = m.HasWeights;
+ SIDMap = m.SIDMap;
+
+ return;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool MaskSID::operator==(const MaskSID &m) const {
+ bool match = true;
+
+ if(!(Name == m.Name ) ||
+ !(SIDMap == m.SIDMap)) {
+ match = false;
+ }
+
+ return match;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+const std::map & MaskSID::sid_map() const {
+ return SIDMap;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void MaskSID::set_name(const string &s) {
+ Name = s;
+
+ return;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void MaskSID::add(const string &text) {
+ ConcatString sid(text);
+
+ // Default weight value of 1.0
+ double weight = 1.0;
+
+ // Check for optional weight
+ StringArray sa(sid.split("("));
+ if(sa.n() > 1) {
+ sid = sa[0];
+ weight = stod(sa[1]);
+ HasWeights = true;
+ }
+
+ // Add station ID map entry
+ if(SIDMap.count(sid) == 0) SIDMap[sid] = weight;
+
+ return;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void MaskSID::add_css(const string &text) {
+ StringArray sa;
+ sa.add_css(text);
+ for(int i=0; i 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool MaskSID::has_sid(const string &s, double &weight) const {
+ bool found = false;
+
+ if(SIDMap.count(s) == 0) {
+ weight = bad_data_double;
+ }
+ else {
+ found = true;
+ weight = SIDMap.at(s);
+ }
+
+ return found;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
diff --git a/src/basic/vx_util/mask_sid.h b/src/basic/vx_util/mask_sid.h
new file mode 100644
index 0000000000..81b7071f37
--- /dev/null
+++ b/src/basic/vx_util/mask_sid.h
@@ -0,0 +1,71 @@
+// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
+// ** Copyright UCAR (c) 1992 - 2024
+// ** University Corporation for Atmospheric Research (UCAR)
+// ** National Center for Atmospheric Research (NCAR)
+// ** Research Applications Lab (RAL)
+// ** P.O.Box 3000, Boulder, Colorado, 80307-3000, USA
+// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
+////////////////////////////////////////////////////////////////////////
+
+#ifndef __MASK_SID_H__
+#define __MASK_SID_H__
+
+#include "vx_util.h"
+
+////////////////////////////////////////////////////////////////////////
+//
+// Class to store masking station id information
+//
+////////////////////////////////////////////////////////////////////////
+
+class MaskSID {
+
+ void init_from_scratch();
+
+ void assign(const MaskSID &);
+
+ // Mask name
+ ConcatString Name;
+
+ // Boolean for non-default weights
+ bool HasWeights;
+
+ // Mapping of SID name to weight value
+ std::map SIDMap;
+
+ public:
+
+ MaskSID();
+ ~MaskSID();
+ MaskSID(const MaskSID &);
+ MaskSID & operator=(const MaskSID &) noexcept;
+
+ void clear();
+ bool operator==(const MaskSID &) const;
+
+ int n() const;
+ std::string name() const;
+ bool has_weights() const;
+ const std::map & sid_map() const;
+
+ void set_name(const std::string &);
+
+ // Formatted as: station_name(numeric_weight)
+ void add(const std::string &);
+ void add_css(const std::string &);
+ bool has_sid(const std::string &) const ;
+ bool has_sid(const std::string &, double &) const;
+};
+
+////////////////////////////////////////////////////////////////////////
+
+inline int MaskSID::n() const { return (int) SIDMap.size(); }
+inline std::string MaskSID::name() const { return Name; }
+inline bool MaskSID::has_weights() const { return HasWeights; }
+
+////////////////////////////////////////////////////////////////////////
+
+#endif // __MASK_SID_H__
+
+////////////////////////////////////////////////////////////////////////
+
diff --git a/src/basic/vx_util/util_constants.h b/src/basic/vx_util/util_constants.h
index e2520efd18..c24ffdec88 100644
--- a/src/basic/vx_util/util_constants.h
+++ b/src/basic/vx_util/util_constants.h
@@ -102,7 +102,7 @@ static const int tmp_buf_size = 512;
static const double grib_earth_radius_km = 6371.20;
static const int default_nc_compression = 0;
static const int default_precision = 5;
-static const double default_grid_weight = 1.0;
+static const double default_weight = 1.0;
static const char default_tmp_dir[] = "/tmp";
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/vx_util.h b/src/basic/vx_util/vx_util.h
index ab8460b420..c396db1924 100644
--- a/src/basic/vx_util/vx_util.h
+++ b/src/basic/vx_util/vx_util.h
@@ -59,6 +59,7 @@
#include "empty_string.h"
#include "polyline.h"
#include "mask_poly.h"
+#include "mask_sid.h"
#include "read_fortran_binary.h"
#include "stat_column_defs.h"
diff --git a/src/libcode/vx_analysis_util/stat_job.cc b/src/libcode/vx_analysis_util/stat_job.cc
index c10f392b85..ef7d6827e8 100644
--- a/src/libcode/vx_analysis_util/stat_job.cc
+++ b/src/libcode/vx_analysis_util/stat_job.cc
@@ -1802,20 +1802,19 @@ void STATAnalysisJob::set_mask_sid(const char *c) {
if(!c) return;
- ConcatString mask_name;
-
mask_sid_str = c;
// List the station ID mask
mlog << Debug(1)
<< "Station ID Mask: " << mask_sid_str << "\n";
- parse_sid_mask(mask_sid_str, mask_sid, mask_name);
+ MaskSID ms = parse_sid_mask(mask_sid_str);
+ for(const auto &pair : ms.sid_map()) mask_sid.add(pair.first);
// List the length of the station ID mask
mlog << Debug(2)
- << "Parsed Station ID Mask: " << mask_name
- << " containing " << mask_sid.n() << " points\n";
+ << "Parsed Station ID Mask (" << ms.name()
+ << ") containing " << mask_sid.n() << " stations\n";
return;
}
diff --git a/src/libcode/vx_python3_utils/wchar_argv.cc b/src/libcode/vx_python3_utils/wchar_argv.cc
index a51eea0675..d60d9ab14d 100644
--- a/src/libcode/vx_python3_utils/wchar_argv.cc
+++ b/src/libcode/vx_python3_utils/wchar_argv.cc
@@ -13,11 +13,11 @@
////////////////////////////////////////////////////////////////////////
+#include
#include
#include
#include
#include
-#include
#include "wchar_argv.h"
#include "concat_string.h"
@@ -132,23 +132,21 @@ void Wchar_Argv::set(const StringArray & a)
{
-int j, k, N;
-int len;
char * s = nullptr;
char ** av = nullptr;
ConcatString c;
const char *method_name = "Wchar_Argv::set() -> ";
-len = 0;
+int len = 0;
-for (j=0; j<(a.n()); ++j) {
+for (int j=0; j<(a.n()); ++j) {
len += a.length(j);
}
-N = len + a.n();
+int N = len + a.n();
s = new char [N];
@@ -156,9 +154,9 @@ av = new char * [a.n()];
memset(s, 0, N);
-k = 0;
+int k = 0;
-for (j=0; j<(a.n()); ++j) {
+for (int j=0; j<(a.n()); ++j) {
av[j] = s + k;
@@ -196,8 +194,6 @@ void Wchar_Argv::set(int _argc, char ** _argv)
clear();
-int j, k;
-int argv_len;
int * len = nullptr;
@@ -210,9 +206,9 @@ len = new int [Argc];
// total length of the argument string ...
//
-argv_len = 0;
+int argv_len = 0;
-for (j=0; j<_argc; ++j) {
+for (int j=0; j<_argc; ++j) {
len[j] = m_strlen(_argv[j]); // we're using the len array here because
// we don't want to call m_strlen more than
@@ -235,7 +231,7 @@ for (j=0; j<_argc; ++j) {
W_Buf = new wchar_t [argv_len];
-for (j=0; j ";
+
+ if(!IsPointVx || wgt_flag == PointWeightType::None) return;
+
+ // Apply the SID point weight type
+ if(wgt_flag == PointWeightType::SID &&
+ mask_sid_ptr != nullptr) {
+
+ mlog << Debug(4)
+ << "Applying point weights for the \""
+ << mask_sid_ptr->name() << "\" station ID masking region.\n";
+
+ // Print warning if no weights are provided
+ if(!mask_sid_ptr->has_weights()) {
+ mlog << Warning << "\n" << method_name
+ << "station ID point weighting requested but no weights "
+ << "were defined in the \"" << mask_sid_ptr->name()
+ << "\" station ID mask. Using default weights of "
+ << default_weight << ".\n\n";
+ }
+
+ // Loop through the point observations
+ for(int i_obs=0; i_obshas_sid(sid_sa[i_obs], wgt)) {
+ wgt_na.set(i_obs, wgt);
+ }
+ else {
+ mlog << Warning << "\n" << method_name
+ << "no match found for station id: "
+ << sid_sa[i_obs] << "\n\n";
+ }
+ }
+ }
+
+ return;
+}
+
+////////////////////////////////////////////////////////////////////////
+
void PairBase::add_grid_obs(double o,
const ClimoPntInfo &cpi,
double wgt) {
@@ -1293,13 +1336,15 @@ void VxPairBase::set_mask_area(int i_mask, const char *name,
////////////////////////////////////////////////////////////////////////
void VxPairBase::set_mask_sid(int i_mask, const char *name,
- StringArray *sid_ptr) {
+ MaskSID *ms_ptr) {
+
+ if(!ms_ptr) return;
for(int i_msg_typ=0; i_msg_typset_mask_name(name);
- pb_ptr[n]->set_mask_sid_ptr(sid_ptr);
+ pb_ptr[n]->set_mask_sid_ptr(ms_ptr);
}
}
@@ -1511,6 +1556,20 @@ void VxPairBase::calc_obs_summary() {
////////////////////////////////////////////////////////////////////////
+void VxPairBase::set_point_weight(const PointWeightType wgt_flag) {
+
+ if(n_vx == 0) {
+ mlog << Warning << "\nVxPairBase::set_point_weight() -> "
+ << "set_size() has not been called yet!\n\n";
+ }
+
+ for(auto &x : pb_ptr) x->set_point_weight(wgt_flag);
+
+ return;
+}
+
+////////////////////////////////////////////////////////////////////////
+
bool VxPairBase::is_keeper_sid(
const char *pnt_obs_str, const char *hdr_sid_str) {
bool keep = true;
@@ -1864,7 +1923,7 @@ bool VxPairBase::is_keeper_mask(
}
// Otherwise, check for the masking SID list
else if( pb_ptr[n]->mask_sid_ptr != nullptr &&
- !pb_ptr[n]->mask_sid_ptr->has(hdr_sid_str)) {
+ !pb_ptr[n]->mask_sid_ptr->has_sid(hdr_sid_str)) {
if(mlog.verbosity_level() >= REJECT_DEBUG_LEVEL) {
mlog << Debug(REJECT_DEBUG_LEVEL)
diff --git a/src/libcode/vx_statistics/pair_base.h b/src/libcode/vx_statistics/pair_base.h
index af92385f5c..03b186a750 100644
--- a/src/libcode/vx_statistics/pair_base.h
+++ b/src/libcode/vx_statistics/pair_base.h
@@ -75,10 +75,10 @@ class PairBase {
//////////////////////////////////////////////////////////////////
// Masking area applied to the forecast and climo fields
- ConcatString mask_name;
+ ConcatString mask_name;
MaskPlane *mask_area_ptr; // Pointer to the masking MaskPlane
// which is not allocated
- StringArray *mask_sid_ptr; // Pointer to masking station ID list
+ MaskSID *mask_sid_ptr; // Pointer to masking station ID list
// which is not allocated
MaskLatLon *mask_llpnt_ptr; // Pointer to Lat/Lon thresholds
// which is not allocated
@@ -137,9 +137,9 @@ class PairBase {
bool is_point_vx() const;
- void set_mask_name(const char *);
+ void set_mask_name(const std::string &);
void set_mask_area_ptr(MaskPlane *);
- void set_mask_sid_ptr(StringArray *);
+ void set_mask_sid_ptr(MaskSID *);
void set_mask_llpnt_ptr(MaskLatLon *);
void set_climo_cdf_info_ptr(const ClimoCDFInfo *);
@@ -173,12 +173,14 @@ class PairBase {
const ClimoPntInfo &, double);
void set_point_obs(int, const char *, double, double, double, double,
- unixtime, double, double, double,
- const char *, const ClimoPntInfo &, double);
+ unixtime, double, double, double, const char *,
+ const ClimoPntInfo &, double);
- void add_grid_obs(double, const ClimoPntInfo &, double);
+ void add_grid_obs(double,
+ const ClimoPntInfo &, double);
- void add_grid_obs(double, double, double, const ClimoPntInfo &, double);
+ void add_grid_obs(double, double, double,
+ const ClimoPntInfo &, double);
void add_climo(double, const ClimoPntInfo &);
@@ -192,6 +194,7 @@ class PairBase {
void calc_obs_summary();
+ void set_point_weight(const PointWeightType);
};
////////////////////////////////////////////////////////////////////////
@@ -349,7 +352,7 @@ class VxPairBase {
void set_msg_typ(int, const char *);
void set_msg_typ_vals(int, const StringArray &);
void set_mask_area(int, const char *, MaskPlane *);
- void set_mask_sid(int, const char *, StringArray *);
+ void set_mask_sid(int, const char *, MaskSID *);
void set_mask_llpnt(int, const char *, MaskLatLon *);
void set_interp(int i_interp, const char *interp_mthd_str, int width,
@@ -375,6 +378,7 @@ class VxPairBase {
void print_obs_summary() const;
void calc_obs_summary();
+ void set_point_weight(const PointWeightType);
bool is_keeper_sid(const char *, const char *);
bool is_keeper_var(const char *, const char *, int);
diff --git a/src/libcode/vx_statistics/pair_data_ensemble.cc b/src/libcode/vx_statistics/pair_data_ensemble.cc
index af9f80de15..f4ccbe279e 100644
--- a/src/libcode/vx_statistics/pair_data_ensemble.cc
+++ b/src/libcode/vx_statistics/pair_data_ensemble.cc
@@ -1170,8 +1170,7 @@ void VxPairDataEnsemble::add_point_obs(float *hdr_arr, int *hdr_typ_arr,
const char *hdr_sid_str,
unixtime hdr_ut,
const char *obs_qty, float *obs_arr,
- Grid &gr, const char *var_name,
- const DataPlane *wgt_dp) {
+ const Grid &gr, const char *var_name) {
// Check the observation VarInfo file type
if(obs_info->file_type() != FileType_Gb1) {
@@ -1303,17 +1302,12 @@ void VxPairDataEnsemble::add_point_obs(float *hdr_arr, int *hdr_typ_arr,
gr, obs_x, obs_y, obs_v, obs_lvl, obs_hgt,
cpi)) continue;
- // Compute weight for current point
- double wgt_v = (wgt_dp == nullptr ?
- default_grid_weight :
- wgt_dp->get(x, y));
-
// Add the observation value
// Weight is from the nearest grid point
int n = three_to_one(i_msg_typ, i_mask, i_interp);
if(!pd[n].add_point_obs(hdr_sid_str, hdr_lat, hdr_lon,
obs_x, obs_y, hdr_ut, obs_lvl, obs_hgt,
- obs_v, obs_qty, cpi, wgt_v)) {
+ obs_v, obs_qty, cpi, default_weight)) {
if(mlog.verbosity_level() >= REJECT_DEBUG_LEVEL) {
mlog << Debug(REJECT_DEBUG_LEVEL)
diff --git a/src/libcode/vx_statistics/pair_data_ensemble.h b/src/libcode/vx_statistics/pair_data_ensemble.h
index f621c23abf..6f14825b11 100644
--- a/src/libcode/vx_statistics/pair_data_ensemble.h
+++ b/src/libcode/vx_statistics/pair_data_ensemble.h
@@ -216,8 +216,8 @@ class VxPairDataEnsemble : public VxPairBase {
void set_skip_const(bool);
void add_point_obs(float *, int *, const char *, const char *,
- unixtime, const char *, float *, Grid &,
- const char * = 0, const DataPlane * = 0);
+ unixtime, const char *, float *, const Grid &,
+ const char *);
void add_ens(int, bool mn, Grid &);
};
diff --git a/src/libcode/vx_statistics/pair_data_point.cc b/src/libcode/vx_statistics/pair_data_point.cc
index a22194a297..5c8188e868 100644
--- a/src/libcode/vx_statistics/pair_data_point.cc
+++ b/src/libcode/vx_statistics/pair_data_point.cc
@@ -503,8 +503,7 @@ void VxPairDataPoint::set_size(int types, int masks, int interps) {
void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str,
const char *hdr_sid_str, unixtime hdr_ut,
const char *obs_qty, float *obs_arr,
- Grid &gr, const char *var_name,
- const DataPlane *wgt_dp) {
+ const Grid &gr, const char *var_name) {
// Increment the number of tries count
n_try++;
@@ -553,11 +552,7 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str,
obs_info->is_specific_humidity();
bool precip_flag = fcst_info->is_precipitation() &&
obs_info->is_precipitation();
- int precip_interval = bad_data_int;
- if(precip_flag) {
- if(wgt_dp) precip_interval = wgt_dp->accum();
- else precip_interval = fcst_dpa[0].accum();
- }
+ int precip_interval = fcst_dpa[0].accum();
bool has_seeps = false;
SeepsScore *seeps = nullptr;
@@ -623,17 +618,12 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str,
continue;
}
- // Compute weight for current point
- double wgt_v = (wgt_dp == nullptr ?
- default_grid_weight :
- wgt_dp->get(x, y));
-
// Add the forecast, climatological, and observation data
// Weight is from the nearest grid point
int n = three_to_one(i_msg_typ, i_mask, i_interp);
if(!pd[n].add_point_pair(hdr_sid_str,
hdr_lat, hdr_lon, obs_x, obs_y, hdr_ut, obs_lvl,
- obs_hgt, fcst_v, obs_v, obs_qty, cpi, wgt_v)) {
+ obs_hgt, fcst_v, obs_v, obs_qty, cpi, default_weight)) {
if(mlog.verbosity_level() >= REJECT_DEBUG_LEVEL) {
mlog << Debug(REJECT_DEBUG_LEVEL)
@@ -954,7 +944,7 @@ void subset_wind_pairs(const PairDataPoint &pd_u, const PairDataPoint &pd_v,
// Loop over the pairs
for(i=0; i mask_area_map;
// Mapping of mask names to Station ID lists
- std::map mask_sid_map;
+ std::map mask_sid_map;
gsl_rng *rng_ptr; // GSL random number generator (allocated)
- GridWeightType grid_weight_flag; // Grid weighting flag
- ConcatString tmp_dir; // Directory for temporary files
+ GridWeightType grid_weight_flag; // Grid weighting flag
+ PointWeightType point_weight_flag; // Point weighting flag
+
ConcatString output_prefix; // String to customize output file name
ConcatString version; // Config file version
diff --git a/src/tools/core/grid_stat/grid_stat.cc b/src/tools/core/grid_stat/grid_stat.cc
index 802e772aab..45afc74615 100644
--- a/src/tools/core/grid_stat/grid_stat.cc
+++ b/src/tools/core/grid_stat/grid_stat.cc
@@ -2088,7 +2088,7 @@ void get_mask_points(const GridStatVxOpt &vx_opt,
if(ocsd_ptr) apply_mask(*ocsd_ptr, mask_mp, pd.ocsd_na);
else pd.ocsd_na.add_const(bad_data_double, pd.n_obs);
if(wgt_ptr) apply_mask(*wgt_ptr, mask_mp, pd.wgt_na);
- else pd.wgt_na.add_const(default_grid_weight, pd.n_obs);
+ else pd.wgt_na.add_const(default_weight, pd.n_obs);
if(ocmn_ptr && ocsd_ptr) pd.compute_climo_cdf();
diff --git a/src/tools/core/point_stat/point_stat.cc b/src/tools/core/point_stat/point_stat.cc
index fcd67962b0..0b88407abc 100644
--- a/src/tools/core/point_stat/point_stat.cc
+++ b/src/tools/core/point_stat/point_stat.cc
@@ -202,10 +202,11 @@ int met_main(int argc, char *argv[]) {
process_obs_file(i);
}
- // Calculate and print observation summaries
+ // Process observation summaries and point weights
for(i=0; i mask_area_map;
// Mapping of mask names to Station ID lists
- std::map mask_sid_map;
+ std::map mask_sid_map;
+
+ PointWeightType point_weight_flag; // Point weighting flag
ConcatString tmp_dir; // Directory for temporary files
ConcatString output_prefix; // String to customize output file name
diff --git a/src/tools/core/series_analysis/series_analysis.cc b/src/tools/core/series_analysis/series_analysis.cc
index 581356dcd8..e5c3a62fe8 100644
--- a/src/tools/core/series_analysis/series_analysis.cc
+++ b/src/tools/core/series_analysis/series_analysis.cc
@@ -970,7 +970,7 @@ void process_scores() {
(ocsd_flag ? ocsd_dp(x, y) : bad_data_double));
pd_block[i].add_grid_pair(fcst_dp(x, y), obs_dp(x, y),
- cpi, default_grid_weight);
+ cpi, default_weight);
} // end for i
} // end for i_series
diff --git a/src/tools/core/stat_analysis/aggr_stat_line.cc b/src/tools/core/stat_analysis/aggr_stat_line.cc
index 3c6dcd3f22..98df91caad 100644
--- a/src/tools/core/stat_analysis/aggr_stat_line.cc
+++ b/src/tools/core/stat_analysis/aggr_stat_line.cc
@@ -1728,8 +1728,8 @@ void aggr_wind_lines(LineDataFile &f, STATAnalysisJob &job,
// Append the unit vectors with no climatological values
//
ClimoPntInfo cpi;
- m[key].pd_u.add_grid_pair(uf, uo, cpi, default_grid_weight);
- m[key].pd_v.add_grid_pair(vf, vo, cpi, default_grid_weight);
+ m[key].pd_u.add_grid_pair(uf, uo, cpi, default_weight);
+ m[key].pd_v.add_grid_pair(vf, vo, cpi, default_weight);
//
// Keep track of the unique header column entries
@@ -1837,8 +1837,8 @@ void aggr_mpr_wind_lines(LineDataFile &f, STATAnalysisJob &job,
aggr.hdr_sa.add(hdr);
ClimoPntInfo u_cpi(ufcmn, ufcsd, uocmn, uocsd);
ClimoPntInfo v_cpi(vfcmn, vfcsd, vocmn, vocsd);
- aggr.pd_u.add_grid_pair(uf, uo, u_cpi, default_grid_weight);
- aggr.pd_v.add_grid_pair(vf, vo, v_cpi, default_grid_weight);
+ aggr.pd_u.add_grid_pair(uf, uo, u_cpi, default_weight);
+ aggr.pd_v.add_grid_pair(vf, vo, v_cpi, default_weight);
//
// Add the new map entry
@@ -1903,8 +1903,8 @@ void aggr_mpr_wind_lines(LineDataFile &f, STATAnalysisJob &job,
m[key].hdr_sa.add(hdr);
ClimoPntInfo u_cpi(ufcmn, ufcsd, uocmn, uocsd);
ClimoPntInfo v_cpi(vfcmn, vfcsd, vocmn, vocsd);
- m[key].pd_u.add_grid_pair(uf, uo, u_cpi, default_grid_weight);
- m[key].pd_v.add_grid_pair(vf, vo, v_cpi, default_grid_weight);
+ m[key].pd_u.add_grid_pair(uf, uo, u_cpi, default_weight);
+ m[key].pd_v.add_grid_pair(vf, vo, v_cpi, default_weight);
}
}
@@ -2053,8 +2053,8 @@ void aggr_mpr_wind_lines(LineDataFile &f, STATAnalysisJob &job,
double vo;
convert_u_v_to_unit(it->second.pd_u.o_na[i],
it->second.pd_v.o_na[i], uo, vo);
- aggr.pd_u.add_grid_pair(uf, uo, cpi, default_grid_weight);
- aggr.pd_v.add_grid_pair(vf, vo, cpi, default_grid_weight);
+ aggr.pd_u.add_grid_pair(uf, uo, cpi, default_weight);
+ aggr.pd_v.add_grid_pair(vf, vo, cpi, default_weight);
}
//
@@ -2135,7 +2135,7 @@ void aggr_mpr_lines(LineDataFile &f, STATAnalysisJob &job,
aggr.pd.ocmn_na.add(cur.obs_climo_mean);
aggr.pd.ocsd_na.add(cur.obs_climo_stdev);
aggr.pd.ocdf_na.add(cur.obs_climo_cdf);
- aggr.pd.wgt_na.add(default_grid_weight);
+ aggr.pd.wgt_na.add(default_weight);
aggr.fcst_var = cur.fcst_var;
aggr.obs_var = cur.obs_var;
@@ -2166,7 +2166,7 @@ void aggr_mpr_lines(LineDataFile &f, STATAnalysisJob &job,
m[key].pd.ocmn_na.add(cur.obs_climo_mean);
m[key].pd.ocsd_na.add(cur.obs_climo_stdev);
m[key].pd.ocdf_na.add(cur.obs_climo_cdf);
- m[key].pd.wgt_na.add(default_grid_weight);
+ m[key].pd.wgt_na.add(default_weight);
//
// Only aggregate consistent variable names
@@ -3049,7 +3049,7 @@ void aggr_orank_lines(LineDataFile &f, STATAnalysisJob &job,
//
ClimoPntInfo cpi(cur.fcst_climo_mean, cur.fcst_climo_stdev,
cur.obs_climo_mean, cur.obs_climo_stdev);
- m[key].ens_pd.add_grid_obs(cur.obs, cpi, default_grid_weight);
+ m[key].ens_pd.add_grid_obs(cur.obs, cpi, default_weight);
m[key].ens_pd.skip_ba.add(false);
m[key].ens_pd.n_pair++;
m[key].ens_pd.r_na.add(cur.rank);
diff --git a/src/tools/core/stat_analysis/parse_stat_line.cc b/src/tools/core/stat_analysis/parse_stat_line.cc
index 3e3c5ae1f3..80a4dd7102 100644
--- a/src/tools/core/stat_analysis/parse_stat_line.cc
+++ b/src/tools/core/stat_analysis/parse_stat_line.cc
@@ -61,7 +61,6 @@ void parse_fho_ctable(STATLine &l, TTContingencyTable &ct) {
double h_rate = atof(l.get_item("H_RATE"));
double o_rate = atof(l.get_item("O_RATE"));
- // MET #2887: JHG multiple by the sum of the weights here instead?
double fy = n_pairs * f_rate;
double fy_oy = n_pairs * h_rate;
double oy = n_pairs * o_rate;
diff --git a/src/tools/other/ascii2nc/ascii2nc.cc b/src/tools/other/ascii2nc/ascii2nc.cc
index 940e12cedf..c8fb632dda 100644
--- a/src/tools/other/ascii2nc/ascii2nc.cc
+++ b/src/tools/other/ascii2nc/ascii2nc.cc
@@ -743,18 +743,18 @@ void set_mask_poly(const StringArray & a) {
////////////////////////////////////////////////////////////////////////
void set_mask_sid(const StringArray & a) {
- ConcatString mask_name;
// List the station ID mask
mlog << Debug(1)
<< "Station ID Mask: " << a[0] << "\n";
- parse_sid_mask(a[0], mask_sid, mask_name);
+ MaskSID ms = parse_sid_mask(a[0]);
+ for(const auto &pair : ms.sid_map()) mask_sid.add(pair.first);
// List the length of the station ID mask
mlog << Debug(2)
- << "Parsed Station ID Mask: " << mask_name
- << " containing " << mask_sid.n_elements() << " points\n";
+ << "Parsed Station ID Mask (" << ms.name()
+ << ") containing " << mask_sid.n() << " stations\n";
}
////////////////////////////////////////////////////////////////////////
diff --git a/src/tools/other/gsi_tools/gsidens2orank.cc b/src/tools/other/gsi_tools/gsidens2orank.cc
index 39edb87cc5..31aa675774 100644
--- a/src/tools/other/gsi_tools/gsidens2orank.cc
+++ b/src/tools/other/gsi_tools/gsidens2orank.cc
@@ -271,7 +271,7 @@ void process_conv_data(ConvData &d, int i_mem) {
bad_data_double, bad_data_double);
ens_pd.add_point_obs(d.sid.c_str(), d.lat, d.lon,
bad_data_double, bad_data_double, d.obs_ut, d.prs,
- d.elv, d.obs, na_str, cpi, default_grid_weight);
+ d.elv, d.obs, na_str, cpi, default_weight);
// Initialize ensemble members and mean to bad data
for(i=0; i ";
@@ -124,10 +124,8 @@ void IODA2NCConfInfo::process_config() {
// Conf: station_id
sa = conf.lookup_string_array(conf_key_station_id);
- sid_list = new StringArray [sa.n_elements()];
- for(i=0; i