Add Scores diagnostics for spatial and timeseries RMSE, Additive Bias, MAE, and Pearson’s Correlation Coefficient#2232
Add Scores diagnostics for spatial and timeseries RMSE, Additive Bias, MAE, and Pearson’s Correlation Coefficient#2232BernardClaxton (BernardClaxton) wants to merge 105 commits into
Conversation
Total coverage: 90% (HTML report)Name Stmts Miss Branch BrPart Cover --------------------------------------------------------------------------------------------------- src/CSET/__init__.py 93 2 12 0 98% src/CSET/_common.py 149 0 52 0 100% src/CSET/cset_workflow/app/fetch_fcst/bin/fetch_data.py 115 27 24 0 79% src/CSET/cset_workflow/app/finish_website/bin/finish_website.py 70 0 4 0 100% src/CSET/cset_workflow/app/parbake_recipes/bin/parbake.py 29 0 8 0 100% src/CSET/cset_workflow/app/send_email/bin/send_email.py 25 0 4 0 100% src/CSET/cset_workflow/lib/python/jinja_utils.py 17 0 6 0 100% src/CSET/extract_workflow.py 47 0 16 0 100% src/CSET/graph.py 43 0 14 0 100% src/CSET/operators/__init__.py 89 0 26 0 100% src/CSET/operators/_atmospheric_constants.py 9 0 0 0 100% src/CSET/operators/_colormaps.py 229 4 62 4 97% src/CSET/operators/_stash_to_lfric.py 3 0 0 0 100% src/CSET/operators/_utils.py 183 8 74 6 95% src/CSET/operators/ageofair.py 141 7 64 5 94% src/CSET/operators/aggregate.py 76 1 22 1 98% src/CSET/operators/aviation.py 60 0 18 0 100% src/CSET/operators/collapse.py 154 12 72 5 91% src/CSET/operators/constraints.py 111 7 48 2 93% src/CSET/operators/convection.py 37 4 10 2 87% src/CSET/operators/ensembles.py 27 0 14 0 100% src/CSET/operators/feature.py 41 0 10 0 100% src/CSET/operators/filters.py 66 2 30 0 98% src/CSET/operators/fluxes.py 41 0 10 0 100% src/CSET/operators/humidity.py 139 0 56 0 100% src/CSET/operators/imageprocessing.py 56 0 16 0 100% src/CSET/operators/mesoscale.py 17 0 2 0 100% src/CSET/operators/misc.py 158 1 66 4 98% src/CSET/operators/plot.py 1011 180 346 67 78% src/CSET/operators/power_spectrum.py 97 3 30 3 95% src/CSET/operators/precipitation.py 176 34 84 4 80% src/CSET/operators/pressure.py 41 0 12 0 100% src/CSET/operators/read.py 409 38 178 14 89% src/CSET/operators/regrid.py 122 18 64 1 83% src/CSET/operators/scoreswrappers.py 135 22 34 8 79% src/CSET/operators/temperature.py 121 0 32 0 100% src/CSET/operators/transect.py 62 0 24 0 100% src/CSET/operators/wind.py 45 3 10 2 91% src/CSET/operators/write.py 15 0 6 0 100% src/CSET/recipes/__init__.py 101 0 28 0 100% --------------------------------------------------------------------------------------------------- TOTAL 4560 373 1588 128 90% |
4fb1de2 to
bb5ba3f
Compare
|
The test scripts test_scoreswrappers.py and test_verification.py were written with the aid of Copilot. |
|
Output from testing the scores utility can be found at https://wwwspice/~bernie.claxton/CSET_rmse8/?q=scores . The scores plots all have "Scores" in the title. |
|
BernardClaxton (@BernardClaxton) in scoreswrappers all scores will need to deal with the preserved_coordinates in the same way as in the rmse calculation as they are currently failing in my test case. This change is mostly a copy and paste. |
…ores error metrics for spatial surface plots.
|
BernardClaxton (@BernardClaxton) I have check out your branch and added the handling and conversion of iris dim coordinates to xarray dim coordinates as expected by scores to the surface scores plots. |
| for model, field, method, scores_method in itertools.product( | ||
| models[1:], | ||
| conf.SURFACE_FIELDS, | ||
| conf.SPATIAL_SURFACE_FIELD_METHOD, |
There was a problem hiding this comment.
following discussion with BernardClaxton (@BernardClaxton) I suggest that we include the separate methods selection for verification in this PR and the inclusion of a list of variables that the verification uses will be a separate PR to avoid moving the goalposts.
| for all times. The PC is calculated based on that used in the | ||
| package [`scores`](https://scores.readthedocs.io/en/stable/api.html#scores.continuous.correlation.pearsonr). | ||
| This recipe allows the preservation of the time coordinate to produce a timeseries. Therefore, the PC is | ||
| collapsed over all other coordinates in the cube and calculated for every timestep. |
There was a problem hiding this comment.
they should not be collapsed, but handled directly in scores utilising the preserved_coordinates.
|
Added support in the scores loaders and recipes for SUBAREA_NAME. |
Co-authored-by: Sylvia Bohnenstengel <62748926+Sylviabohnenstengel@users.noreply.github.com>
Co-authored-by: Sylvia Bohnenstengel <62748926+Sylviabohnenstengel@users.noreply.github.com>
…ve_bias.yaml Co-authored-by: Sylvia Bohnenstengel <62748926+Sylviabohnenstengel@users.noreply.github.com>
…ve_bias.yaml Co-authored-by: Sylvia Bohnenstengel <62748926+Sylviabohnenstengel@users.noreply.github.com>
|
Sample workflow output for branch |

Contribution checklist
Aim to have all relevant checks ticked off before merging. See the developer's guide for more detail.
rose-suite.conf.examplehas been updated if new diagnostic added.