Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[develop] Add smoke and dust verification #1174

Open
wants to merge 274 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
274 commits
Select commit Hold shift + click to select a range
8e8a1c1
Increase default wallclock time for get_obs_ccpa tasks since they're …
gsketefian Jul 28, 2024
a34d993
For each cycle except the last one, in the PcpCombine_obs tasks make …
gsketefian Jul 28, 2024
5550a41
Bug fix in yaml.
gsketefian Jul 28, 2024
c76ed1a
Fix still-existing problem of file clobbering with get_obs_mrms and p…
gsketefian Jul 29, 2024
3f1dea1
Improvements to jinja2 code to put in dependencies from other cycles.
gsketefian Jul 29, 2024
53dd688
Bug fix.
gsketefian Jul 30, 2024
f9af954
Minor typo fix.
gsketefian Aug 15, 2024
f81cd1c
Add workflow configuration options for whether or not to remove raw o…
gsketefian Aug 15, 2024
cd19554
First round of changes before testing, only including obs pulling tas…
mkavulich Jun 14, 2024
03d11c0
Way more changes than I *wanted* to make, but these are long overdue:
mkavulich Mar 21, 2024
1c0b721
Some major cleanup to generate_FV3LAM_wflow.py to allow for more
mkavulich Mar 22, 2024
6355655
create_symlink_to_file() did not support wildcards. Now it does
mkavulich Mar 22, 2024
8353c5d
Some fixes for new obs: need to define paths in default workflow task…
mkavulich Mar 22, 2024
880cf63
Add "get obs" tasks to list that gets deactivated if that ob type is …
mkavulich Mar 22, 2024
e30316c
Adding new smoke test! Only retrieving obs and checking output for no…
mkavulich Mar 22, 2024
7dbfc39
Fix location of aeronet data in HPSS tar files
mkavulich Jun 18, 2024
e5f0fab
Adding new task for airnow and AERONET obs: ASCII2NC
mkavulich Jun 18, 2024
6b9aea9
Fix incorrect task list for smoke variables so we get a valid XML for…
mkavulich Jun 21, 2024
3c04d41
Add PM10 in addition to PM25, get workflow working through PCPCombine
mkavulich Jun 26, 2024
f8c93c6
Implement pythonized set_vx_fhr_list for all scripts
mkavulich Jul 9, 2024
9615dfd
Fully deprecate all our custom regex for METplus filename templates; now
mkavulich Aug 16, 2024
b93459e
Everything is now running through PointStat! The only issue is that I
mkavulich Aug 16, 2024
e2fbdaf
Fix the problem with AOD, turns out we just need to ensure METplus conf
mkavulich Jul 10, 2024
01f0080
- Update some comments in config_defaults.yaml
mkavulich Jul 19, 2024
51f31f9
Setting AOD ob level to 550; per Partha Bhattacharjee the AOD output …
mkavulich Jul 19, 2024
6f65ac5
We have matched pairs for PM as well!
mkavulich Jul 19, 2024
01e87b8
Make the names of the deterministic and ensemble vx configuration fil…
gsketefian Aug 16, 2024
54446d2
Modifications to get things working after rebase
mkavulich Aug 16, 2024
df13ef1
Spack-stack for Hera/GNU now supports MET version 11.1.1, which we need
mkavulich Aug 16, 2024
21f7b69
Add new files.
gsketefian Aug 26, 2024
e14b1b8
Bug fixes to get_obs_... tasks.
gsketefian Sep 3, 2024
609b4e9
Change paths to archive files to make retrieve_data.py work with new …
gsketefian Sep 3, 2024
ed6b677
Move most of the code for getting obs files out of the ex-script exre…
gsketefian Sep 3, 2024
2ee3a46
Add ceil.sh to the set of scripts/functions that are sourced by sourc…
gsketefian Sep 3, 2024
d60f651
Changes to reflect the fact that the output of PcpCombine_obs tasks n…
gsketefian Sep 3, 2024
009666f
Simplify names of some variables; add variable for where workflow tas…
gsketefian Sep 3, 2024
1622c0e
Add file accidentally left out of commit two hashes ago.
gsketefian Sep 4, 2024
9a26289
Modifications to exregional_run_met_pb2nc_obs.sh so that the correspo…
gsketefian Sep 4, 2024
e8a6f7d
Move sections of WE2E yaml files around to be consistent with the ord…
gsketefian Sep 4, 2024
a3c8c4d
Changes to workflow yaml files for vx portion of the workflow in orde…
gsketefian Sep 4, 2024
c774e40
Add code to be able to generate forecast output times and obs days, b…
gsketefian Sep 5, 2024
7bb8b1f
Fix bug in the way the start time of the second cycle is calculated.
gsketefian Sep 5, 2024
ef6aafe
Rename script for clarity.
gsketefian Sep 5, 2024
99246f2
Allow use of dots in WE2E test names.
gsketefian Sep 8, 2024
f1d2c29
Remove extraneous "proc" subdirectory in default obs directories.
gsketefian Sep 8, 2024
5945b02
Comment out "set -x".
gsketefian Sep 8, 2024
b20f2c9
Add WE2E test configuration files for getting obs, doing vx pre-proce…
gsketefian Sep 8, 2024
e3b1f6f
Rename files.
gsketefian Sep 9, 2024
616aa00
Merge branch 'develop' into feature/daily_obs_tasks
gsketefian Sep 9, 2024
2725832
Bug fixes after merging in develop.
gsketefian Sep 9, 2024
c38e981
Bug fixes to use new yaml version of var_defns.sh.
gsketefian Sep 9, 2024
d8cb3a0
Bug fix to remove crontab line once experiment is complete (regardles…
gsketefian Sep 10, 2024
f7b77fd
Use SRW's standard way of doing boolean comparisons in bash.
gsketefian Sep 10, 2024
6425b82
Make script more compact.
gsketefian Sep 10, 2024
24c8c59
Bug fixes.
gsketefian Sep 10, 2024
2622f8b
Get REMOVE_RAW_OBS... variables directly from var_defns.yaml file ins…
gsketefian Sep 10, 2024
2a37998
Minor fixes to comments and output messages.
gsketefian Sep 11, 2024
5160d3c
Fix typos.
gsketefian Sep 12, 2024
f910f6f
Fix more typos.
gsketefian Sep 12, 2024
de0b7f8
Convert all uses of log_info in setup.py to use logging module
mkavulich Sep 12, 2024
84adc80
Simplify ASCII2NC tasks:
mkavulich Sep 12, 2024
bb8582c
Same treatment to pb2nc: no need to call set_vx_params
mkavulich Sep 12, 2024
aa7188b
Fix up comments.
gsketefian Sep 13, 2024
3c794f2
Add new function and clean up existing.
gsketefian Sep 16, 2024
ef1cbbb
Change variable names and remove unneeded variable.
gsketefian Sep 16, 2024
2d75113
Fix location of staged forecast input files.
gsketefian Sep 16, 2024
830a635
Add check in setup.py to make sure that the accumulation periods of a…
gsketefian Sep 17, 2024
407c51b
Fix typo.
gsketefian Sep 20, 2024
e3de6e1
Fix typo.
gsketefian Sep 20, 2024
399f337
Fix convoluted problem with logic that checks for successful retrieva…
mkavulich Sep 23, 2024
6b49be8
Properly trap error when "--output_path" does not exist
mkavulich Sep 23, 2024
c80159c
Add ability in retrieve_data.py to use forecast hour templates as wel…
mkavulich Sep 2, 2024
d1a88b2
Revert "Fix convoluted problem with logic that checks for successful …
mkavulich Sep 24, 2024
670ea0f
Add older HPSS file name for NDAS, add AWS locations for AERONET and …
mkavulich Sep 24, 2024
34ead8d
Updates for new online downloads of AERONET and AIRNOW data
mkavulich Sep 24, 2024
1556c20
Fix task dependencies for Airnow and Aeronet PointStat tasks
mkavulich Sep 25, 2024
fc7e257
Changes to allow NOHRSC obs and ASNOW to be accumulated by PcpCombine…
gsketefian Sep 25, 2024
7532544
Changes to get_obs/vx WE2E tests to get them working with staged fore…
gsketefian Sep 25, 2024
877bf05
Add WE2E test to get NOHRSC obs and do vx on 6-hour and 24-hour snowf…
gsketefian Sep 25, 2024
4495813
Add script to get NOHRSC obs from HPSS.
gsketefian Sep 25, 2024
80f2a12
Add new variables specifying the time intervals at which different ty…
gsketefian Sep 25, 2024
a0a938c
Rearrange the settings for the forecast file templates in config_defa…
gsketefian Sep 25, 2024
6922555
Allow verification of 12 and 18-hourly accumulated snowfall since the…
gsketefian Sep 25, 2024
cae50b5
In Pb2NC tasks, use the arrays in var_defns.py that specify the times…
gsketefian Sep 25, 2024
fffdbd3
In the get_obs tasks, use the arrays in var_defns.py that specify the…
gsketefian Sep 25, 2024
31a529c
Add file (exregional_run_met_pb2nc_obs.sh) that should have been part…
gsketefian Sep 25, 2024
f77d314
Commit change that should have been part of commit hash fffdbd3.
gsketefian Sep 25, 2024
5725b59
- Update log file names for some met tools so they have cycledate
mkavulich Sep 26, 2024
8350811
If set_vx_fhr_list.py is going to fail anyway, print details about fa…
mkavulich Sep 26, 2024
99a87f9
Refactor the way the vx lead hours (i.e. the hours for which vx will …
gsketefian Sep 26, 2024
da81dbb
Modify variable names for clarity.
gsketefian Sep 26, 2024
fb3e7f4
Check for the form of accum_hh (accumulation) only if it's going to b…
gsketefian Sep 27, 2024
8f043fc
Changes that allow checks on the verification parameters and generati…
gsketefian Sep 27, 2024
ab1332d
Bug fixes.
gsketefian Sep 28, 2024
d50b4a0
Change name of cycledefs for obs days as was done in other files (pyt…
gsketefian Sep 28, 2024
5b5e71f
Increase walltime for PcpCombine_fcst tasks since some WE2E tests are…
gsketefian Sep 28, 2024
2abd9df
Remove unneeded environment variables from some tasks.
gsketefian Sep 28, 2024
97f0a9c
Bug fix for PcpCombine path.
gsketefian Sep 28, 2024
1c20ad4
Modify metatask and task names for clarity; fix paths; add pcpcombine…
gsketefian Sep 28, 2024
057ba70
Make adjustments to ASNOW settings to account for the fact that for A…
gsketefian Sep 29, 2024
abf2014
Clarify informational message.
gsketefian Oct 1, 2024
8937a8c
Comment out debugging lines to reduce clutter.
gsketefian Oct 1, 2024
841e141
Ensure that the observation file name templates specified in the SRW …
gsketefian Oct 2, 2024
2e6299f
Add argument to mrms_pull_topofhour.py that specifies whether a subdi…
gsketefian Oct 2, 2024
8eed4a2
When retrieving files from different data stores (e.g. NOAA's HPSS), …
gsketefian Oct 2, 2024
2357cd3
Fix bug introduced in previous set of changes.
gsketefian Oct 3, 2024
f36a866
Modify existing vx WE2E test so it is able to find the staged NOHRSC …
gsketefian Oct 3, 2024
6ba2596
Bug fix.
gsketefian Oct 6, 2024
e3a05bf
Change config variable name for clarity.
gsketefian Oct 6, 2024
84c54ba
Use new python script to get any of the allowed kinds of obs instead …
gsketefian Oct 6, 2024
7d68405
Clean up and clarify comments; calculate list of processed obs file p…
gsketefian Oct 7, 2024
2b4c956
Minor cleanup.
gsketefian Oct 7, 2024
a35f240
Remove unneeded environment variables.
gsketefian Oct 7, 2024
9d7c047
Move the two sets of variables [CCPA|NOHRSC|MRMS|NDAS]_OBS_DIR and RE…
gsketefian Oct 7, 2024
9ac85a3
Fixes to WE2E test config files to reflect moving of variables from "…
gsketefian Oct 7, 2024
55dca0f
Merge branch 'develop' into feature/daily_obs_tasks
gsketefian Oct 8, 2024
09f8531
Fix bug found in latest develop branch.
gsketefian Oct 8, 2024
b43a9d2
Fix up documentation and comments. Minor code changes.
gsketefian Oct 8, 2024
50729f5
Bug fix.
gsketefian Oct 8, 2024
6012843
Remove commented-out lines; remove trailing whitespace.
gsketefian Oct 8, 2024
1c924a8
Remove unnecessary bash utility function.
gsketefian Oct 8, 2024
9435f7f
Clean up comments, remove commented-out code.
gsketefian Oct 8, 2024
2218ca4
Remove unneeded variable from task.
gsketefian Oct 8, 2024
ee5566b
Fix typo.
gsketefian Oct 9, 2024
befe769
Fix typo.
gsketefian Oct 9, 2024
6dd8e20
Modify old test for set_cycle_dates to fit new version of this functi…
gsketefian Oct 10, 2024
03d2ab6
First attempt at modifying documentation to see if I can view it in t…
gsketefian Oct 10, 2024
c0a841e
Bug fix.
gsketefian Oct 11, 2024
d348572
Fix up comments.
gsketefian Oct 11, 2024
2814069
In config.community.yaml, move [CCPA|MRMS|NDAS]_OBS_DIR variables fro…
gsketefian Oct 11, 2024
52ebd99
Bug fix: the get_obs_nohrsc tasks need to be based on obs days for cu…
gsketefian Oct 15, 2024
42c3d6c
Add logging statements when exceptions occur; fix comments and code i…
gsketefian Oct 16, 2024
5a6da53
Minor moving of config variable.
gsketefian Oct 18, 2024
7dc7db3
Add new parameter VX_FCST_OUTPUT_INTVL_HRS into config_defaults.yaml …
gsketefian Oct 9, 2024
57fcbc6
Change arguments so the cycle start times don't need to be called mul…
gsketefian Oct 16, 2024
a3a7996
Further changes to avoid calling the function that calculates the cyc…
gsketefian Oct 16, 2024
2685e37
Remove trailing whitespace.
gsketefian Oct 18, 2024
dbcbcaf
Remove trailing whitespace.
gsketefian Oct 18, 2024
7545d25
In order for the temporal consistency checks on various vx parameters…
gsketefian Oct 16, 2024
21374ca
Remove debugging code and add a blank line.
gsketefian Oct 18, 2024
5401569
Drop the "_NDAS" and "_ndas" suffixes from pb2nc tasks since prepbufr…
gsketefian Oct 20, 2024
88e48e2
Modifications to address Mike K's PR review comments.
gsketefian Oct 21, 2024
eb06d42
Additional mods for Mike K.'s PR review.
gsketefian Oct 22, 2024
4f6bdda
Additional mods for Mike K.'s PR review.
gsketefian Oct 22, 2024
105d1d8
Change name of App variable VX_FIELDS to VX_FIELD_GROUPS to more corr…
gsketefian Oct 23, 2024
3817033
Rename and reformat the App variables containing METplus templates fo…
gsketefian Oct 24, 2024
c1bfb8f
Fix comments.
gsketefian Oct 24, 2024
95a372c
Add a check to make sure obs base directories are distinct for the va…
gsketefian Oct 24, 2024
e47cfe6
(1) Reorganize verification section in config_defaults.yaml so that p…
gsketefian Oct 27, 2024
fd635cb
Refactor some bash to python, import filename templating directly fro…
mkavulich Oct 28, 2024
53cdfd1
Merge remote-tracking branch 'origin/feature/daily_obs_tasks' into fe…
gsketefian Oct 28, 2024
b84a902
Merge remote-tracking branch 'origin/feature/daily_obs_tasks' into fe…
gsketefian Oct 28, 2024
f3d21bd
Minor modifications to Mike's PR changes.
gsketefian Oct 28, 2024
a76e154
Merge remote-tracking branch 'origin/feature/daily_obs_tasks' into fe…
gsketefian Oct 28, 2024
879fd98
Bug fixes to the merge.
gsketefian Oct 28, 2024
476eb15
First shot at modifications to enable variable forecast output interv…
gsketefian Oct 29, 2024
fcc7b1b
Introduce flag that specifies whether or not vx tasks are being run i…
gsketefian Oct 29, 2024
2213e93
Add WE2E tests for AI/ML models (FourCastNet, GraphCast, and PanguWea…
gsketefian Oct 29, 2024
51972ef
Move vx configuration files, both the defaults and the custom ones us…
gsketefian Oct 30, 2024
36b647f
Add the 12 new WE2E vx tests to the various test suites.
gsketefian Oct 30, 2024
113289e
Merge remote-tracking branch 'gerard/feature/daily_obs_tasks' into fe…
mkavulich Oct 30, 2024
a9c3216
Post-merge fix for NDAS archive names
mkavulich Nov 1, 2024
f426302
Rename vx tasks, metatasks, and variables and update documentation. …
gsketefian Nov 2, 2024
522c573
Changes from the feature/daily_obs_tasks_doc_mods that were accidenta…
gsketefian Nov 3, 2024
2c8b015
Move the 4 new WE2E vx tests that were recently added to coverage.jet…
gsketefian Nov 3, 2024
f139889
Bug fix related to removing "ADP" from "ADPSFC" and "ADPUPA".
gsketefian Nov 3, 2024
3ef4e81
Bug fixes.
gsketefian Nov 3, 2024
1fce827
Address Mike K.'s comment.
gsketefian Nov 3, 2024
5a5ae15
Merge branch 'develop' into feature/daily_obs_tasks
gsketefian Nov 3, 2024
22cdd37
Bug fixes related to (meta)task name and variable name changes.
gsketefian Nov 3, 2024
cc7dcdd
Bug fix in METplus conf templates to account for the field group name…
gsketefian Nov 4, 2024
dc91a69
Bug fix in vx configuration files to account for the field group name…
gsketefian Nov 4, 2024
8eb38f2
Fix typo.
gsketefian Nov 4, 2024
8caae0a
Bug fix in ex-script and an auxiliary bash script to account for the …
gsketefian Nov 4, 2024
f0ccb78
Fix typo.
gsketefian Nov 4, 2024
f1bd90a
Bug fix: For ensemble vx tasks, add omitted cycle dates to the end of…
gsketefian Nov 4, 2024
ddf1a55
Modify ensemble vx task and metatask names to match those for determi…
gsketefian Nov 4, 2024
9dcec55
Minor fixes to code comments.
gsketefian Nov 4, 2024
81bd5b3
Bug fixe for ensemble vx of ASNOW related to (meta)task name changes.
gsketefian Nov 4, 2024
46af6f7
Updates to docs.
gsketefian Nov 4, 2024
ed42f48
Merge branch 'develop' into feature/daily_obs_tasks
gsketefian Nov 4, 2024
1b5d35a
Merge remote-tracking branch 'refs/remotes/origin/feature/daily_obs_t…
gsketefian Nov 4, 2024
4484bc0
Get minor changes from the feature/daily_obs_tasks_doc_mods branch.
gsketefian Nov 4, 2024
3ddc95c
Update documentation on how to run the verification capabilities in t…
gsketefian Nov 7, 2024
5237d20
Merge remote-tracking branch 'gerard/feature/daily_obs_tasks' into fe…
mkavulich Dec 4, 2024
de5cf86
Merge remote-tracking branch 'upstream/develop' into feature/add_smok…
mkavulich Dec 6, 2024
e17ad8c
Re-hard-code to v12 beta version again, GNU is just too damn slow. Al…
mkavulich Dec 11, 2024
9d192ef
Fix obs variable name for PM2.5
mkavulich Dec 11, 2024
743452d
Update config_defaults.yaml
mkavulich Dec 11, 2024
4fbda33
Rename Pointstat conf files to avoid overwrite problem with PM tasks,…
mkavulich Dec 12, 2024
ff23593
Fix PM pointstat tasks to read output files from PCP Combine
mkavulich Dec 12, 2024
4110bb4
Run PCP Combine for hour zero for PM tasks
mkavulich Dec 12, 2024
713273d
Modify test files for new combined REMOVE_RAW_OBS_DIRS setting
mkavulich Dec 19, 2024
4fd1872
Move METPLUS import in get_obs.py so we can still use --help flag if …
mkavulich Dec 19, 2024
a4ace4f
Fix duplicate line in field_groups definition
mkavulich Dec 19, 2024
36bd951
Verify full domain, not just CONUS, and deal with correct censor valu…
mkavulich Jan 6, 2025
d3aed7e
Fix field_table modification for UFS_FIRE
mkavulich Jan 28, 2025
5404b9a
Fix issue with "STALLED" jobs logic in WE2E tests
mkavulich Feb 13, 2025
9dd8590
Update Hera modulefiles for MET 12/METplus6
mkavulich Feb 14, 2025
e607bf4
Fix some workflow dependencies from NDAS pb2nc ready file renaming
mkavulich Feb 14, 2025
597e5a8
Un-hard-code the last MET tools
mkavulich Feb 18, 2025
a00eae9
Upgrade all MET/METplus to new versions
mkavulich Feb 18, 2025
cf412be
Fix name of PM25 obs for HPSS data
mkavulich Feb 18, 2025
5288774
Fix "available hours" variable for generalized pointstat task
mkavulich Feb 18, 2025
3526e79
Update smoke/dust test for latest data
mkavulich Feb 19, 2025
6d98d7e
Add docstring for new function, pylint suggestions
mkavulich Feb 19, 2025
9d566fe
First round of documentation updates for smoke and dust verification
mkavulich Feb 19, 2025
92de91b
Hopefully last round of real changes!
mkavulich Feb 19, 2025
3167362
Update new test paths for Hera
mkavulich Feb 19, 2025
cf9b6cd
A few more details about the new available options
mkavulich Feb 19, 2025
93d5ea3
Some final cleanup tasks: removing `set -x` declarations, updating co…
mkavulich Feb 19, 2025
e7779cf
Move new test to Orion since Jet is being deprecated for support
mkavulich Feb 19, 2025
abaa8ce
Update some inline documentation, fix setting of FIRE_NUM_TASKS=0 whe…
mkavulich Feb 19, 2025
bccde7b
Fixes from Orion coverage tests
mkavulich Feb 20, 2025
5d3e21b
Update staged data locations on all tier-1 platforms
mkavulich Feb 20, 2025
017c05a
Merge remote-tracking branch 'upstream/develop' into feature/add_smok…
mkavulich Feb 20, 2025
47a79fd
Fix failing pylint test
mkavulich Feb 20, 2025
e6185e3
Upgrade hera gnu modulefile
mkavulich Feb 20, 2025
d30a8ce
I forgot that templates can be passed to retrieve_data.py...changing …
mkavulich Feb 20, 2025
6166179
[develop] Doc test bug fixes (#1206)
gspetro-NOAA Feb 21, 2025
71ac8e1
Debugging failing github test
mkavulich Feb 21, 2025
792566a
more CI debugging
mkavulich Feb 21, 2025
d45a8bd
Incorporate fixes for 24+ hour forecasts from Gerard
mkavulich Feb 21, 2025
da29c88
More correct error message in create_symlink_to_file.py
mkavulich Feb 21, 2025
3b0baca
Attempt fix/enhancement of test_generate_FV3LAM_wflow.py
mkavulich Feb 21, 2025
0825486
Attempted fix for test_generate_FV3LAM_wflow.py
mkavulich Feb 21, 2025
be8d1e0
Fix bad s3 retrieval command
mkavulich Feb 21, 2025
22a1564
More test fixes: correct AWS retrieval command, correctly escape back…
mkavulich Feb 21, 2025
2e42b66
Make the linter happy 😑
mkavulich Feb 21, 2025
aa4cfdb
Correct AWS bucket path (I think)
mkavulich Feb 21, 2025
f11ddad
Get public S3 data unauthentcated
mkavulich Feb 21, 2025
b39bfeb
Add --no-progress flag so log files arent enormous
mkavulich Feb 21, 2025
6b039a1
Github runners dont have enough space for fix files. Try dummy direct…
mkavulich Feb 21, 2025
d34c3f6
[develop] Update weather model hash to 8933749 (February 19) and add …
MichaelLueken Feb 21, 2025
d33a3a7
Merge branch 'develop' into feature/add_smoke_vx
mkavulich Feb 21, 2025
8d8ef29
Fix test file maybe
mkavulich Feb 21, 2025
f3f8333
Fix sed command
mkavulich Feb 21, 2025
0b92d49
ACTUALLY fix sed command
mkavulich Feb 21, 2025
e8705dc
More test debugging
mkavulich Feb 22, 2025
e287312
another fix attempt!
mkavulich Feb 22, 2025
b3d753a
Another attempt
mkavulich Feb 22, 2025
0fb7c8f
Finally working?????
mkavulich Feb 22, 2025
e717e91
Unit test finally fixed!
mkavulich Feb 22, 2025
644dbda
Revert inadvertant change to Gaea machine file
mkavulich Feb 22, 2025
489428c
Missed gaea updates
mkavulich Feb 24, 2025
0990e00
Apply suggestions from Christina's code review
mkavulich Feb 27, 2025
cfefb8a
Final round of suggested changes from reviewers
mkavulich Feb 27, 2025
802dd8a
Fix skill-score test
mkavulich Feb 28, 2025
8322306
Fix bad merge that omitted update of external_ic_nml
mkavulich Feb 28, 2025
6fdc2a0
Another fix of bad merge
mkavulich Feb 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/python_tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ jobs:
micromamba activate srw_app
export UNIT_TEST=True
export PYTHONPATH=$(pwd)/ush
# Make dummy directories for fix files so generate_FV3LAM_workflow.py tests complete successfully
export CI_FIX_FILES=/home/runner/work
mkdir -p $CI_FIX_FILES/fix/fix_am

python -m unittest tests/test_python/*.py

- name: Run python functional tests
Expand Down
60 changes: 54 additions & 6 deletions doc/UsersGuide/BuildingRunningTesting/RunSRW.rst
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,9 @@ a staged forecast (e.g. from another forecasting system) need to add additional
machine file (``ush/machine/<platform>.yaml``) or their ``config.yaml`` file. Other users may skip
to the next step (:numref:`Section %s: Generate the SRW App Workflow <GenerateWorkflow>`).

To use METplus verification, MET and METplus modules need to be installed on the system.
To use METplus verification, MET and METplus modules need to be installed on the system. In order
to ensure all capabilities work as expected, users should use at a minimum the latest release of
these tools as of the latest SRW release: MET 12.0.1 and METplus 6.0.0.

.. note::
If users update their METplus installation, they must also update the module load statements in ``ufs-srweather-app/modulefiles/tasks/<machine>/run_vx.local`` to correspond to their system's updated installation:
Expand Down Expand Up @@ -796,6 +798,16 @@ fields they include are given in :numref:`Table %s <VXFieldGroupDescsTable>`.
* - UPA
- NDAS
- Various upper-air fields (e.g. at 800 mb, 500 mb, etc)
* - AOD
- AERONET
- Aerosol Optical Depth
* - PM25
- AIRNOW
- Volumetric mass of particulate matter diameter 2.5 microns or less
* - PM10
- AIRNOW
- Volumetric mass of particulate matter diameter 10 microns or less


The ``VX_FIELD_GROUPS`` list in the ``verification:`` section of ``config.yaml`` specifies the VX field
groups for which to run verification. In order to avoid unwanted computation, the Rocoto XML will include
Expand All @@ -820,7 +832,7 @@ summer period for which ``ASNOW`` is not relevant.
Staging Observation Files
``````````````````````````````````
The taskgroup in ``verify_pre.yaml`` defines a set of workflow tasks named ``get_obs_*``, where the ``*``
represents any one of the supported obs types: :term:`CCPA`, :term:`NOHRSC`, :term:`MRMS`, and :term:`NDAS`. These ``get_obs_*`` tasks
represents any one of the supported obs types: :term:`CCPA`, :term:`NOHRSC`, :term:`MRMS`, :term:`NDAS`, :term:`AERONET`, and :term:`AIRNOW`. These ``get_obs_*`` tasks
will first check on disk for the existence of the obs files required for VX using the locations specified
by the variables ``*_OBS_DIR`` and ``OBS_*_FN_TEMPLATES[1,3,...]`` in the ``verification:`` section of
``config.yaml``. The ``*_OBS_DIR`` are the base directories in which the obs files are or should be
Expand All @@ -846,14 +858,18 @@ place them in the locations specified by ``{*_OBS_DIR}/{OBS_*_FN_TEMPLATES[1,3,.
that attempt is successful, the workflow will move on to subsequent tasks. Thus:

* Users who have the obs files already available (staged) on their system only need to set ``*_OBS_DIR``
and ``OBS_*_FN_TEMPLATES[1,3,...]`` in ``config.yaml`` to match those staging locations and file names.
and ``OBS_*_FN_TEMPLATES[1,3,...]`` in ``config.yaml`` to match those staging locations and file names.

* Users who do not have the obs files available on their systems and do not have access to NOAA HPSS
need to download :term:`CCPA`, :term:`NOHRSC`, :term:`MRMS`, and/or :term:`NDAS` files manually
from collections of publicly available data.
need to download :term:`CCPA`, :term:`NOHRSC`, :term:`MRMS`, :term:`NDAS`, :term:`AERONET`, and/or
:term:`AIRNOW` files manually from collections of publicly available data.
Then, as above, they must set ``*_OBS_DIR`` and ``OBS_*_FN_TEMPLATES[1,3,...]`` to match those
staging locations and file names.


.. note::
AIRNOW observations can be retrieved from AWS or HPSS, but retrieving from AWS requires changing some default settings.
See ``ush/config_defaults.yaml`` or :numref:`Section %s <GeneralVXParams>` for more details.

* Users who have access to a data store that hosts the necessary files (e.g. NOAA HPSS) do not need to
manually stage the obs data because the ``get_obs_*`` tasks will retrieve the necessary obs and place
them in the locations specified by ``*_OBS_DIR`` and ``OBS_*_FN_TEMPLATES[1,3,...]``. By default,
Expand All @@ -872,12 +888,22 @@ and ``OBS_*_FN_TEMPLATES`` might be set as follows:
NOHRSC_OBS_DIR: /path/to/UFS_SRW_data/develop/obs_data/nohrsc
MRMS_OBS_DIR: /path/to/UFS_SRW_data/develop/obs_data/mrms
NDAS_OBS_DIR: /path/to/UFS_SRW_data/develop/obs_data/ndas
AERONET_OBS_DIR: /path/to/UFS_SRW_data/develop/obs_data/aeronet
AIRNOW_OBS_DIR: /path/to/UFS_SRW_data/develop/obs_data/airnow
OBS_CCPA_FN_TEMPLATES: [ 'APCP', '{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2' ]
OBS_NOHRSC_FN_TEMPLATES: [ 'ASNOW', 'sfav2_CONUS_6h_{valid?fmt=%Y%m%d%H}_grid184.grb2' ]
OBS_MRMS_FN_TEMPLATES: [ 'REFC', '{valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2',
'RETOP', '{valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2' ]
OBS_NDAS_FN_TEMPLATES: [ 'SFC_UPA', 'prepbufr.ndas.{valid?fmt=%Y%m%d%H}' ]
OBS_AERONET_FN_TEMPLATES: [ 'AOD', '{valid?fmt=%Y%m%d}/{valid?fmt=%Y%m%d}.lev15' ]
OBS_AIRNOW_FN_TEMPLATES: [ 'PM', '{valid?fmt=%Y%m%d}/HourlyAQObs_{valid?fmt=%Y%m%d%H}.dat' ]
.. note::
For AIRNOW obs retrieved from AWS (see ``parm/data_locations.yml``, the default value should be
replaced with:

``OBS_AIRNOW_FN_TEMPLATES: [ 'PM', '{valid?fmt=%Y%m%d}/HourlyData_{valid?fmt=%Y%m%d%H}.dat' ]``

Now further consider the CCPA obs type. If one of the days encompassed by the forecast(s) is 20240429,
then the ``get_obs_ccpa`` task associated with this day will check for the existence of the set of obs
Expand Down Expand Up @@ -1104,9 +1130,26 @@ interval (for cumulative fields such as accumulated precipitation), and the name
from a data store (e.g. NOAA :term:`HPSS`) and place them in those locations. This task is included
in the workflow only if ``'SFC'`` and/or ``'UPA'`` are included in ``VX_FIELD_GROUPS``.

* - :bolditalic:`task_get_obs_aeronet` (``verify_pre.yaml``)
- Checks for existence of staged :term:`AERONET` obs files at locations specified by ``AERONET_OBS_DIR``
and ``OBS_AERONET_FN_TEMPLATES``. If any files do not exist, it attempts to retrieve all the files
from a data store (e.g. NOAA :term:`HPSS`) and place them in those locations. This task is included
in the workflow only if ``'AOD'``is included in ``VX_FIELD_GROUPS``.

* - :bolditalic:`task_get_obs_airnow` (``verify_pre.yaml``)
- Checks for existence of staged :term:`AIRNOW` obs files at locations specified by ``AIRNOW_OBS_DIR``
and ``OBS_AIRNOW_FN_TEMPLATES``. If any files do not exist, it attempts to retrieve all the files
from a data store (e.g. NOAA :term:`HPSS`) and place them in those locations. This task is included
in the workflow only if ``'PM25'`` and/or ``'PM10'`` are included in ``VX_FIELD_GROUPS``.

* - :bolditalic:`task_run_MET_Pb2nc_obs_NDAS` (``verify_pre.yaml``)
- Converts NDAS obs prepbufr files to NetCDF format.

* - :bolditalic:`metatask_ASCII2nc_obs` (``verify_pre.yaml``)
- Set of tasks that convert observations in ASCII text format to NetCDF files that can be processed by
:term:`METplus`; these observation types include AERONET and AIRNOW. This metatask is included in the
workflow only if ``'AOD'``, ``'PM25'``, or ``'PM10'`` are included in ``VX_FIELD_GROUPS``.

* - :bolditalic:`metatask_PcpCombine_APCP_all_accums_obs_CCPA` (``verify_pre.yaml``)
- Set of tasks that generate NetCDF files containing observed APCP for the accumulation intervals
specified in ``VX_APCP_ACCUMS_HRS``. Files for accumulation intervals larger than the one
Expand All @@ -1129,6 +1172,11 @@ interval (for cumulative fields such as accumulated precipitation), and the name
the task is being run. This metatask is included in the workflow only if ``'ASNOW'`` is included in
``VX_FIELD_GROUPS``.

* - :bolditalic:`metatask_PcpCombine_fcst_PM_all_mems` (``verify_pre.yaml``)
- Set of tasks that convert the raw forecast output of particulate matter into the appropriate bins for
PM 2.5 and PM10. This metatask is included in the workflow only if ``'PM25'`` or ``'PM10'`` is included in
``VX_FIELD_GROUPS``.

* - :bolditalic:`metatask_check_post_output_all_mems` (``verify_pre.yaml``)
- Set of tasks that ensure that the post-processed forecast files required for verification exist in
the locations specified by ``VX_FCST_INPUT_BASEDIR``, ``FCST_SUBDIR_TEMPLATE``, and ``FCST_FN_TEMPLATE``.
Expand Down
68 changes: 49 additions & 19 deletions doc/UsersGuide/CustomizingTheWorkflow/ConfigWorkflow.rst
Original file line number Diff line number Diff line change
Expand Up @@ -199,8 +199,8 @@ These directories are used only by the ``run_WE2E_tests.py`` script, so they are
``TEST_ALT_EXTRN_MDL_SYSBASEDIR_ICS``, ``TEST_ALT_EXTRN_MDL_SYSBASEDIR_LBCS``: (Default: "")
These parameters are used by the testing script to test the mechanism that allows users to point to a data stream on disk. They set up a sandbox location that mimics the stream in a more controlled way and test the ability to access :term:`ICS` or :term:`LBCS`, respectively.

``TEST_CCPA_OBS_DIR``, ``TEST_MRMS_OBS_DIR``, ``TEST_NDAS_OBS_DIR``: (Default: "")
These parameters are used by the testing script to test the mechanism that allows user to point to data streams on disk for observation data for verification tasks. They test the ability for users to set ``CCPA_OBS_DIR``, ``MRMS_OBS_DIR``, and ``NDAS_OBS_DIR`` respectively.
``TEST_CCPA_OBS_DIR``, ``TEST_MRMS_OBS_DIR``, ``TEST_NDAS_OBS_DIR``, ``TEST_NOHRSC_OBS_DIR``, ``TEST_AERONET_OBS_DIR``, ``TEST_AIRNOW_OBS_DIR``: (Default: "")
These parameters are used by the testing script to test the mechanism that allows user to point to data streams on disk for observation data for verification tasks. They test the ability for users to set ``CCPA_OBS_DIR``, ``MRMS_OBS_DIR``, ``NDAS_OBS_DIR``, etc.

``TEST_VX_FCST_INPUT_BASEDIR``: (Default: "")
The path to user-staged forecast files for WE2E testing of verificaton using user-staged forecast files in a known location on a given platform.
Expand Down Expand Up @@ -633,7 +633,7 @@ Pre-Existing Directory Parameter

* **"delete":** The preexisting directory is deleted and a new directory (having the same name as the original preexisting directory) is created.

* **"rename":** The preexisting directory is renamed and a new directory (having the same name as the original pre-existing directory) is created. The new name of the preexisting directory consists of its original name and the suffix "_old###", where ``###`` is a 3-digit integer chosen to make the new name unique.
* **"rename":** The preexisting directory is renamed and a new directory (having the same name as the original pre-existing directory) is created. The new name of the preexisting directory consists of its original name and the suffix "_old_YYYYMMDD_HHmmss", where ``YYYYMMDD_HHmmss`` is the full date and time of the rename
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line seems incomplete.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"rename" in this case is a noun, so it is a full sentence (just missing a period). With an added period is this wording okay?


* **"reuse":** This method will keep the preexisting directory intact. However, when the preexisting directory is ``$EXPDIR``, this method will save all old files to a subdirectory ``oldxxx/`` and then populate new files into the ``$EXPDIR`` directory. This is useful to keep ongoing runs uninterrupted; rocotoco ``*db`` files and previous cycles will stay and hence there is no need to manually copy or move ``*db`` files and previous cycles back, and there is no need to manually restart related rocoto tasks failed during the workflow generation process. This method may be best suited for incremental system reuses.

Expand Down Expand Up @@ -1676,7 +1676,7 @@ METplus-Specific Parameters
-----------------------------------

``METPLUS_VERBOSITY_LEVEL``: (Default: ``2``)
Logging verbosity level used by METplus verification tools. Valid values: 0 to 5, with 0 quiet and 5 loudest.
Logging verbosity level used by METplus verification tools. Valid values: 0 to 9, with 0 having the fewest log messages and 9 having the most. Levels 5 and above can result in very large log files and slower tool execution.


VX Parameters for Observations
Expand All @@ -1691,11 +1691,13 @@ VX Parameters for Observations
* NOHRSC (National Operational Hydrologic Remote Sensing Center)
* MRMS (Multi-Radar Multi-Sensor)
* NDAS (NAM Data Assimilation System)
* AERONET (Aerosol Robotic Network)
* AIRNOW (AirNow air quality reports)

The script ``ush/get_obs.py`` contains further details on the files and
directory structure of each obs type.

``[CCPA|NOHRSC|MRMS|NDAS]_OBS_AVAIL_INTVL_HRS``: (Defaults: [1|6|1|1])
``[CCPA|NOHRSC|MRMS|NDAS|AERONET|AIRNOW]_OBS_AVAIL_INTVL_HRS``: (Defaults: [1|6|1|1|24|1])
Time interval (in hours) at which the various types of obs are available
on NOAA's HPSS.

Expand All @@ -1704,8 +1706,8 @@ VX Parameters for Observations
is the shortest output interval for forecasts, i.e. the forecasts cannot
(yet) support sub-hourly output.

``[CCPA|NOHRSC|MRMS|NDAS]_OBS_DIR``: (Default: ``"{{ workflow.EXPTDIR }}/obs_data/[ccpa|nohrsc|mrms|ndas]"``)
Base directory in which CCPA, NOHRSC, MRMS, or NDAS obs files needed by
``[CCPA|NOHRSC|MRMS|NDAS|AERONET|AIRNOW]_OBS_DIR``: (Default: ``"{{ workflow.EXPTDIR }}/obs_data/[ccpa|nohrsc|mrms|ndas|aeronet|airnow]"``)
Base directory in which CCPA, NOHRSC, MRMS, NDAS, AERONET, or AIRNOW obs files needed by
the verification tasks are located. If the files do not exist, they
will be retrieved and placed under this directory. Note that:

Expand All @@ -1718,7 +1720,7 @@ VX Parameters for Observations
that need to be corrected during obs retrieval. This is described
in more detail in the script ``ush/get_obs.py``.

``OBS_[CCPA|NOHRSC|MRMS|NDAS]_FN_TEMPLATES``:
``OBS_[CCPA|NOHRSC|MRMS|NDAS|AERONET|AIRNOW]_FN_TEMPLATES``:
**Defaults:**

``OBS_CCPA_FN_TEMPLATES``:
Expand Down Expand Up @@ -1746,6 +1748,16 @@ VX Parameters for Observations

[ 'SFCandUPA', 'prepbufr.ndas.{valid?fmt=%Y%m%d%H}' ]

``OBS_AERONET_FN_TEMPLATES``:
.. code-block:: console

[ 'AOD', '{valid?fmt=%Y%m%d}/{valid?fmt=%Y%m%d}.lev15' ]

``OBS_AIRNOW_FN_TEMPLATES``:
.. code-block:: console

[ 'PM', '{valid?fmt=%Y%m%d}/HourlyData_{valid?fmt=%Y%m%d%H}.dat' ]

File name templates for various obs types. These are meant to be used
in METplus configuration files and thus contain METplus time formatting
strings. Each of these variables is a python list containing pairs of
Expand Down Expand Up @@ -1854,7 +1866,7 @@ VX Parameters for Observations
{{- "ccpa.t{valid?fmt=%H}z." ~ obs_avail_intvl_hrs ~ "h.hrap.conus.gb2_a${ACCUM_HH}h.nc" }}

METplus template for the names of the NetCDF files generated by the
worfklow verification tasks that call METplus's PcpCombine tool on
workflow verification tasks that call METplus's PcpCombine tool on
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

worfklow sounds way cooler.

CCPA observations. These files will contain observed accumulated
precipitation in NetCDF format for various accumulation intervals.

Expand All @@ -1867,26 +1879,44 @@ VX Parameters for Observations
{{- "sfav2_CONUS_" ~ obs_avail_intvl_hrs ~ "h_{valid?fmt=%Y%m%d%H}_grid184.grb2_a${ACCUM_HH}h.nc" }}

METplus template for the names of the NetCDF files generated by the
worfklow verification tasks that call METplus's PcpCombine tool on
workflow verification tasks that call METplus's PcpCombine tool on
NOHRSC observations. These files will contain observed accumulated
snowfall for various accumulaton intervals.
snowfall for various accumulation intervals.

``OBS_AERONET_FN_TEMPLATE_ASCII2NC_OUTPUT``: (Default: ``'hourly_aeronet_obs_{valid?fmt=%Y%m%d}00.nc'``)

METplus template for the names of the NetCDF files generated by the
workflow verification tasks that call METplus's ASCII2NC tool on
AERONET observations.

``OBS_AIRNOW_FN_TEMPLATE_ASCII2NC_OUTPUT``: (Default: ``'hourly_airnow_obs_{valid?fmt=%Y%m%d}00.nc'``)

METplus template for the names of the NetCDF files generated by the
workflow verification tasks that call METplus's ASCII2NC tool on
AIRNOW observations.

``AIRNOW_INPUT_FORMAT``: (Default: ``"airnowhourlyaqobs"``)
Observation format for ASCII Airnow observations. Observations retrieved from HPSS are in
"airnowhourlyaqobs" format, observations retrieved from AWS are generally in "airnowhourly" format.
For more information see the
`METplus users guide <https://met.readthedocs.io/en/latest/Users_Guide/reformat_point.html#ascii2nc-tool>`_


``OBS_DATA_STORE_AIRNOW``: (Default: ``hpss``)
Location to retrieve observation data from. Valid values are "aws" and/or "hpss", see
``parm/data_locations.yaml`` for info on these data stores.

``OBS_NDAS_SFCandUPA_FN_TEMPLATE_PB2NC_OUTPUT``: (Default: ``'${OBS_NDAS_FN_TEMPLATES[1]}.nc'``)
METplus template for the names of the NetCDF files generated by the
worfklow verification tasks that call METplus's Pb2nc tool on the
workflow verification tasks that call METplus's Pb2nc tool on the
prepbufr files in NDAS observations. These files will contain the
observed surface (SFC) and upper-air (UPA) fields in NetCDF format
(instead of NDAS's native prepbufr format).

``NUM_MISSING_OBS_FILES_MAX``: (Default: 2)
``NUM_MISSING_OBS_FILES_MAX``: (Default: 0)
For verification tasks that need observational data, this specifies
the maximum number of observation files that may be missing. If more
than this number are missing, the verification task will error out.
This is a crude way of checking that there are enough obs to conduct
verification (crude because this number should probably depend on the
field being verified, the time interval between observations, the
length of the forecast, etc; an alternative may be to specify the
maximum allowed fraction of obs files that can be missing).


VX Parameters for Forecasts
Expand Down Expand Up @@ -1955,7 +1985,7 @@ VX Parameters for Forecasts
{{- ".prslev.f{lead?fmt=%HHH}.${POST_OUTPUT_DOMAIN_NAME}_${VAR}_a${ACCUM_HH}h.nc" }}

METplus template for the names of the NetCDF files generated by the
worfklow verification tasks that call METplus's PcpCombine tool on
workflow verification tasks that call METplus's PcpCombine tool on
forecast output. These files will contain forecast accumulated
precipitation in NetCDF format for various accumulation intervals.

Expand Down
Loading