Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
4396e1d
Per #3335, add kde_ref_angle and write_weights options to the User's …
JohnHalleyGotway May 12, 2026
46e6d75
Per #3335, update Point-Stat and Ensemble-Stat to parse the new point…
JohnHalleyGotway May 12, 2026
c04bee3
Per #3335, save work in progress.
JohnHalleyGotway May 12, 2026
e8accb9
Per #3335, work in progress defining and using the PointWeightInfo cl…
JohnHalleyGotway May 13, 2026
ef831ea
Per #3335, rename PointWeightFlag::add() as PointWeightFlag::add_loca…
JohnHalleyGotway May 13, 2026
0290f70
Per #3335, move PointWeightInfo into new vx_util/point_weight.h and .…
JohnHalleyGotway May 13, 2026
4689ae5
Per #3335, implement kde weights.
JohnHalleyGotway May 13, 2026
486d706
Per #3335, can pass PointWeightInfo as const since set_point_weight()…
JohnHalleyGotway May 14, 2026
885fb08
Per #3335, needed to switch ADPUPA to ADPSFC to revert back to previo…
JohnHalleyGotway May 14, 2026
1a3c9da
Per #3335, add debug logging and pass (lat,lon) correctly.
JohnHalleyGotway May 14, 2026
021df1f
Per #3335, fix spacing
JohnHalleyGotway May 14, 2026
00a014d
Per #3335, clean up and store the current version, even if there's co…
JohnHalleyGotway May 15, 2026
3882855
Per #3335, add logic to write the point weight output file.
JohnHalleyGotway May 15, 2026
e9a4650
Per #3335, update docs and unit tests to demonstrate writing the poin…
JohnHalleyGotway May 15, 2026
47d1d3c
Per #3335, update all the MET Point-Stat and Ensemble-Stat config files.
JohnHalleyGotway May 15, 2026
81cc453
Per #3335, get rid of trailing whitespace
JohnHalleyGotway May 15, 2026
fdb5d96
Per #3335, also update the Pair-Stat config files.
JohnHalleyGotway May 15, 2026
0a035d9
Per #3335, in compute_kde_weights() call angle_between() to get a lon…
JohnHalleyGotway May 19, 2026
fe30a3d
Unrelated to #3335, remove commented out reminder from compilation_op…
JohnHalleyGotway May 19, 2026
4aa99ff
Per #3335, correct mistakes in the unit test configurations to mostly…
JohnHalleyGotway May 19, 2026
56f10c5
Merge remote-tracking branch 'origin/develop' into feature_3335_point…
JohnHalleyGotway Jun 29, 2026
f9d9770
Merge remote-tracking branch 'origin/develop' into feature_3335_point…
JohnHalleyGotway Jul 13, 2026
657be1f
Delete script accidentally committed.
JohnHalleyGotway Jul 13, 2026
9db5986
Only whitespace changes
JohnHalleyGotway Jul 13, 2026
c0d27a4
Merge remote-tracking branch 'origin/develop' into feature_3335_point…
JohnHalleyGotway Jul 14, 2026
7ba3196
Merge remote-tracking branch 'origin/develop' into feature_3335_point…
JohnHalleyGotway Jul 21, 2026
01eecef
Per #3335, update logic to rescale KDE weight to a stadard range of 1…
JohnHalleyGotway Jul 21, 2026
40bf2ea
Per #3335, updating the tense.
JohnHalleyGotway Jul 21, 2026
5333465
Merge remote-tracking branch 'origin/develop' into feature_3335_point…
JohnHalleyGotway Aug 16, 2026
b466595
Per #3335, define gc_angle() in vx_nav and update PointWeightInfo::co…
JohnHalleyGotway Aug 16, 2026
9cfbf39
Per #3335, since vx_util/point_weight.cc calls gc_angle() in vx_nav/n…
JohnHalleyGotway Aug 21, 2026
83cbec2
Per #3335, fix gc_angle() to return result in degress rather than rad…
JohnHalleyGotway Aug 24, 2026
ef4bc12
Per #3335, enhance compute_kde_weights() error out with a useful log …
JohnHalleyGotway Aug 24, 2026
304775a
Per #3335, update log message and documentation.
JohnHalleyGotway Aug 24, 2026
6cd2f6d
Per #3335, enhance the KDE error message to print the average angular…
JohnHalleyGotway Aug 24, 2026
cce594a
Per #3335, update the kde reference angle to 5.0 for GDAS global obse…
JohnHalleyGotway Aug 24, 2026
593ccd4
Per #3335, update the list of expected output files.
JohnHalleyGotway Aug 24, 2026
8bdaa71
Per #3335, minor SonarQube change.
JohnHalleyGotway Aug 24, 2026
90cbeea
Per #3335, tweak the wording of the error message.
JohnHalleyGotway Aug 25, 2026
cb1cc6e
Per #3335, update the 13.0 release notes.
JohnHalleyGotway Aug 27, 2026
b980feb
Per #3335, remove 'NONE' from upgrade instructions since those sectio…
JohnHalleyGotway Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions .github/workflows/compilation_options.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,7 @@ name: Compilation Options

on:

# Note that scheduled cron events are run on the default branch.
# Enable this schedule when main_v12.0 becomes the default branch.

# schedule:
# - cron: '0 7 * * 0''

push:

tags:
- '**'

Expand Down
1 change: 1 addition & 0 deletions data/config/ConfigConstants
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ AREA = 3;
// Point weight flag settings
NONE = 1;
SID = 2;
KDE = 3;

// Duplicate flag settings
NONE = 1;
Expand Down
4 changes: 4 additions & 0 deletions data/config/EnsembleStatConfig_default
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "";
version = "V13.0.0";
Expand Down
4 changes: 4 additions & 0 deletions data/config/PairStatConfig_default
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,10 @@ output_flag = {
////////////////////////////////////////////////////////////////////////////////

point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

tmp_dir = "/tmp";
version = "V13.0.0";
Expand Down
6 changes: 5 additions & 1 deletion data/config/PointStatConfig_default
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,11 @@ output_flag = {
////////////////////////////////////////////////////////////////////////////////

point_weight_flag = NONE;

kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

tmp_dir = "/tmp";
output_prefix = "";
version = "V13.0.0";
Expand Down
2 changes: 1 addition & 1 deletion data/config/STATAnalysisConfig_CBS_Index
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ alpha = [];
line_type = [ "SL1L2" ];

column = [ "RMSE" ];

weight = [ 6.4, 6.4, 6.4, 6.4, 6.4,
2.4, 2.4, 2.4, 2.4, 2.4,
2.4, 2.4, 2.4, 2.4, 2.4,
Expand Down
2 changes: 1 addition & 1 deletion data/config/STATAnalysisConfig_GO_Index
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ alpha = [];
line_type = [ "SL1L2" ];

column = [ "RMSE" ];

weight = [ 4.0, 3.0, 2.0, 1.0,
4.0, 3.0, 2.0, 1.0,
4.0, 3.0, 2.0, 1.0,
Expand Down
39 changes: 39 additions & 0 deletions docs/Users_Guide/config_options.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2803,10 +2803,49 @@ methods are planned for future versions:
* SID to use the weights defined by the station ID masking configuration option,
"mask.sid".

* KDE to apply a kernel density estimator to compute weights based on observation
density to avoid the impact of oversampling from data rich regions. Note that
KDE weights are automatically rescaled a standard range of 1 to 100.

.. code-block:: none

point_weight_flag = NONE;

kde_ref_angle
-------------

The "kde_ref_angle" entry defines the reference angle used when computing the
weights for "point_weight_flag = KDE". This reference angle is defined in degrees
with a default value of 0.75. As described in :ref:`Haiden et al., 2012 <Haiden-2012>`,
an increase of this parameter increases the weights of data-sparse regions in global
or continental-scale averages.

MET checks for the divide-by-zero condition to avoid computing an infinite KDE weights.
When that occurs, MET errors out and instructs the user to adjust the reference angle.

.. code-block:: none

kde_ref_angle = 0.75;

write_weights
-------------

Point weights are either pre-defined ("point_weight_flag = SID") or computed based
on the station location density ("point_weight_flag = KDE). The "write_weights"
entry is a boolean that can be set to TRUE or FALSE (default). If TRUE, the weights
are written to an output ASCII file ending in "_point_weights.txt". That file can
be used to define the "mask.sid" station ID masking file in future runs.

Note that "mask.sid" can be specified separately for each verification task, and,
technically, the same station could be assigned different weights for different
verification tasks. If the same station name appears in multiple "mask.sid"
lists, only the first weight encountered for each station is written to the
output.

.. code-block:: none

write_weights = FALSE;

hss_ec_value
------------

Expand Down
2 changes: 2 additions & 0 deletions docs/Users_Guide/ensemble-stat.rst
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ ____________________
obtype_as_group_val_flag = FALSE;
grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;
output_prefix = "";
version = "VN.N";

Expand Down
2 changes: 2 additions & 0 deletions docs/Users_Guide/pair-stat.rst
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ ________________________
model = "FCST";
desc = "NA";
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;
tmp_dir = "/tmp";
version = "VN.N";

Expand Down
2 changes: 2 additions & 0 deletions docs/Users_Guide/point-stat.rst
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,8 @@ ________________________
message_type_group_map = [ ... ];
obtype_as_group_val_flag = FALSE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;
tmp_dir = "/tmp";
output_prefix = "";
version = "VN.N";
Expand Down
16 changes: 12 additions & 4 deletions docs/Users_Guide/release-notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,16 @@ MET Version 13.0.0 Upgrade Instructions
However, if no spatial masking region is requested in the configuration file, then the
"FULL" grid will automatically be added, as noted in :numref:`config_options-mask`.

* Point-Stat, Ensemble-Stat, and Pair-Stat configuration files

* The existing "point_weight_flag" entry can now be set to "KDE" to request kernel density
estimation weighting.

* The "kde_ref_angle" numeric entry defines a reference angle when computing KDE weights.

* The "write_weights" boolean entry instructs the tools to write an output text file
containing the point weight values applied based on the "point_weight_flag" setting.

* Grid-Diag configuration file

* The "mask.grid" and "mask.poly" entries have changed from strings to arrays of strings
Expand All @@ -190,9 +200,7 @@ MET Version 13.0.0 Upgrade Instructions
for a description of wind rotation and derivation and :numref:`config_wind_field_names` for the
corresponding configuration options.

.. dropdown:: Output format changes - NONE

.. dropdown:: Output format changes - NONE
.. dropdown:: Output format changes

MET version 13.0.0 adds or modifies the following output file formats:

Expand All @@ -210,7 +218,7 @@ MET Version 13.0.0 Upgrade Instructions
* Adds new output variables with names include "EAS" and "EAS_WIDTH" for the Ensemble
Agreement Scale algorithm.

.. dropdown:: Output data changes - NONE
.. dropdown:: Output data changes

MET version 13.0.0 modifies existing output data values in the following ways:

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_LAND_TOPO_MASK
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_MASK_SID
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_climo
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_grid_weight
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,10 @@ rng = {

grid_weight_flag = ${GRID_WEIGHT};
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_one_cdf_bin
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
8 changes: 6 additions & 2 deletions internal/test_unit/config/EnsembleStatConfig_point_weight
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ obs_window = {
// Verification masking regions
//
mask = {
grid = [];
grid = [ ${MASK_GRID} ];
poly = [];
sid = [ "${CONFIG_DIR}/SID_CONUS_ADPSFC_ELEV.txt" ];
sid = [ ${MASK_SID} ];
llpnt = [];
}

Expand Down Expand Up @@ -207,6 +207,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = ${POINT_WEIGHT};
kde_ref_angle = 0.75;
write_weights = TRUE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_python
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
6 changes: 5 additions & 1 deletion internal/test_unit/config/EnsembleStatConfig_qty_inc_exc
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ fcst = {
obs_quality_exc = [];
desc = "QTY_INC";
},

{
name = "TMP";
level = [ "Z2" ];
Expand Down Expand Up @@ -237,6 +237,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_single_file_grib
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
4 changes: 4 additions & 0 deletions internal/test_unit/config/EnsembleStatConfig_single_file_nc
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,10 @@ rng = {

grid_weight_flag = NONE;
point_weight_flag = NONE;
kde_ref_angle = 0.75;
write_weights = FALSE;

////////////////////////////////////////////////////////////////////////////////

output_prefix = "${OUTPUT_PREFIX}";

Expand Down
2 changes: 1 addition & 1 deletion internal/test_unit/config/GridStatConfig_fbias_perc_thresh
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ fcst = {
field = [
{ name = "TMP"; level = [ "P500" ]; cat_thresh = [ ==FBIAS0.9, ==FBIAS1.0, ==FBIAS1.1, ==FBIAS0.9, ==FBIAS1.0, ==FBIAS1.1, <243, <243, <243, >253, >253, >253 ]; }
];

}
obs = {

Expand Down
2 changes: 1 addition & 1 deletion internal/test_unit/config/GridStatConfig_ugrid_mpas
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,8 @@ nc_pairs_flag = {
seeps_p1_thresh = NA;

////////////////////////////////////////////////////////////////////////////////
// Unstructured Grid (optional ecept ugrid_dataset)

// Unstructured Grid (optional except ugrid_dataset)
ugrid_dataset = "mpas";
//ugrid_max_distance_km = 30;
//ugrid_map_config = "";
Expand Down
2 changes: 1 addition & 1 deletion internal/test_unit/config/GridStatConfig_ugrid_mpas_diag
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,8 @@ nc_pairs_flag = {
seeps_p1_thresh = NA;

////////////////////////////////////////////////////////////////////////////////
// Unstructured Grid (optional ecept ugrid_dataset)

// Unstructured Grid (optional except ugrid_dataset)
ugrid_dataset = "mpas";
//ugrid_max_distance_km = 30;
//ugrid_map_config = "";
Expand Down
4 changes: 2 additions & 2 deletions internal/test_unit/config/MODEConfig_multivar
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,10 @@ fcst = {
//${METPLUS_FCST_VLD_THRESH}
//${METPLUS_FCST_FILTER_ATTR_NAME}
filter_attr_name = ["AREA"];

//${METPLUS_FCST_FILTER_ATTR_THRESH}
filter_attr_thresh = [>=25];

//${METPLUS_FCST_MERGE_THRESH}
//${METPLUS_FCST_MERGE_FLAG}
//${METPLUS_FCST_FILE_TYPE}
Expand Down
Loading
Loading