Skip to content

Update develop-ref after #3431 - #3437

Merged
JohnHalleyGotway merged 356 commits into
develop-reffrom
update_develop_30dbbc3b
Sep 4, 2026
Merged

JohnHalleyGotway merged 356 commits into
develop-reffrom
update_develop_30dbbc3b

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

8 new ensemble_stat output files for OBSERR_BAD_LOOKUP are created.
Created by @JohnHalleyGotway

JohnHalleyGotway and others added 30 commits July 23, 2024 11:23
* Per #2924, Update the MPR and ORANK output line types to just write duplicate existing climo values, update the header tables and MPR/ORANK documentation tables.

* Per #2924, update get_n_orank_columns() logic

* Per #2924, update the Stat-Analysis parsing logic to parse the new MPR and ORANK climatology columns.

* Per #2924, making some changes to the vx_statistics library to store climo data... but more work to come. Committing this first set of changes that are incomplete but do compile.

* Per #2924, this big set of changes does compile but make test produces a segfault for ensemble-stat

* Per #2924, fix return value for is_keeper_obs()

* Per #2924, move fcst_info/obs_info into the VxPairBase pointer.

* Per #2924, update Ensemble-Stat to set the VxPairBase::fcst_info pointer

* Per #2924 udpate handling of fcst_info and obs_info pointers in Ensemble-Stat

* Per #2924, update the GSI tools to handle the new fcst climo columns.

* Per #2924, add backward compatibility logic so that when old climo column names are requested, the new ones are used.

* Per #2924, print a DEBUG(2) log message if old column names are used.

* Per #2924, switch the unit tests to reference the updated MPR column names rather than the old ones.

* Per #2924, working progress. Not fully compiling yet

* Per #2924, another round of changes. Removing MPR:FCST_CLIMO_CDF output column. This compiles but not sure if it actually runs yet

* Per #2924, work in progress

* Per #2924, work in progress. Almost compiling again.

* Per #2924, get it compiling

* Per #2924, add back in support for SCP and CDP which are interpreted as SOCP and OCDP, resp

* Per #2924, update docs about SCP and CDP threshold types

* Per #2924, minor whitespace changes

* Per #2924, fix an uninitialized pointer bug by defining/calling SeepsClimoGrid::init_from_scratch() member function. The constructor had been calling clear() to delete pointers that weren't properly initialized to nullptr. Also, simplify some map processing logic.

* Per #2924, rename SeepsAggScore from seeps to seeps_agg for clarity and to avoid conflicts in member function implementations.

* Per #2924, fix seeps compilation error in Point-Stat

* Per #2924, fix bug in the boolean logic for handling the do_climo_cdp NetCDF output option.

* Per #2924, add missing exit statement.

* Per #2924, tweak threshold.h

* Per #2924, define one perc_thresh_info entry for each enumerated PercThreshType value

* Per #2924, simplify the logic for handling percentile threshold types and print a log message once when the old versions are still used.

* Per #2924, update the string comparison return value logic

* Per #2924, fix the perc thresh string parsing logic by calling ConcatString::startswith()

* Per #2924, switch all instances of CDP to OCDP. Gen-Ens-Prod was writing NetCDF files with OCDP in the output variable names, but Grid-Stat was requesting that the wrong variable name be read. So the unit tests failed.

* Per #2924, add more doc details

* Per #2924, update default config file to indicate when climo_mean and climo_stdev can be set seperately in the fcst and obs dictionaries.

* Per #2924, update the MET tools to parse climo_mean and climo_stdev separately from the fcst and obs dictionaries.

* Per #2924, backing out new/modified columns to minimize reg test diffs

* Per #2924, one more section to be commented out later.

* Per #2924, replace several calls to strncmp() with ConcatString::startswith() to simplify the code

* Per #2924, strip out some more references to OBS_CLIMO_... in the unit tests.

* Per #2924, delete accidental file

* Per #2924 fix broken XML comments

* Per #2924, fix comments

* Per #2924, address SonarQube findings

* Per #2924, tweak a Point-Stat and Grid-Stat unit test config file to make the output more comparable to develop.

* Per #2924, fix bug in the logic of PairDataPoint and PairDataEnsemble, when looping over the 3-dim array do not return when checking the climo and fcst values. Instead we need to continue to the next loop iteration.

* Per #2924, address more SonarQube code smells to reduce the overall number in MET for this PR.

* Per #2924, correct the logic for parsing climo data from MPR lines.

* Per #2924, cleanup grid_stat.cc source code by making calls to DataPlane::is_empty() and Grid::nxy().

* Per #2924, remove unneeded ==0
* Per #2924, track SL1L2 and SAL1L2 MAE scores with separate variables since they are no longer the same value. I renamed the existing 'mae' as 'smae' and added a new 'samae' variable. Renaming the existing lets me use the compiler help find all references to it throughout the code.

* Per #2924, update the User's Guide climatology details and equations.

* Per #2924, some changes to aggr_stat_line.cc and series_analysis.cc to satisfy some SonarQube code smells.
…to clarify that data specified in the fcst dictionary is read from the -single input files.
* Per #2924, Update the MPR and ORANK output line types to just write duplicate existing climo values, update the header tables and MPR/ORANK documentation tables.

* Per #2924, update get_n_orank_columns() logic

* Per #2924, update the Stat-Analysis parsing logic to parse the new MPR and ORANK climatology columns.

* Per #2924, making some changes to the vx_statistics library to store climo data... but more work to come. Committing this first set of changes that are incomplete but do compile.

* Per #2924, this big set of changes does compile but make test produces a segfault for ensemble-stat

* Per #2924, fix return value for is_keeper_obs()

* Per #2924, move fcst_info/obs_info into the VxPairBase pointer.

* Per #2924, update Ensemble-Stat to set the VxPairBase::fcst_info pointer

* Per #2924 udpate handling of fcst_info and obs_info pointers in Ensemble-Stat

* Per #2924, update the GSI tools to handle the new fcst climo columns.

* Per #2924, add backward compatibility logic so that when old climo column names are requested, the new ones are used.

* Per #2924, print a DEBUG(2) log message if old column names are used.

* Per #2924, switch the unit tests to reference the updated MPR column names rather than the old ones.

* Per #2924, working progress. Not fully compiling yet

* Per #2924, another round of changes. Removing MPR:FCST_CLIMO_CDF output column. This compiles but not sure if it actually runs yet

* Per #2924, work in progress

* Per #2924, work in progress. Almost compiling again.

* Per #2924, get it compiling

* Per #2924, add back in support for SCP and CDP which are interpreted as SOCP and OCDP, resp

* Per #2924, update docs about SCP and CDP threshold types

* Per #2924, minor whitespace changes

* Per #2924, fix an uninitialized pointer bug by defining/calling SeepsClimoGrid::init_from_scratch() member function. The constructor had been calling clear() to delete pointers that weren't properly initialized to nullptr. Also, simplify some map processing logic.

* Per #2924, rename SeepsAggScore from seeps to seeps_agg for clarity and to avoid conflicts in member function implementations.

* Per #2924, fix seeps compilation error in Point-Stat

* Per #2924, fix bug in the boolean logic for handling the do_climo_cdp NetCDF output option.

* Per #2924, add missing exit statement.

* Per #2924, tweak threshold.h

* Per #2924, define one perc_thresh_info entry for each enumerated PercThreshType value

* Per #2924, simplify the logic for handling percentile threshold types and print a log message once when the old versions are still used.

* Per #2924, update the string comparison return value logic

* Per #2924, fix the perc thresh string parsing logic by calling ConcatString::startswith()

* Per #2924, switch all instances of CDP to OCDP. Gen-Ens-Prod was writing NetCDF files with OCDP in the output variable names, but Grid-Stat was requesting that the wrong variable name be read. So the unit tests failed.

* Per #2924, add more doc details

* Per #2924, update default config file to indicate when climo_mean and climo_stdev can be set seperately in the fcst and obs dictionaries.

* Per #2924, update the MET tools to parse climo_mean and climo_stdev separately from the fcst and obs dictionaries.

* Per #2924, backing out new/modified columns to minimize reg test diffs

* Per #2924, one more section to be commented out later.

* Per #2924, replace several calls to strncmp() with ConcatString::startswith() to simplify the code

* Per #2924, strip out some more references to OBS_CLIMO_... in the unit tests.

* Per #2924, delete accidental file

* Per #2924 fix broken XML comments

* Per #2924, fix comments

* Per #2924, address SonarQube findings

* Per #2924, tweak a Point-Stat and Grid-Stat unit test config file to make the output more comparable to develop.

* Per #2924, fix bug in the logic of PairDataPoint and PairDataEnsemble, when looping over the 3-dim array do not return when checking the climo and fcst values. Instead we need to continue to the next loop iteration.

* Per #2924, address more SonarQube code smells to reduce the overall number in MET for this PR.

* Per #2924, correct the logic for parsing climo data from MPR lines.

* Per #2924, update MPR and ORANK line types to update/add FCST/OBS_CLIMO_MEAN/STDEV/CDF columns.

* Per #2924, cleanup grid_stat.cc source code by making calls to DataPlane::is_empty() and Grid::nxy().

* Per #2924, remove unneeded ==0

* Per #2924, working on PR2.

* Per #2924, update User's Guide with notional example of specifying climo_mean and climo_stdev separately in the fcst and obs dicts.

* Per #2924, adding a new unit test. It does NOT yet run as expected. Will debug on seneca

* Per #2924, pass the description string to the read_climo_data_plane*() function to provide better log messages

* Per #2924, more work on consistent log messages

* Per #2924, tweak the configuration to define both field, climo_mean, and climo_stdev in both the fcst and obs dictionaries

* Per #2924, tweak the unit_climatology_mixed.xml test

* Per #2924, only whitespace changes.

* Per #2924, missed swapping MET #2924 changes in 3 test files

* Per #2924, delete accidentally committed file

* Per #2924, delete accidentally committed files

* Per #2924, add support for GRIB1 time range indicator value of 123 used for the corresponding METplus Use Case. Note that there are 22 other TRI values not currently supported.
#2947)

* Adds caveat regarding longitudes appearing in DEBUG statements with a different sign to the FAQ.

* Update appendixA.rst

Missing paren
* Per #2938, define CRC_Array::add_uniq(...) member function which is now used in PB2NC

* Per #2938, replace n_elements() with n() to make the code more concise. Refine log/warning message when multiple message center times are encountered.
* Per #1371, add -input command line argument and add support for ALL for the CTC, MCTC, SL1L2, and PCT line types.

* Per #1371, rename the -input command line option as -aggregate instead

* Per #1371, work in progress

* Per #1371, just comments

* Per #1371, working on aggregating CTC counts

* Per #1371, work in progress

* Per #1371, update timing info using time stamps in the aggr file

* Per #1371, close the aggregate data file

* Per #1371, define set_event() and set_nonevent() member functions

* Per #1371, add logic to aggregate MCTC and PCT counts

* Merging changes from develop

* Per #1371, work in progress aggregating all the line statistics types. Still have several issues to address

* Per #1371, switch to using get_stat() functions

* Per #1371, work in progress. More consolidation

* Per #1371, correct expected output file name

* Per #1371, consistent regridding log messages and fix the Series-Analysis PairDataPoint object handling logic.

* Per #1371, check the return status when opening the aggregate file.

* Per #1371, fix prc/pjc typo

* Per #1371, fix the series_analysis PCT aggregation logic and add a test to unit_series_analysis.xml to demonstrate.

* Per #1371, resolve a few SonarQube findings

* Per #1371, make use of range-based for loop, as recommeded by SonarQube

* Per #1371, update series-analysis to apply the valid data threshold properly using the old aggregate data and the new pair data.

* Per #1371, update series_analysis to buffer data and write it all at once instead of storing data value by value for each point.

* Per #1371, add useful error message when required aggregation variables are not present in the input -aggr file.

* Per #1371, print a Debug(2) message listing the aggregation fields being read.

* Per #1371, correct operator+= logic in met_stats.cc for SL1L2Info, VL1L2Info, and NBRCNTInfo. The metadata settings, like fthresh and othresh, were not being passed to the output.

* Per #1371, the DataPlane for the computed statistics should be initialized to a field of bad data values rather than the default value of 0. Otherwise, 0's are reported for stats a grid points with no data when they should really be reported as bad data!

* Per #1371, update logic of the compute_cntinfo() function so that CNT statistics can be derived from a single SL1L2Info object containing both scalar and scalar anomaly partial sums. These changes enable CNT:ANOM_CORR to be aggregated in the Series-Analysis tool.

* Per #1371, fix logic of climo log message.

* Per #1371, this is actually related to MET #2924. In compute_pctinfo() used obs climo data first, if provided. And if not, use fcst climo data.

* Per #1371, fix indexing bug (+i instead of +1) when check the valid data count. Also update the logic of read_aggr_total() to return a count of 0 for bad data.

* Per #1371, add logic to aggregate the PSTD BRIERCL and BSS statistics in the do_climo_brier() function. Tested manually to confirm that it works.

* Per #1371, switch to using string literals to satisfy SonarQube

* Per #1371, update series_analysis tests in unit_climatology_1.0deg.xml to demonstrate aggregating climo-based stats.

* Per #1371, remove extra comment

* Per #1371, skip writing the PCT THRESH_i columns to the Series-Analysis output since they are not used

* Per #1371, fix the R string literals to remove \t and \n escape sequences.

* Per #1371, update the read_aggr_data_plane() suggestion strings.

* Per #1371, ignore unneeded PCT 'THRESH_' variables both when reading and writing ALL PCT columns.

* Per #1371, update the test named series_analysis_AGGR_CMD_LINE to include data for the F42 lead time that had previously been included for the same run in the develop branch. Note however that the timestamps in the output file for the develop branch (2012040900_to_2012041100) were wrong and have been corrected here (2012040900_to_2012041018) to match the actual data.

* Per #1371, update the -aggr note to warn users about slow runtimes
* Per #2948, updating versions of ecbuild, eckit, and atlas

* Per #2948, Adding MET_CXX_STANDARD

* Per #2948, updated wording for MET_CXX_STANDARD description

* Per #2948, updating script to work with two versions of ecbuild, eckit, and atlas

* Per #2948, without this change, there are compilation problems if the user wants to compile wihtout python

* Per #2948, fixing logic for MET_CXX_STANDARD

* Per #2928, adding missing end bracket

* Per #2948, fixed the logic for compiling versions of ecbuild, eckit, and atlas

* Per 948, fixed syntax for setting CXXFLAGS

* Per #2948, adding new Makefile.in files and configure and changing METbaseimage 3.2 to 3.3.

* Per #2948, updating version of met base tag from 3.2 to 3.3

* Per #2948, adding --enable-all MET_CXX_STANDARD=11 job

* Update compilation_options.yml

* Per #2948, added a job10 for MET_CXX_STANDARD=14

* Per #2948, added brief documentation for the MET_CXX_STANDARD option

---------

Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* #1729 Allow to change to differnt grid size if the raw size is 0

* Added build_grid_by_grid_string and build_grid_by_grid_string

* #1729 Calls build_grid_by_grid_string

* #1729 Added set_attr_grid at the -field option

* #1729 Set obs_type to TYPE_NCCF if the file_type is given at the config file

* #1729 Support set_sttr_grid and changed Error messages to Warning

* #1729 FIxed SonmarQube findings

* #1729 Initial release for unit test

* #1729 Added update_missing_values

* #1729 Deleted a shadowed local variable

* #2673 Added more is_eq

* #2673 Added get_exe_duration

* 2673 Reducded nested statements

* 2673 Fixed SonarGube findings

* 2673 Fixed SonarQube findings

* 2673 Fixed SonarQube findings

* #1729 Added aan unittest plot_data_plane_set_attr_grid

* #1729 Added aan unittest point2grid_cice_set_attr_grid

* #1729 Added changed back the verbose level

* #1729 Corrected typo

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* #2936 Support 1D lat/lon values

* #2936 Initial release

* #2936 Cast the data type to avoid a compile warning

* #2936 Added an unittest point2grid_gfs_1D_lat_lon

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* #2968 Corrected set_attr_grid for point2grid_cice_set_attr_grid

* #2968 Compare the DataPlane size and the variable data size

* #2968 nx and ny are not ignored with set_attr_grid

* #2968 Compare the DataPlane size and the variable data size

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* added single quotes around env var/val pairs in export statements in cmd only mode

* updated logic in unit() to check exec return value against expected return value; created TEST xml file to test this feature

* deleted TEST_ xml, added test with retval 1 to unit_ascii2nc

---------

Co-authored-by: Natalie Babij <nbabij@seneca.rap.ucar.edu>
* Per #2887, update NumArray::vals() to return a reference to the vector rather a pointer to doubles.

* Per #2887, switch over the whole ContingencyTable class heirarchy from storing integer counts to storing double-precision weights.

* Add ContingencyTable::is_integer() member function to check whether the table contains all integers

* Per #2887, update parse_stat_line.cc to get it to compile after changing PCT to store thresholds in a std::vector.

* Per #2887, update PCTInfo::clear() logic.

* Per #2887, update ctc_by_row() logic to create reproducible results with the develop branch.

* Per #2887, update logic of define_prob_bins() to add a final >=1.0 threshold if needed. While ==0.1 works fine, I found that ==0.05 did not because the last >=1.0 threshold was missing likely do to floating point precision issues. This change should fix that problem.

* Per #2887, update roc_auc() function to match the develop branch

* Per #2887, fix bug if computation of far()

* Per #2887, replaced all ==0 integer equality checks with calls to is_eq() instead and fix a couple of equations to snuff out diffs in some CTS statistics.

* Per #2887, address some of the 34 SonarQube code smells flagged for this PR. Note that the compute_ci.h/.cc changes are necessary and good since we should be computing CI's using doubles instead of integer counts.

* Per #2887, update run_sonarqube.sh to specify the target CXX standard as 11. The hope is that that will limit the findings to only those features available in the C++11 standard.

* Per #2887, update to SonarQube version 6.1.0.4477 released on 6/27/2024.

* Per #2887, updating build_met_sonarqube.sh to specify --std=c++11 since c++17 is used by default
…efine_prob_bins() utility function so that ==n probability thresholds result in the correct number of probability thresholds. We were adding an unncessary 10-th bin (from 1.07143 to 1.0) for the ==7 probability threshold type.
The docs directory was moved up to the top-level of the repository but this workflow was not updated. Changing the ignore setting so that doc-only updates do not trigger the full METplus testing workflow.
* testing AREA and AUTO changes

* Keywords B thru L

* thru R

* adding quotes back in for lower case items

* S thru the end of the document

* Removing double quotes around 3 key words

* Per #2023, adding a label name for the Attributes section

* Per #2023, adding an internal link for the MODE tool Attributes section.

* Adding quotes around Valid basins entries

* more double quote updates

* more complex updates with Julie P help

* removing double quotes

* fixing typos

* removing double quotes

* unbolding SURFACE and putting it in double quotes

* fixing grammar

* grammar

* fixing typo

* fixing typo

---------

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
* Per #2924, remove GenEnsProd config file comment about parsing desc separately from each obs.field entry because the obs dictionary does not exist in the GenEnsProd config file.

* Per #2924, update list of needed config entry names

* Per #2924, remove const from the parent() member function so that we can perform lookups for the parent.

* Per #2924, update the signature for and logic of the utility functions that retrieve the climatology data. Rather than requiring all the climo_mean and climo_stdev dictionary entries to be defined at the same config file context level, parse each one individually. This enables the METplus wrappers to only partially override this dictionary and still rely on the default values provided in MET's default configuration files.

* Per #2924, update all calls to the climatology utility functions based on the new function signature. Also update the tools to check the number of climo fields separately for the forecast and observation climos.

* Per #2924, update the parsing logic for the climatology regrid dictionary. Use config.fcst.climo_mean.regrid first, config.fcst.regrid second, and config.climo_mean.regrid third. Notably, DO NOT use config.regrid. This is definitely the problem with having regrid specified at mutliple config file context levels. It makes the logic for which to use when very messy.

* Per #2924, forgot to add an else to print an error

* Per #2924, remove extraneous semicolon

* Per #2924, move 'fcst.regrid' into 'fcst.climo_mean.regrid'. Defining the climatology regridding logic inside fcst is problematic because it applies to the forecast data as well and you end up with the verification grid being undefined. So the climo regridding logic must be defined in 'climo_mean.regrid' either within the 'fcst' and 'obs' dictionaries or at the top-level config context.

* Per #2924, based on PR feedback from @georgemccabe, add the Upper_Left, Upper_Right, Lower_Right, and Lower_Left interpolation methods to the list of valid options for regridding, as already indicated in the MET User's Guide.

* Per #2924, update the logic of parse_conf_regrid() to (hopefully) make it work the way @georgemccabe expects it to. It now uses pointers to both the primary and default dictionaries and parses each entry individually.

* Per #2924, need to check for non-null pointer before using it

* Per #2924, revise the climo_name dictionary lookup logic when parsing the regrid dictionary.

* Per #2924, update logic for handling RegridInfo

* Per #2924, remove the default regridding information from the 'Searching' log message to avoid confusion.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #2924, remove GenEnsProd config file comment about parsing desc separately from each obs.field entry because the obs dictionary does not exist in the GenEnsProd config file.

* Per #2924, update list of needed config entry names

* Per #2924, remove const from the parent() member function so that we can perform lookups for the parent.

* Per #2924, update the signature for and logic of the utility functions that retrieve the climatology data. Rather than requiring all the climo_mean and climo_stdev dictionary entries to be defined at the same config file context level, parse each one individually. This enables the METplus wrappers to only partially override this dictionary and still rely on the default values provided in MET's default configuration files.

* Per #2924, update all calls to the climatology utility functions based on the new function signature. Also update the tools to check the number of climo fields separately for the forecast and observation climos.

* Per #2924, update the parsing logic for the climatology regrid dictionary. Use config.fcst.climo_mean.regrid first, config.fcst.regrid second, and config.climo_mean.regrid third. Notably, DO NOT use config.regrid. This is definitely the problem with having regrid specified at mutliple config file context levels. It makes the logic for which to use when very messy.

* Per #2924, forgot to add an else to print an error

* Per #2924, remove extraneous semicolon

* Per #2924, move 'fcst.regrid' into 'fcst.climo_mean.regrid'. Defining the climatology regridding logic inside fcst is problematic because it applies to the forecast data as well and you end up with the verification grid being undefined. So the climo regridding logic must be defined in 'climo_mean.regrid' either within the 'fcst' and 'obs' dictionaries or at the top-level config context.

* Per #2924, based on PR feedback from @georgemccabe, add the Upper_Left, Upper_Right, Lower_Right, and Lower_Left interpolation methods to the list of valid options for regridding, as already indicated in the MET User's Guide.

* Per #2924, update the logic of parse_conf_regrid() to (hopefully) make it work the way @georgemccabe expects it to. It now uses pointers to both the primary and default dictionaries and parses each entry individually.

* Per #2924, need to check for non-null pointer before using it

* Per #2924, revise the climo_name dictionary lookup logic when parsing the regrid dictionary.

* Per #2924, update logic for handling RegridInfo

* Per #2924, remove the default regridding information from the 'Searching' log message to avoid confusion.

* Per #2924, escape sequences, like \n, cannot be used inside R-string literals.

* Per #2924, update the logic of check_climo_n_vx()

* Per #2924, revise logic in read_climo_data_plane_array(). Check the number of climo fields provided. If there's 0, just return since no data has been requested. If there's 1, use it regardless of the number of input fields. If there's more than 1, just use the requested i_vx index value.

* Per #2924, update Series-Analysis to set both i_fcst and i_obs when looping over the series entries.

* Per #2924, no real change. Just whitespace.

* Unrelated to #2924, superficial changes to formatting of method_name strings for consistency.

* Per #2924, add a new series_analysis test that ERRORS OUT prior to this PR but works after the changes in this PR.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #2949, updating installation instructions

* Per #2949, adding missing colon from note directive

* Per #2949, third attempt to get the new note to show up

* Per #2949, modifying text and format

* Per #2949, removing images in favor of code blocks for easier modification

* Per #2949, modified wording for clarity

* Per #2929, corrected typo

* Update installation.rst

No changes to content, only whitespace for consistency, mostly removing tabs.

* Update docs/Users_Guide/installation.rst

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>

* Per #2949, testing variable replacement, expect failures

* Per #2949, reverting to orignal state after testing

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* Per #2979, remove nc_grid.h/.cc and replace it with calls to the read_netcdf_grid(...) and write_netcdf_proj(...) library utility functions. Note that these changes do compile but I haven't tested whether they actually fix the underlying problem. Also note that nc_utils_local.h/.cc can also likely be replaced with calls to common library functions.

* Per #2979, remove references to nc_grid.o from the MTD test code.

* Per #2979, insert a newline in unit.py output between the env vars and the command.

* Per #2979, insert a newline in unit.py output between the env vars and the command.

* Per #2979, the write_netcdf_proj(...) utility function adds the lat and lon dimensions. Update mtd to NOT define those dimensions prior to calling write_netcdf_proj(...).

* Per #2979, minor changes to is_eq() calls to fix compiler warning messages

* Per #2979, for the develop branch, also replace nc_utils_local.h/.cc with calls to common library code. Also remove commented out code.

* Per #2979, delete commented out code and make error/warning message formatting consistent.

* Fixes for SonarQube

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
hsoh-u and others added 22 commits April 30, 2026 14:50
* #3254 Modified offset 24 to value @850

* #3254

* #3254 Cleanup for SonarQube findings

* #3254 Cleanup for SonarQube findings

* #3254 Added get_vertical_offset

* #3254 Changed dimention to long

* #3254 Resolved SonarQube findings

* #3254 Added assign_dim_from_metadata

* #3254 Corrected typo

* #3254 Set boolean value to PFlag

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #3294, update GaussianInfo to use std::vector.

* Per #3294, add EASProbInfo struct to store EAS config options.

* Per #3294, switch from dynamically allocated memory to stl vectors.

* Per #3294, need to parse eas_prob.alpha config entry.

* Per #3294, update logic of DataPlane::operator+=() to check for an empty object, and if so, initialize it to 0's using the dimensions of the input.

* Per #3294, add fractional_distance() utility function.

* Per #3294, add new, convenient DataPlane constructor.

* Per #3294, update GenEnsProd to compute EAS probabilities

* Per #3294, update GenEnsProd config files.

* Per #3294, append threshold string to the EAS output variables.

* Per #3294, adjust the default eas_prob settings.

* Per #3294, tweak one more openmp call to satisfy the intel one api compiler on casper.

* Per #3294, reimplementation of EAS functionality in Gen-Ens-Prod to greatly reduce the amount of memory used.

* Per #3294, update the logic in CommandLine and main.cc to create the logfile as early as possible to make sure that it includes all mlog messages. Previously, the starting log message and number of OpenMP threads were written before the logfile was created.

* Per #3279, add eas_prob config details to the MET User's Guide.

* Per #3294, move EAS logic into compute_eas.h/.cc files to keep the source code well-organized.

* Per #3294, tweak openmp code to get it to run in parallel without error.

* Per #3294, add missing Blake, 2018 reference.

* Per #3294, refine Blake et al reference.

* Per #3294, reduce some sonarqube findings.

* Per #3294, satisfy more SonarQube findings

* Per #3294, drive down SonarQube findings in config sources.

* Per #3294, solve a couple more SonarQube findings.

* Per #3294, add ensemble_flag.eas_width and update the config files, docs, and gen_ens_prod logic to only write the eas probabilities and widths when requested.

* Per #3294, delete 2 files accidentally added.

* Per #3294, fix SonarQube issue.

* Per #3294, reduce SonarQube findings in the gen_ens_prod source code.

* Per #3294, fix SonarQube issue.

* Per #3294, eliminate fixed length character array.

* Per #3294, tweak config_options.rst based on Michelle's feedback.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #3377, made changes to remove versions, change versions, add flags, and add libaec

* Per #3377, updated installation file to reflect upgraded versions and addition of the AEC library

* Per #3377 updated installation files changing version and adding LIB_LIBAEC

* Updating version number to 13.0.0

* Per #3377, removing references to freetype and cairo

* Fix comment formatting in compile_MET_all.sh

* Fix condition to compile LIBAEC instead of ZLIB
* #3373 Removed commented code

* #3373 Use normal string instead of F-string

* #3373 Updated a comment

* #3373 Simplify nested if

* #3373 Check if attrs is serializable

* #3373 Corrected typo

* #3373 Updtaed the return value from check_attrs

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #3370, update tc_rmw to check for analysis track when parse ATCF input files.

* Per #3370, add a new TC-RMW unit test to demonstrate running with a BEST track.

* Per #3370, small update to the TC-RMW docs.

* Per #3370, add best_technique to the TCRMW config file and update the User's Guide accordingly.

* Per #3370, update tc_rmw application code to parse and use best_technique and update the unit tests.

* Per #3370, move the TrackLines array from the TrackInfo class down into the TrackPoint class. This enables me to keep report the track lines point by point in the output of TC-RMW rather than only having them for the entire track.

* Per #3370, revise the search starting point in tc_rmw.cc.

* Per #3370, write a debug(2) summary message listing the number of track points used.

* Per #3370, fix SonarQube warning.

* Whitespace only

* Per #3370, solve many SonarQube findings in track_info.h and track_info.cc.

* Per #3370, squash a few more SonarQube issues.

* Per #3370, squash a few more SonarQube issues.

* Per #3370, fix one more SonarQube finding.

* Per #3370, clean up SonarQube issues in tc_rmw application code.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* remove sqlite env vars and add zlib env var so the compile script will install them

* turn on flag to compile sqlite

* Per #3389, update zlib and sqlite versions in the docs.

* skip installing bufr utils

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* Per #3387, add beta2 release notes.

* Per #3387, tweak wording
* Initial add of data type table.

* Changed all _LEAD column types from int to str

* Changed appropriate columns to regular expressions

* Added blurb to User's Guide

* Added name to  User's Guide author list

* Per #3384, update description of the column types.

---------

Co-authored-by: Lindsay Blank <lindsay.blank@fiqas-vps1.gsd.esrl.noaa.gov>
* Per #3396, refine logic in RPSInfo::set() to use centered probability bins based on the number of ensemble members.

* Per #3396, add 1 to the list of HiRA neighborhood sizes to confirm that it now works well.

* Per #3396, reduce some easy SonarQube findings.

* Per #3396, really only need to add the HiRA width of 1, not 3.

* Per #3396, work on the User's Guide docs.

* Per #3396, resolve SonarQube issue.

* Delete swap file.

* Per #3396, switch to METbaseimage:3.5-latest as the base image.

* Fix typo in Point-Stat docs.

* Per #3396, add details to the upgrade instructions to note the existing RPS output is modified by #3396.
* #3395 Removed MET_TEST_RSCRIPT

* #3395 Repalcing mgnc.R and mpnc.R

* #3395 Removed unused script and unit tests

* #3395 Removed unit_trmm2nc.xml and unit_plot_tc.xml

* #3395 Changed a R script to a python script

* #3395 Removed push origin  plot_tc and trmm2nc

* #3395 Used [[ notation (SonarQube)

* #3395 Updated EOL (Unix format)

* #3395 Corrected typo

* #3395 Added one more arg to check_size_and_return

* #3395 Removed shell scripts with MET_TEST_RSCRIPT

* #3395 Changed MET_PYTHON_BIN_EXE to MET_TEST_MET_PYTHON_EXE

* #3395 Added verbose_msg to reduce Cognitive Complexity

* #3395 Added line_break optionj to verbose_msg

* #3395 Added line_break option to verbose_msg

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #1518, add WindVectorInfo struct along with code to parse it.

* Per #1518, switch to WindMetadata struct name and parse it for the VarInfo base class.

* Per #1518, refine logic for checking wind metadata.

* Per #1518, don't need kinetic_energy_field_name config option. Instead, used a pre-defined hard-coded list of variable names to drive the derivation logic.

* Per #1518, update the VarInfo is_... functions throughout.

* Per #1518, lots of changes for handling wind deriviation in the base class. Next up are handling wind rotations and adding lots of tests.

* Per #1518, update function names, add a hook for rotate_winds(), and add long names and units for derived wind fields.

* Per #1518, improve level string handling for NetCDF files. When deriving winds, the level string needs to be wrapped in parenthesis based on the existing parsing logic.

* Per #1518, handle wind rotation in the Met2dDataFile base class rather than just the derived classes for GRIB1 and GRIB2.

* Per #1518, add hooks to derive kinetic energy, vorticity, and divergence. Still need to add the vorticity and divergence derivations and add new unit tests.

* Per #1518, back out hooks for deriving divergence and vorticity since they're non-trivial.

* Per #1518, refine logic slightly.

* Per #1518, update library code to assume NetCDF files (MET, WRF, and CF) contain earth-relative winds.

* Per #1518, patch logic in GRIB2 find_record_matches() to enable the pcp_combine -sum command to work again on precip data where name = APCP_03 while req_name = APCP.

* Per #1518, update call to read_data_plane() ci-run-unit

* Per #1518, siwitchtch from index_a/index_b/index_c to the more descriptive disc/pcat/pnum.

* Per #1518, update the grib table lookup to return a vector of matches.

* Correct TCDC to be TCC for GALWEM.

* Per #1518, add logic to check whether DataPlaneArray level values match.

* Per #1518, move call to rotate_winds() outside of process_data_plane(). We now have rotate_winds() for both DataPlane and DataPlaneArray inputs. And wind rotation is now handled AFTER the calls to process_data_plane().

* Per #1518, rotate_winds() should return true for non-wind vars.

* Per #1518, patch rotate_winds() logic for DataPlaneArray. ci-run-unit

* Per #1518, add back in calls to set the GRIB code after doing a table lookup.

* Per #1518, need to store the units parsed from the GRIB tables.

* Per #1518, delete accidentally committed swap file. ci-run-unit

* Per #1518, reverting logic in find_record_matches() back to what it was to make the unit tests happier. ci-run-unit

* Trying to eliminate testing workflow failures  ci-run-unit

* Per #1518, always read ConfigConstants before reading a config string.

* Per #1518, more tweaks to try get the unit tests to pass ci-run-unit

* Minor tweak

* Per #1518, add VarInfo::reset_dict_with_name() function and update read_wind_data() to call it. Hopefully that'll parse the wind component data better. ci-run-unit

* Per #1518, improve the read_wind_data() warning messages. ci-run-unit

* Per #1518, refined wind rotation log messages #ci-run-unit

* Per #1518, handle wind rotation before calling process_data_plane(). That's the order of the logic in the develop branch and changing it caused differences in the unit test output.

* Per #1518, update gen_ens_prod and ensemble_stat to clone the VarInfo object prior to reading data since deriving/rotating winds can affect the contents of the VarInfo object. ci-run-unit

* Per #1518, abandon VarInfo::set_earth_relative() since that logic wreaks havoc when processing paired VL1L2 winds. Use a VarInfo::clone() in read_wind_data() and nowhere else.

* Per #1518, refine log message formatting and update existing plots of U-wind from WRF to demonstrate use is_grid_relative=false and produce the same output as before.

* Per #1518, patch pcp_combine.cc read_field to read the -field config strings into a copy of the MetConfig object to avoid settings from one -field option from being passed along to the next one.

* Per #1518, log each wind rotation operation.

* Per #1518, move clone() operation up in the logic from read_wind_data() to the upstream derive_winds() and rotate_winds() functions. When deriving wind_direction, we need to know if the U and V components are grid or earth relative.

* More tweaks

* Per #1518, add unit_winds.xml to demonstrate the new functionality. ci-run-unit

* Start doc updates

* Per #1518, add logic to read_wind_data() when converting U to V or vice-versa try swapping the U's and V's and searching for that string first. Also update unit_winds.xml to no longer set u_wind_field_name and v_wind_field_name for a couple of fields.

* Per #1518, update docs about wind rotation.

* Per #1518, note config changes in the upgrade instructions.

* Try reverting from METbaseimage 3.5-latest back to 3.4-latest. The TC-Diag unit test fails in GHA when using 3.4-latest.

* Per #1518, don't need to specify u_wind_field and v_wind_field_name after adding the swap UV logic.

* Per #1518, solve 3 SonarQube findings.

* Per #1518, solve SonarQube findings in data_class.h/.cc.

* Per #1518, make GRIB table lookup functions const to satisfy SonarQube.

* Per #1518, solve more SonarQube findings.

* Per #1518, drive down more SonarQube findings to reduce the overall number of them relative to the develop branch.

* Per #1518, reduce 4 more SonarQube findings.

* Per #1518, add missing references to Error or Debug for handful of calls to mlog throughout the MET repo.

* Per #1518, refine the swap UV name logic so that it's only employed when the current field name setting matches the contents of what's in ConfigConstants. That way, it is NOT used when the user explicitly sets the field name.

* MetConfig doesn't need to be static

* Per #1518, switch VarInfo::clone() to return an std::unique_ptr() to satisfy SonarQube's complaints about calling new and delete.

* Per #1518, solve another SonarQube finding.

* Switch double to bool

* More SonarQube cleanup

* One more SonarQube issue

* Per #1518, update docs based on PR feedback.
* use 3.5 base image to test updates to tar files

* Added workflow dispatch input to override the MET base image tag to use for testing. Added logic to change the MET base image repo to append '-dev' if the tag name doesn't start with a number, assuming that the value has been overridden since the tags in the regular repos are always numeric

* TEMP: override MET base tag to test rhel ubi9 as base image

* move check to add '-dev' to MET base repo outside of block that is only run when running unit tests

* fix check for dev version of base image

* use rhel ubi9 syntax for updating/upgrading packages, use 3.5 base image by default

* skip package upgrade due to errors upgrading centos packages

* add additional lib directory to rpath

* switch back to base image 3.4 until issues can be resolved

* use met base tag from workflow dispatch instead of hard-coded branch
* #3381 Added radian_to_degree. Adjusted latitude between -90.0 and 90.0

* #3381 Added const to radian_to_degree

* #3381 Corrected missing semicolon

* #3381 Updtaed log message

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* #3406 Added var_info_nc.cc and var_info_nc.h

* #3406 Cleanup for SonarQube

* #3406 Better handling if a requested veriable does not exist

* #3406 Better handling if a requested veriable does not exist. Added get_real_dimension

* #3406 Added get_index_at_nc_data

* #3406 Separated the common codes to var_info_nc.cc and var_info_nc.h

* #3406 Collected the common codes and support negatiove value for slicing

* #3406 Resolved SonarQube findings

* #3406 Added missing semicolon

* #3406 Changed an offset 0 to a negative value

* Reurn false instead of excit when the requested variable does not exit

* #3406 Move the comment to the right place

* #3406 Separated get_real_dimension

* #3406 Continue for derived variable when the requested variable does not exist

* #3406 Hanlding negative offset

* #3406 Changed Error message to Warning

* #3406 Delete duplicated definition

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per METplus#3247, adding automated link checking in conjunction with new repo dtcenter/metplus-action-linkcheck

* Resolving error

* Per METplus#3247, add workflow dispatch to the linkcheck PR workflow too

* Per METplus#3247, combine workflows into one file

* Per METplus#3247, added upload-artifact

* Per METplus#3247, modified name and checkout version.

* Per METplus#3247, remove install-package as it is not needed here and is set to false by default.

* Trigger linkcheck run

* Per dtcenter/METplus#3247 fix 11 'Not Found' links in the MET documentation flagged by the new link checker GHA.

* Per dtcenter/METplus#3247, fix a handful more broken links.

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Signed-off-by: Vaibhav Srivastava <vaibhavsri1712@gmail.com>
* Per #3429, update the logic in the vx_statistics library and ensemble_stat to skip over observations when the observation error table lookup fails to find a matching entry.

* Per #3429, update the docs.

* Per #3429, add a new test in unit_ensemble_stat.xml to demonstrate bad observation error table lookups.

* Per #3429, use DESC = OBSERR to make the comparison between output files easier.
@github-project-automation github-project-automation Bot moved this to 🩺 Needs Triage in METplus-13.0 Development Sep 4, 2026
@JohnHalleyGotway JohnHalleyGotway moved this from 🩺 Needs Triage to 🏁 Done in METplus-13.0 Development Sep 4, 2026
@JohnHalleyGotway JohnHalleyGotway added this to the MET-13.0.0 milestone Sep 4, 2026
@JohnHalleyGotway
JohnHalleyGotway merged commit dc4f309 into develop-ref Sep 4, 2026
1 check passed
@sonarqubecloud

sonarqubecloud Bot commented Sep 4, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtcenter/metplus-action-linkcheck@v1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🏁 Done

Development

Successfully merging this pull request may close these issues.

Bugfix: Fix Ensemble-Stat to skip observations when the observation error table lookup fails