Skip to content

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented May 19, 2025

Adds 3 new output files, adds global attributes to TC-RMW output, and adds TrackLat_mean/TrackLon_mean variables to RMW-Analysis output.
Created by @JohnHalleyGotway

Howard Soh and others added 30 commits February 2, 2024 16:58
* Per #2395, add new columns to VL1L2, VAL1L2, and VCNT line types for wind direction statistics. Work still in progress.

* Per #2395, write the new VCNT columns to the output and document the additions to the VL1L2, VAL1L2, and VCNT columns.

* Per #2395, add the definition of new statistics to Appendix G.

* Per #2395, update file version history.

* Per #2395, tweak warning message about zero wind vectors and update grid-stat and point-stat to log calls to the do_vl1l2() function.

* Per #2395, refine the weights for wind direction stats, ignoring the undefined directions.

* Update src/tools/core/stat_analysis/aggr_stat_line.cc

* Update src/tools/core/stat_analysis/parse_stat_line.cc

* Update src/tools/core/stat_analysis/aggr_stat_line.cc
… broken the logic of the update_truth.yml GHA workflow. Instead of submitting a PR to merge develop into develop-ref directly, use an intermediate update_truth_for_develop branch.
* Per #2280, update to support probability threshold strings like ==8, where 8 is the number of ensemble members, to create probability bins centered on the n/8 for n = 0 ... 8.

* Per #2280, update docs about probability threshold settings.

* Per #2280, use a loose tolerance when checking for consistent bin widths.

* Per #2280, add a new unit test for grid_stat to demonstrate processing the output from gen_ens_prod.

* Per #2280, when verifying NMEP probability forecasts, smooth the obs data first.

* Per #2280, only request STAT output for the PCT line type to match unit_grid_stat.xml and minimize the new output files.

* Per #2280, update config option docs.

* Per #2280, update config option docs.
…ullptr

Feature 2673 sonarqube beta4 nullptr
…eturn

Feature 2673 sonarqube beta4 return
JohnHalleyGotway and others added 24 commits April 1, 2025 07:32
* Per #3059, add vx_ioda.h header file to the vx_ioda library.

* Per #3059, rename IODA-related classes from ioadReader/iodaMetadata/iodaHeaders to IODAReader/IODAMetadata/IODAHeaders.

* Per #3059, add vector<string> constructor for StringArray.

* Per #3059, migrate logic from ioda2nc.cc check_core_data() into IODAReader::validate_metadata() to make it accessible from pair_stat.

* Per #3059, update IODAReader to parse the requested variable/group names rather than handling it in the application code.

* Per #3059, work in progress adding IODA support to pair_stat.

* Per #3059, work in progress. Writing STAT output for IODA inputs but still need to populate the header columns in a sensical manner.

* Per #3059, update vx_ioda library to parse a global attribute reference time from input files and interpret it the same way as a model initialization time.

* Per #3059, update StatHdrInfo to track header entries using pair info instead of just STATLine inputs. Do still need some more work in the vx_stat_out library for Pair-Stat to avoid false alarm warning messages.

* Per #3059, update the point_pair_t struct to store the forecast lead time for each pair.

* Per #3059, pair_stat work in progress. Next, I need to keep track of the forecast lead time for each pair which will require changes to the PairBase class.

* Per #3059, update IODAReader::get_point_pairs() to handle empty strings.

* Per #3059, update PairDataPoint to store the lead time for each matched pair. Note that this feature is currently only used by Pair-Stat when processing IODA inputs where the forecast lead times can vary.

* Per #3059, update the default IODADataConfig metadata_map to read the station ID name from an input stationIdentifier variable name.

* Per #3059, update Pair-Stat to store header column values for IODA inputs and update the StatHdrInfo::get_shc() logic to not print a warning message if those header column values are manually defined.

* Per #3059, update expected pair_stat output file names.

* Per #3059, remove unused obs_window config option and add many time filtering options over from Stat-Analysis to Pair-Stat.

* Per #3059, add definitions for missing fcst/obs_init/valid_inc/exc configuration options.

* Per #3059, add write_css_hhmmss(const IntArray &) utility function.

* Per #3059, add, parse, and log time filtering options. Still need to actually apply those filters to the data though.

* Per #3059, filter input data by fcst/lead time, init time, and valid time.

* Per #3059, updating the read_ascii_mpr.py script to read the now 39 MPR input columns rather than the previous 37 number of them.

* Per #3059, update pair_stat to support -format python and add a unit test to demonstrate that functionality.

* Per #3059, fix typo in log message

* Per #3059, add climo_mean.regrid to the pair_stat config file and update unit_pair_stat.xml to test with IODA inputs with climo input.

* Per #3059, update read_climo.h/.cc to SET tTORE the grid read from the climo data. This is needed for pair_stat but the verification grid is already defined for all the other application code.

* Per #3059, update PairBase to allow the climo_pnt_info to be defined separately, which is needed for pair_stat."

* Per #3059, update ioda.cc to parse the timestamps from sample_hofx_output_sondes.nc4 correctly.

* Per #3059, update pair_stat application code to incorporate climo data.

* Per #3059, changes to address SonarQube bugs and (easily fixed) code smells flagged for PR #3114.

* Per #3059, complete documentation for the Pair-Stat tool.

* Per #3059, try to eliminate one more SonarQube code smell.

* Per #3059, squash a few more SonarQube code smells.

* Fix typo in appendixF.rst

* Update docs/Users_Guide/pair-stat.rst

Co-authored-by: Dan Adriaansen <dadriaan@ucar.edu>

* Update docs/Users_Guide/pair-stat.rst

Co-authored-by: Dan Adriaansen <dadriaan@ucar.edu>

* Update docs/Users_Guide/pair-stat.rst

Co-authored-by: Dan Adriaansen <dadriaan@ucar.edu>

* Per #3059, tweak Pair-Stat documentation based on PR feedback.

* Per #3059, fix the MPR Python embedding logic to read 37 columns prior to version 12 and 39 columns for version 12 and above.

* Per #3059, tweak processing logic for header columns. model and desc are set to an empty string in the config file by default, and those values should only be written to the output when they are set to a non-empty string.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
Co-authored-by: Dan Adriaansen <dadriaan@ucar.edu>
* Per #3100, version number and release notes updates for v12.1.0-beta2.

* Per #3100, tweaks to issue and pull request templates to reflect project board updates.

* Per #3100, update the MET flowchart for version 12.1.0

* Per #3100, fix inconsistent light green colors.

* Per #3100, copy updated flowchart into the user's guide directory.
* Per #2360, add info about running MET unit tests to Contributor's Guide and add scripts to help handle unit test input data for use in automated tests

* fix formatting

* Apply suggestions from code review

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

* fixed doc warning

* Apply suggestions from code review

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
* per #2794, add support for reading WRF subgrid natively

* resolve SQ

* Per #2818, add support for vertical levels found in WRF files: bio_emissions_dimension_stag, klevs_for_dvel, soil_layers_stag, seed_dim_stag. Clean up

* initial version of scripts to help update MET unit test data on web server to link with automation

* fix she-bang and clean up script

* update contrib guide info about updating unit test data

* resolve shell check warnings

* get real path to create symbolic links so the files will be visible on the web

* ignore files that are generated by building docs and CLion

* add info about how to run unit tests

* add unit test for reading WRF subgrid field

* per #2794, error if subgrid env var is set for projections that haven't been tested

* per #2794, add documentation about subgrid env var

* per #2794, add another test to ensure a field from the WRF Fire file that is not on the subgrid can be read properly

* refactor to resolve new SonarQube complaints

* more SQ refactor

* add parenthesis around level value

* fix SQ items
* #3125 Added --enable-profiler option

* #3125 Added --enable-profiler option

* #3125 Added --enable-profiler option

* #3125 Updated help messge for --enable-all

* Update compilation_options.yml to test that the `--enable-profiler` option compiles.

* Per #3125, remove commented out lines from conf from configure.ac and also refine --enable_all message since all changes much be made to configure.ac, not configure itself.

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* #3107 Added GribEntryMatch and APIs (is_eq, match, is_new_entry)

* #3107 Separated an exact match and partail match. Ignored multiple exact matches

* #3107 Fix the SonarQube findings

* #3107 FIx the SonarQube findings

* #3107 Fix the SonarQube findings

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
…o revise the email list and update the 'latest' link after each successful run.
* Per #3120, add OpenMP to the vx_regrid library.

* Per #3120, move call to init_openmp() into main.cc since it applies to most MET tools via regridding.

* Per #3131, enhance OMP_NUM_THREADS log message to print the number of threads that actually are available.

* Per #3131, set OMP_NUM_THREADS to 4 for GHA testing to make sure that parallelized regridding actually runs well and produces the expected output.
* Per #3119, updating Orion configuration file

* Per #3119, updating modulefile for Orion

* Per #3119, updating version of cmake on Orion

* Per #3119, update Casper file for Python 3.12

* Per #3119, updating Casper file for Python 3.12

* Per #3119, updating compiler for Orion

* Updating hera file for Python 3.12

* Per #3119, updating hera file for Python 3.12

* Per #3119, update jet file for Python 3.12

* Per #3119, update jet file for Python 3.12

* Per #3119, adding files for WCOSS2 installations

* Per #3119, removing MET_PYTHON_EXE reference

* Per #3119, removing MET_PYTHON_EXE reference

* Per #3119, updating bufr to 11.6.0 in accordance with installation config file
* #3112 Removed the number of dimensions. Exit if not found a data variable

* #3112 Corrected a log message

* #3112 FIxed a bug with a index and cleanup

* #3112 Added a unit test for 5 dimensional data variable

* #3112 Fixed a bug with a index. Cleanup

* #3112 Resolved SonarQube finding

* #3112 Resolved SonarQUbe findings

* #3112 SonarQube findings: added const

* #3112 Roll back nc_utils

* #3112 Resolved SOnarQube findins

* #3112 Used @ notation for time

---------

Co-authored-by: Howard Soh <hsoh@seneca.rap.ucar.edu>
* Per #3120, add OpenMP to the vx_regrid library.

* Per #3120, move call to init_openmp() into main.cc since it applies to most MET tools via regridding.

* Per #3131, enhance OMP_NUM_THREADS log message to print the number of threads that actually are available.

* Per #3132, add new DataPlane::set_times() member function and call it in the vx_regrid library to avoid duplication.

* Per #3132, one more call to Dao DataPlane::set_times()

* Per #3132, add OpenMP to data_plane.cc and reimplement DataPlaneArray using stl::vector's instead of manual memory management. This required introducing a DataPlaneArray::at(int) accessor function. Modify some library and application code to get things compiling.

* Per #3132, update testing.yml workflow to run using 4 threads.

* Per #3132, updates to vx_util to call OpenMP.

* Per #3132, do not parallelize for loops that add values to vectors, like apply_mask(). Doing so produced a Grid-Stat runtime failure.

* Per #3132, try setting OMP_NUM_THREADS to 4 in test_env_vars.sh to run all GHA tests more efficiently.

* Per #3131, set OMP_NUM_THREADS to 4 for GHA testing to make sure that parallelized regridding actually runs well and produces the expected output.

* Per #3132, remove OpenMP from DataPlane::convert() since it causes a runtime segfault in the unit_regrid.xml unit test.

* Per #3132, do not parallelize loops that compute min/max values or ones that include break statements.

* Per #3132, add -j argument when compiling MET in Docker to speed up the compilation.

* Per #3132, realized that -j was already being set in development.docker.

* Per #3132, fix parallelization logic in rescale_probability() and fitwav_1d().

* Per #3132, update the OMP_NUM_THREADS handling logic to reset <= 0 to the maximum number of available threads. ci-run-unit

* Per #3132, roll back the support for setting OMP_NUM_THREADS <= 0, since that triggers a failure when ncdiff is used to compute differences: libgomp: Invalid value for environment variable OMP_NUM_THREADS ... ci-run-unit

* Per #3132, fix parallelization of the distance_map() utility and update unit_met_test_scripts.xml to add missing expected output file names. ci-run-unit

* Per #3132, update DataPlane::n_good_data() parallelization to use reduction(+:n) to avoid race conditions updating the counter. ci-run-unit

* Per #3132, parallelize DataPlane::data_range() function

* Merging develop into feature_3132_openmp_vx_util

* Per #3132, some easy changes to drive down the overall number of SonarQube code smells.
* Per #3120, add OpenMP to the vx_regrid library.

* Per #3120, move call to init_openmp() into main.cc since it applies to most MET tools via regridding.

* Per #3131, enhance OMP_NUM_THREADS log message to print the number of threads that actually are available.

* Per #3132, add new DataPlane::set_times() member function and call it in the vx_regrid library to avoid duplication.

* Per #3132, one more call to Dao DataPlane::set_times()

* Per #3132, add OpenMP to data_plane.cc and reimplement DataPlaneArray using stl::vector's instead of manual memory management. This required introducing a DataPlaneArray::at(int) accessor function. Modify some library and application code to get things compiling.

* Per #3132, update testing.yml workflow to run using 4 threads.

* Per #3132, updates to vx_util to call OpenMP.

* Per #3132, do not parallelize for loops that add values to vectors, like apply_mask(). Doing so produced a Grid-Stat runtime failure.

* Per #3132, try setting OMP_NUM_THREADS to 4 in test_env_vars.sh to run all GHA tests more efficiently.

* Per #3131, set OMP_NUM_THREADS to 4 for GHA testing to make sure that parallelized regridding actually runs well and produces the expected output.

* Per #3132, remove OpenMP from DataPlane::convert() since it causes a runtime segfault in the unit_regrid.xml unit test.

* Per #3132, do not parallelize loops that compute min/max values or ones that include break statements.

* Per #3132, add -j argument when compiling MET in Docker to speed up the compilation.

* Per #3132, realized that -j was already being set in development.docker.

* Per #3132, fix parallelization logic in rescale_probability() and fitwav_1d().

* Per #3132, update the OMP_NUM_THREADS handling logic to reset <= 0 to the maximum number of available threads. ci-run-unit

* Per #3132, roll back the support for setting OMP_NUM_THREADS <= 0, since that triggers a failure when ncdiff is used to compute differences: libgomp: Invalid value for environment variable OMP_NUM_THREADS ... ci-run-unit

* Per #3132, fix parallelization of the distance_map() utility and update unit_met_test_scripts.xml to add missing expected output file names. ci-run-unit

* Per #3132, update DataPlane::n_good_data() parallelization to use reduction(+:n) to avoid race conditions updating the counter. ci-run-unit

* Per #3132, parallelize DataPlane::data_range() function

* Merging develop into feature_3132_openmp_vx_util

* Per #3132, some easy changes to drive down the overall number of SonarQube code smells.

* Per #3140, first attempt at parallelizing for loop

* Per #3140, adding parallelization to multiple for loops

* Per #3140, adding initial parallelization to the first eight loops

* Per #3140, adding parallelization to five more loops

* Per #3140, removed some parallelized loops and added parallelization for others

* Per #3140, added extraneous white space character in comment in order to add ci-run-unit to the commit message

* Per #3140, removing parallelizations where minimum distances are being computed to hopefully resolve differences, ci-run-unit

* Per #3140, adding back parallelizations where local minimums are computed

* Per #3140, corrected variables declared as private and shared and remove erroneous variable listed, ci-run-unit

* Per #3140, adding use of collapse and modifying formatting for consistency, ci-run-unit

* Per #3140, declaring variables on their own line and reducing the scope of variables as much as possible, ensure no differences ci-run-unit

* Per #3140, resolve SonarQube's request to Add the 'static' storage specifier to this declaration.

* Per #3140, resolve easy SonarQube code smells

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: Julie Prestopnik <jpresto@seneca.rap.ucar.edu>
* Per #3120, add OpenMP to the vx_regrid library.

* Per #3120, move call to init_openmp() into main.cc since it applies to most MET tools via regridding.

* Per #3131, enhance OMP_NUM_THREADS log message to print the number of threads that actually are available.

* Per #3132, add new DataPlane::set_times() member function and call it in the vx_regrid library to avoid duplication.

* Per #3132, one more call to Dao DataPlane::set_times()

* Per #3132, add OpenMP to data_plane.cc and reimplement DataPlaneArray using stl::vector's instead of manual memory management. This required introducing a DataPlaneArray::at(int) accessor function. Modify some library and application code to get things compiling.

* Per #3132, update testing.yml workflow to run using 4 threads.

* Per #3132, updates to vx_util to call OpenMP.

* Per #3132, do not parallelize for loops that add values to vectors, like apply_mask(). Doing so produced a Grid-Stat runtime failure.

* Per #3132, try setting OMP_NUM_THREADS to 4 in test_env_vars.sh to run all GHA tests more efficiently.

* Per #3131, set OMP_NUM_THREADS to 4 for GHA testing to make sure that parallelized regridding actually runs well and produces the expected output.

* Per #3132, remove OpenMP from DataPlane::convert() since it causes a runtime segfault in the unit_regrid.xml unit test.

* Per #3132, do not parallelize loops that compute min/max values or ones that include break statements.

* Per #3132, add -j argument when compiling MET in Docker to speed up the compilation.

* Per #3132, realized that -j was already being set in development.docker.

* Per #3132, fix parallelization logic in rescale_probability() and fitwav_1d().

* Per #3132, update the OMP_NUM_THREADS handling logic to reset <= 0 to the maximum number of available threads. ci-run-unit

* Per #3132, roll back the support for setting OMP_NUM_THREADS <= 0, since that triggers a failure when ncdiff is used to compute differences: libgomp: Invalid value for environment variable OMP_NUM_THREADS ... ci-run-unit

* Per #3132, fix parallelization of the distance_map() utility and update unit_met_test_scripts.xml to add missing expected output file names. ci-run-unit

* Per #3134, parallelize 4 loops in the vx_data2d library.

* Per #3134, parallelize 4 loops in the vx_nc_util library.

* Per #3134, parallelize 2 loops in the vx_series_data library.

* Per #3132, update DataPlane::n_good_data() parallelization to use reduction(+:n) to avoid race conditions updating the counter. ci-run-unit

* Per #3134, work in progress for the vx_statistics library. ci-run-unit

* Per #3134, update omp logic in series_pdf.cc to define a reduction for incrementing counts in vector<long long>. Note that no diffs were noted on seneca with OMP_NUM_THREADS > 1, but when run on 4 threads via GHA, we did get a slight reduction in the PDF counts. Need to confirm that this reduction actually fixes the problem via GHA. ci-run-unit

* Per #3134, attempt to parallelize compute_cntinfo(). ci-run-unit

* Per #3134, fix bug when computing MAD for the CNT line type.

* Per #3132, parallelize DataPlane::data_range() function

* Per #3134, unit_pair_stat.xml and unit_point_weight.xml were missing from the nightly build unit_test.sh script. Adding them in here.

* Per #3134, parallelize vx_statistics

* Per #3134, add some paralleization in pair_data_point.cc

* Per #3134, parallelized engine.cc, but still need to work on shapedata.cc and interest.cc.

* Per #3134, do not parallelize loops that use the random number generator since that prevents repeatable results.

* Per #3134, delete accidentally committed temp file. ci-run-unit

* Per #3134, revert indexing of the weight back to i, rather than j, to produce repeatable results. It's still not clear to me which one is correct.

* Per #3134, update the differencing logic to replace numbers < 1.0e-10 with 0 prior to checking for diffs.

* Per #3134, test to see if we can get rid of the SP_CORR difference flagged by GHA. ci-run-unit

* Per #3134, re-enable parallelization when computing sums for SP_CORR, but tweak the compute_corr() logic when checking for divide by 0 to use the loose (10e-5) tolerance instead of the default tight (10e-10) tolerance. ci-run-unit

* Merging develop into feature_3132_openmp_vx_util

* Per #3134, back out parallelization of the SP_CORR loop since it triggers differences in the unit test output SP_CORR and PR_CORR being computed as 0 vs NA. I tried a couple times to address them, but nothing worked.

* Per #3132, some easy changes to drive down the overall number of SonarQube code smells.

* Per #3134, add OpenMP to several spots in the vx_shapedata library and replace dynamically allocated memory with STL vectors where convenient. ci-run-unit

* Per #3134, consistent formatting.

* Per #3134, consistent formatting.

* Per #3134, fix bug in the ShapeData select() utility function. ci-run-unit

* Per #3134, fix a couple of bugs that were causing diffs in the unit test output. ci-run-unit

* Per #3134, reimplement Cell and Partition classes more simply using STL vectors.

* Per #3134, don't need omp.h include here.

* Per #3134, suppress detailed MODE log messages in total_interest() when running on multiple threads to avoid gd garbled log messages.

* Per #3134, fix copmilation error.

* Per #3134, add a new compilation option test to make sure the code compiles with --disable-openmp. ci-run-unit

* Per #3134, reimplement FcsObsSets with STL vectors.

* Per #3134, cleanup of set.h and set.cc but switching to vectors causes diffs. So I stopped short of that. ci-run-unit

* Per #3134, many small changes to resolve the easy SonarQube bugs and code smells. ci-run-unit

* Per #3134, squash one more SonarQube code smell.

* Per #3134, squash one more easy SonarQube code smell

* Per #3134, get rid of more dynamically allocated memory.

* Per #3134, add collapse(2) for OpenMP where possible and consistently specify schedule(static).

* Per #3134, found 4 more nested loops to collapse for OpenMP.

* Per #3134, fix typo and spacing in MODE log messages.

* Per #3134, after careful testing I realized that the alloc inc values of 500 for the Cell and Partition classes are needed to keep MODE running quickly. Also declare each local variable on its own line for SonarQube.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* use custom GitHub Action to trigger METplus use cases

* Updating values

* Bugfix #3020 main_v12.0 grid_stat_seeps (#3022)

* Per #3020, add missing GridStatNcOutInfo::do_seeps flag and use it to determine if SEEPS information should be written to the Grid-Stat NetCDF matched pairs output file.

* Unrelated to #3020, fix broken NetCDF cf-conventions links in the User's Guide.

* Per #3020, no real changes. Just whitespace

* Update to reflect usage of oneAPI compilers

* Updating file to reflect usage of oneAPI compilers

* Hotfix to the main_v12.0 branch after PR #3022 fixed a SEEPS bug. The GridStatConfig_SEEPS config file needs to be updated with nc_pairs_flag.seeps = TRUE in order for the same output to be produced by the unit tests.

* Adding In Memoriam

* Feature #3032 main_v12.0 docs data type (#3040)

* Per #3032, add data type column to all of the output tables

* Per #3032, remove the first row from each output table since its info is repeated from the table name. Additional changes for consistency and accuracy in column names.

* Update docs/Users_Guide/gsi-tools.rst

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

---------

Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>

* Making a superficial change in the main_v12.0 branch to trigger GHA to create and push an updated test output image.

* Feature #3033 v12.0.0 (#3042)

* Per #3033, update version info, consolidate release notes, and add upgrade instructions.

* Per #3033, remove all instances of 'Bugfix: ' from the release notes since it's redundant with the dropdown name

* Per #3030, based on request from Randy Pierce, also add MTD header columns to met_header_columns_v12.0.txt to make it easier to parse the output from MET.

* Per #3033, fix typo and correct alignment in table

* Update install_met_env.acorn

Removing reference to beta version

* Update install_met_env.cactus

Remove references to beta version

* Update install_met_env.cactus

Update paths for eckit and atlas

* Update install_met_env.wcoss2

Remove beta references

* initial YAML config file used to perform benchmarking on METplus use cases

* initial version of code used to run use case on MET that has CTRACK macro enables

* Fix typo, missing one * to make SciPy bold in appendixF.rst

* Add support to run the use case multiple times, based on the num_runs setting in the yaml config file

* Add support for determining the path where the YAML file is located

* Allow a list of wrapper config files, create subdirectories named after use case config files, add more assertion checks

* Add list to wrapper config file

* Per #3051, update unit tests so that installed files are found relative to MET_BASE (<install_loc>/share/met) and other files that are only in the MET repo are found relative to MET_TEST_BASE (MET/internal/test_unit). Also remove MET_BUILD_BASE env var (#3052)

* Removed incorrectly placed asserts and fixed incorrect comment

* Fixed assertion that checks output file size

* Remove assert in check, checking for a single config file when a list is expected.

* clean up comments, mv summary_output.txt and detail_output.txt files after finishing, format the information file

* Removed option to save output as csv, tabular or both.  Both formats are saved.

* Fixed name of config file

* Fix the command to get the directory where the script has been invoked

* Incorrectly passing in the use case path instead of name into generate_info()

* copy rather than move the summary and detail files generated by CTRACK

* Modified to write summary and detail information to files

* using CTRACK macro

* using CTRACK macro to benchmark code

* Use CTRACK macro to perform benchmarking

* Updated to address seg fault when running

* Fixes to address seg fault when running the tool

* Create README.md

first version

* Added call to ctrack to write out results in the "main" function met_main()

* ctrack updated to write summary and details to files

* Update README.md

added reminder to add 
    ctrack::result_print();
to ensure the summary and detail files are written

* CTRACK include file

* Removed hard-coded paths and replaced output_path with benchmark_output_path to separate output from METplus Use case output

* Clean up parsing yaml config, read the benchmark_output_path in YAML instead of output_path

* Write out ctrack information to files

* Write out ctrack results to files

* Update README.md

Finished description of settings in YAML config

* Update README.md

update to instructions- yaml config file doesn't need to be specified at the command line

* Adding support to read in updates to YAML file to allow running MET command

* Replace latest_benchmark.yaml with benchmark.yaml

* Added config support for specifying running MET directly

* Removed remaining reference to latest_benchmark.yaml

* Added setting for specifying a subdirectory to save output when running via MET

* Refactoring the code for running usecases and adding support for running MET directly

* fixed indentation error

* Remove CTRACK macro and include

* Removing ctrack header to move to vx_util

* Remove CTRACK macro and include

* Removed and placed under the vx_util directory

* Added ctrack include, use macro for pre- and post-processing functions

* Add the CTRACK benchmarking tool

* Update checking and saving information to be generic and support running via METplus wrappers or MET directly

* Modify check_settings to check settings for running use cases or running MET directly

* Instrument with CTRACK macro for benchmarking

* Support setting a description (optional) which will appear in the information file

* Include instructions to save the benchmarking summary and detail information to files

* Fix setting name from met_cmd to met_command to match what is in the YAML file

* Pass MET command as detail into the info.txt file

* Convert full_subdir_path to string

* Pass in the full subdir path to extract_summary_info and extract_detail_info to get correct behavior

* Make the MET final output subdirectory (where consolidated files go) if it doesn't exist

* Remove call to printing the ctrack report to file

* Fix input to generate_info: replace "met_command" with met_command

* Add the METPLUS_ environment information to the information text file when running the MET command directly

* set additional text to None if there is no additional information (i.e. use case run)

* Fixed order for generate_info args inside run_met_cli

* Add the values of the METplus ENV vars used in run_met_cli

* Removed conflict

* Updates added for running MET commands

* Adding constants for time units.  This will be used when calculating the mean metric when multiple runs are performed for stress-testing.

* Latest updates to first iteration of the benchmarking tool

* Clean up of format and instructions

* Clean up some grammar

* Fix some formatting of code snippets

* Code snippets cannot have any italics or bold text

* Still have issues with formatting code snippets

* New lines not being kept in code

* more experimentation with formatting code snippet

* Remove special characters around code snippet

* more experimenting with additional newlines to format code

* Removed all code block syntax and use only newlines and indentation to format code blocks

* Re-arrange instructions for printing reports

* Update ensemble_stat.cc

Add the code to met_main() to save the CTRACK metrics

* Added ifdef WITH_PROFILER for turning on CTRACK at compile time

* Instrument code for benchmarking with CTRACK

* Adding documentation for running the code profiler used in benchmarking

* updated for use in the Contributor's Guide

* Moved content to the Contributor's Guide

* Replaced formatting and cleaned up content

* Clean up some formatting used by the README.md but incompatible with RST

* Added missing information for environments for running MET commands, cleaned up formatting

* Rearrange some text for clarity

* Fixed the introduced conflicts from earlier pull

* Reorganized to reduce clutter and redundant content.

* Added clarification to Compile MET code section

* Replace the 'r' in the regex compile that was somehow removed

* Open the summary_out.txt and detail_out.txt files with append to prevent clobbering metrics when switching from profiling functions from different files.

* Fixed merging of summary and detail data to ensure the matching file/function/lines are merged.

* Renamed new index to profiling_index for clarity

* Updates with information about the num_runs setting and where the summary and detail files are moved.

* Removing, the correct version is located in the MET/internal/scripts/benchmark directory

* Inadvertently added but not relevant information for this commit

* No longer necessary, this information is in the Contributor's Guide and developers automatically refer to the ReadTheDocs documentation.

* Delete summary_output.txt

should not be in source code

* Delete detail_output.txt

output should not be included with the source code

* Delete internal/scripts/benchmark/summary_output.txt

output should not be included with source code

* Delete internal/scripts/benchmark/detail_output.txt

output should not be included in the source code

* Update system.conf

remove hard-coded values

* Delete internal/scripts/benchmark/constants.py

not used for this code

* Update benchmark.yaml

num_of_runs should match instructions in the Contributor's Guide

* Delete internal/scripts/benchmark/ctrack.hpp

Correct location is in the src/basic/vx_util directory

* Update example_MET.yaml

remove hard-coded paths and set the num_of_runs to 1 to match instructions in documentation

* Update example_usecase.yaml

remove hard-coded values and set the num_of_runs to 1 to be consistent with instructions

* Output files should not be included with source code

* update to version in the develop branch

* Revert to version in develop, undoing whitespace changes

* Revert to version in develop branch, eliminating whitespace changes

* Reduced the number of profiling points to just the two major top level methods

* Per #3065, fix scripts/Makefile to ignore ENABLE_PROFILER when determining which tests to run.

* Update code_profiling.rst

No more error message during make test. Update comiler section accordingly

* Update docs/Contributors_Guide/code_profiling.rst

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

* Update docs/Contributors_Guide/code_profiling.rst

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

---------

Co-authored-by: George McCabe <23407799+georgemccabe@users.noreply.github.com>
Co-authored-by: Julie Prestopnik <jpresto@ucar.edu>
Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
Co-authored-by: davidalbo <dave@ucar.edu>
Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
* Per #3099, enhance PB2NC to write units and descriptions for the 9 variable types that it can derive from PrepBUFR input files.

* Per #3099, fix typo.
* Per #3120, add OpenMP to the vx_regrid library.

* Per #3120, move call to init_openmp() into main.cc since it applies to most MET tools via regridding.

* Per #3131, enhance OMP_NUM_THREADS log message to print the number of threads that actually are available.

* Per #3132, add new DataPlane::set_times() member function and call it in the vx_regrid library to avoid duplication.

* Per #3132, one more call to Dao DataPlane::set_times()

* Per #3132, add OpenMP to data_plane.cc and reimplement DataPlaneArray using stl::vector's instead of manual memory management. This required introducing a DataPlaneArray::at(int) accessor function. Modify some library and application code to get things compiling.

* Per #3132, update testing.yml workflow to run using 4 threads.

* Per #3132, updates to vx_util to call OpenMP.

* Per #3132, do not parallelize for loops that add values to vectors, like apply_mask(). Doing so produced a Grid-Stat runtime failure.

* Per #3132, try setting OMP_NUM_THREADS to 4 in test_env_vars.sh to run all GHA tests more efficiently.

* Per #3131, set OMP_NUM_THREADS to 4 for GHA testing to make sure that parallelized regridding actually runs well and produces the expected output.

* Per #3132, remove OpenMP from DataPlane::convert() since it causes a runtime segfault in the unit_regrid.xml unit test.

* Per #3132, do not parallelize loops that compute min/max values or ones that include break statements.

* Per #3132, add -j argument when compiling MET in Docker to speed up the compilation.

* Per #3132, realized that -j was already being set in development.docker.

* Per #3132, fix parallelization logic in rescale_probability() and fitwav_1d().

* Per #3132, update the OMP_NUM_THREADS handling logic to reset <= 0 to the maximum number of available threads. ci-run-unit

* Per #3132, roll back the support for setting OMP_NUM_THREADS <= 0, since that triggers a failure when ncdiff is used to compute differences: libgomp: Invalid value for environment variable OMP_NUM_THREADS ... ci-run-unit

* Per #3132, fix parallelization of the distance_map() utility and update unit_met_test_scripts.xml to add missing expected output file names. ci-run-unit

* Per #3134, parallelize 4 loops in the vx_data2d library.

* Per #3134, parallelize 4 loops in the vx_nc_util library.

* Per #3134, parallelize 2 loops in the vx_series_data library.

* Per #3132, update DataPlane::n_good_data() parallelization to use reduction(+:n) to avoid race conditions updating the counter. ci-run-unit

* Per #3134, work in progress for the vx_statistics library. ci-run-unit

* Per #3134, update omp logic in series_pdf.cc to define a reduction for incrementing counts in vector<long long>. Note that no diffs were noted on seneca with OMP_NUM_THREADS > 1, but when run on 4 threads via GHA, we did get a slight reduction in the PDF counts. Need to confirm that this reduction actually fixes the problem via GHA. ci-run-unit

* Per #3134, attempt to parallelize compute_cntinfo(). ci-run-unit

* Per #3134, fix bug when computing MAD for the CNT line type.

* Per #3132, parallelize DataPlane::data_range() function

* Per #3134, unit_pair_stat.xml and unit_point_weight.xml were missing from the nightly build unit_test.sh script. Adding them in here.

* Per #3134, parallelize vx_statistics

* Per #3134, add some paralleization in pair_data_point.cc

* Per #3134, parallelized engine.cc, but still need to work on shapedata.cc and interest.cc.

* Per #3134, do not parallelize loops that use the random number generator since that prevents repeatable results.

* Per #3134, delete accidentally committed temp file. ci-run-unit

* Per #3134, revert indexing of the weight back to i, rather than j, to produce repeatable results. It's still not clear to me which one is correct.

* Per #3134, update the differencing logic to replace numbers < 1.0e-10 with 0 prior to checking for diffs.

* Per #3134, test to see if we can get rid of the SP_CORR difference flagged by GHA. ci-run-unit

* Per #3134, re-enable parallelization when computing sums for SP_CORR, but tweak the compute_corr() logic when checking for divide by 0 to use the loose (10e-5) tolerance instead of the default tight (10e-10) tolerance. ci-run-unit

* Merging develop into feature_3132_openmp_vx_util

* Per #3134, back out parallelization of the SP_CORR loop since it triggers differences in the unit test output SP_CORR and PR_CORR being computed as 0 vs NA. I tried a couple times to address them, but nothing worked.

* Per #3132, some easy changes to drive down the overall number of SonarQube code smells.

* Per #3134, add OpenMP to several spots in the vx_shapedata library and replace dynamically allocated memory with STL vectors where convenient. ci-run-unit

* Per #3134, consistent formatting.

* Per #3134, consistent formatting.

* Per #3134, fix bug in the ShapeData select() utility function. ci-run-unit

* Per #3134, fix a couple of bugs that were causing diffs in the unit test output. ci-run-unit

* Per #3134, reimplement Cell and Partition classes more simply using STL vectors.

* Per #3134, don't need omp.h include here.

* Per #3134, suppress detailed MODE log messages in total_interest() when running on multiple threads to avoid gd garbled log messages.

* Per #3134, fix copmilation error.

* Per #3134, add a new compilation option test to make sure the code compiles with --disable-openmp. ci-run-unit

* Per #3134, reimplement FcsObsSets with STL vectors.

* Per #3134, cleanup of set.h and set.cc but switching to vectors causes diffs. So I stopped short of that. ci-run-unit

* Per #3134, many small changes to resolve the easy SonarQube bugs and code smells. ci-run-unit

* Per #3134, squash one more SonarQube code smell.

* Per #3134, squash one more easy SonarQube code smell

* Per #3134, get rid of more dynamically allocated memory.

* Per #3134, add collapse(2) for OpenMP where possible and consistently specify schedule(static).

* Per #3134, found 4 more nested loops to collapse for OpenMP.

* Per #3134, fix typo and spacing in MODE log messages.

* Per #3145, add OpenMP to two loops over the grid dimensions in Grid-Stat.

* Per #3145, add OpenMP to one loop in Series-Analysis.

* Per #3145, add openmp to 13 grid loops in mode.

* Per #3134, after careful testing I realized that the alloc inc values of 500 for the Cell and Partition classes are needed to keep MODE running quickly. Also declare each local variable on its own line for SonarQube.

* Per #3145, add openmp

* Per #3145, rather than parallelize the loop, write the DataPlane data directly.

* Per #3145, parallelize one loop and eliminate another.

* Per #3145, add OpenMP to 2 loops and eliminate 2 others.

* Per #3145, eliminate one loop over grid dimensions.

* Per #3134, eliminate one loop by writing the DataPlane directly.

* Per #3145, parallelize one loop.

* Per #3145, parallelize 4 loops. Could also do track_counts().

* Per #3145, just whitespace fixes.

* Per #3145, changes to satisfy SonarQube recommendations.

* Per #3145, remove OpenMP from combine_boolplanes.cc since is caused a segfault when BoolCalc::run() was called.

* Remove extra comment.

* Per #3145, revert gen_climo_bin back to what it was since I can't test it.

* Per #3145, updating logic for writing DataPlane objects as floats and integers to NetCDF output files. Just casting using (float *) or (int *) did NOT work. Instead, provide utility functions in vx_nc_util and update the application code to call those utility functions.

* Per #3145, fix compilation error

* Per #3145, solve a few more SonarQube issues.

* Per #3145, fix a few more SonarQube code smells.

* Per #3145, need to call set_n_pairs() to fix diffs flagged in the MODE_CTS TOTAL output column.

* Per #3145, two more calls to put_nc_data_plane_float().

* Per #3145, add omp for statement missing from tc_dland.cc.

* Per #3145, call common library function to write DataPlane to NetCDF output file.

* Per #3145, add more parallelization to wavelet_stat

* Per #3159, fix a reduction in one loop, parallelize a few more, and get rid of some dynamically allocated memory.

* Per #3145, updating run_unit_tests.sh to print the OMP_NUM_THREADS setting as there was some uncertainty about what's actually be used by GitHub.

* Per #3145, get rid of spurious comment.

* Per #3145, fix SonarQube bugs and reduce code smells in wavelet_stat.cc.

* Per #3145, another round of SonarQube remediation for wavelet_stat.cc.

* Per #3145, updating the OMP_NUM_THREADS documentation for verison 12.1.0.

* Per #3145, tweak wording and formatting.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
…ripts to ensure the latest link is properly updating.
* Per #3149, clean up formatting and add link to check format

* Per #3149, setting up first round of links

* Per #3149, setting up second round of links

* Per #3149, finishing links

* Per #3149, fixing eror

* Per #3149, make formatting consistent with config_options.rst

* Per #3149, removing link to gradient

* Per 3149, make capitalization of header consistent

* Unrelated to #3149, but some minor changes to all the documentation .rst files to delete trailing whitespace.

* Per #3149, remove extra spaces to inline code formatting in a couple spots.

* Per #3149, as discussed over Slack with Julie, all of the """ sections are not numbered. In places of that, add a meaningful prefix to their section name to define the context. We did consider adding numbering all the way down to that level, but preferred modified the titles to over-numbering.

---------

Co-authored-by: John Halley Gotway <johnhg@ucar.edu>
* Per #3096, update string_array.h/.cc to reduce Intel OneAPI compiler warnings and SonarQube code smells.

* Per #3096, add support for specifying range/azimuth grid strings and document the details in Appendix B.

* Per #3096, update the vx_data2d_nc_met library code the handle both the tc_rmw and tc_diag conventions for writing Range/Azimuth time and location information.

* Per #3096, consistent spacing and remove some unused variables

* Per #3059, update vx_data2d_nc_met library to read TrackLat_mean and TrackLon_mean from the NetCDF output of RMW-Analysis.

* Per #3059, refine spacing and log messages written from RMW-Analysis. Also, update it to write the TrackLat_mean and TrackLon_mean location information.

* Per #3096, update MET library code to read and write range/azimuth grids to/from NetCDF output files.

* Per #3096, update unit_tc_rmw.xml to demonstrate that plot_data_plane can read the range/azimuth NetCDF output generated by grid_stat.

* Per #3096, add plot title.

* Per #3096, replace snprintf with fixed lenght character arrays with calls to ConcatString::format(...) to reduce SonarQube code smells.

* Per #3096, replace snprintf with fixed length character arrays with calls to ConcatString::format(...) in the vx_grid library to reduce SonarQube code smells.

* Per #3096, the ENUM_TO_STRING functionality in Makefile.am was not working as expected because of extra leading spaces. This corrects that issue so that all of the *_to_string.h/.cc files are removed by make clean when configured with true set.

* Per #3096, update wwmca_tool/Makefile.am to use the ConcatString output option for ENUM_TO_STRING for gridhemisphere_to_string.h/.cc and modify the application code to handle the change.

* Per #3096, may changes throughout the codebase to switch from formatting strings using snprintf() with fixed length character arrays to using the ConcatString::format(...) option to reduce the number of SonarQube code smells.

* Per #3096, one more removal of fixed width character array.

* Per #3096, eliminate more fixed length character arrays.

* Per #3096, more elmination of fixed-length character arrays.

* Per #3096, reduce more SonarQube code smells and also add a draft TC-RMW call to Series-Analysis that isn't quite working yet.

* Per #3096, unset MET_DEVELOPMENT so that enum_to_string output won't be removed.

* Per #3096, fix 2 parsing bugs.

* Per #3096, add back in time_string(...) function but writing to a ConcatString to avoid diffs.

* Per #3096, update tc_rmw and rmw_analysis to write common global attributes about the command used to generate the file.

* Per #3096, update Series-Analysis to handle range/azimuth regridding logic, enable a call to Series-Analysis in unit_tc_rmw.xml, and tweak its configuration.

* Per #3096, print warning message about unsupported @value notation in the vx_data2d_nc_met library.

* Per #3096, fix typo in unit_tc_rmw.xml and drive down SonarQube code smells.

* Per #3096, add support for and documentation of passing range/azimuth grids via python embedding.

---------

Co-authored-by: MET Tools Test Account <met_test@seneca.rap.ucar.edu>
@JohnHalleyGotway JohnHalleyGotway added this to the MET-12.1.0 milestone May 19, 2025
@github-project-automation github-project-automation bot moved this to 🩺 Needs Triage in METplus-6.1 Development May 19, 2025
@JohnHalleyGotway JohnHalleyGotway moved this from 🩺 Needs Triage to 🏁 Done in METplus-6.1 Development May 19, 2025
@JohnHalleyGotway JohnHalleyGotway merged commit 83cdffc into develop-ref May 19, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: 🏁 Done
Development

Successfully merging this pull request may close these issues.

Enhance the MET tools to fully support writing gridded range/azimuth data to NetCDF output files