Skip to content

Aggregate RMSE over multiple cases/variables and produce timeseries + Hinton plot [Experimental] - #2419

Draft
James Warner (jwarner8) wants to merge 26 commits into
mainfrom
2409_rmse_agg_hinton
Draft

Aggregate RMSE over multiple cases/variables and produce timeseries + Hinton plot [Experimental]#2419
James Warner (jwarner8) wants to merge 26 commits into
mainfrom
2409_rmse_agg_hinton

Conversation

@jwarner8

@jwarner8 James Warner (jwarner8) commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

This is an experimental branch that addresses #2409. It does not necessarily endorse this method of aggregating RMSE over multiple case studies scientifically, but tests the plumbing of dealing with multiple forecast_reference_time in model and obs space.

Contribution checklist

Aim to have all relevant checks ticked off before merging. See the developer's guide for more detail.

  • Documentation has been updated to reflect change.
  • New code has tests, and affected old tests have been updated.
  • All tests and CI checks pass.
  • Ensured the pull request title is descriptive.
  • Attributed any Generative AI, such as GitHub Copilot, used in this PR.
  • Marked the PR as ready to review.

@jwarner8 James Warner (jwarner8) added the experimental An experimental change that is not yet intended to be merged. label Aug 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor
Total coverage: 92% (HTML report)
Name                                                              Stmts   Miss Branch BrPart  Cover
---------------------------------------------------------------------------------------------------
src/CSET/__init__.py                                                105      0     14      0   100%
src/CSET/_common.py                                                 156      0     54      0   100%
src/CSET/cset_workflow/app/fetch_fcst/bin/fetch_data.py             117     28     26      0    78%
src/CSET/cset_workflow/app/fetch_nimrod/bin/fetch_nimrod.py          81      8     28     11    83%
src/CSET/cset_workflow/app/finish_website/bin/finish_website.py      79      2      8      2    95%
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                                        103      1     26      1    98%
src/CSET/graph.py                                                    44      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                                    249      3     72      4    98%
src/CSET/operators/_stash_to_lfric.py                                 3      0      0      0   100%
src/CSET/operators/_utils.py                                        190      8     72      6    95%
src/CSET/operators/ageofair.py                                      142      7     64      5    94%
src/CSET/operators/aggregate.py                                     141     60     44      1    55%
src/CSET/operators/aviation.py                                       61      0     18      0   100%
src/CSET/operators/collapse.py                                      155      8     72      3    93%
src/CSET/operators/constraints.py                                   113      7     50      3    93%
src/CSET/operators/convection.py                                     38      4     10      2    88%
src/CSET/operators/ensembles.py                                      27      0     14      0   100%
src/CSET/operators/feature.py                                        44      0     10      0   100%
src/CSET/operators/filters.py                                        67      2     30      0    98%
src/CSET/operators/fluxes.py                                         41      0     10      0   100%
src/CSET/operators/humidity.py                                      135      0     52      0   100%
src/CSET/operators/imageprocessing.py                                57      0     16      0   100%
src/CSET/operators/mesoscale.py                                      18      0      2      0   100%
src/CSET/operators/misc.py                                          172      1     72      3    98%
src/CSET/operators/plot.py                                         1117    155    412     71    83%
src/CSET/operators/power_spectrum.py                                 98      3     30      3    95%
src/CSET/operators/precipitation.py                                 204      2     92      2    99%
src/CSET/operators/pressure.py                                       41      0     12      0   100%
src/CSET/operators/read.py                                          439     22    190     17    94%
src/CSET/operators/regrid.py                                        136      0     68      2    99%
src/CSET/operators/scoreswrappers.py                                323     23    106      2    93%
src/CSET/operators/temperature.py                                   121      0     32      0   100%
src/CSET/operators/transect.py                                       63      0     24      0   100%
src/CSET/operators/wind.py                                           46      3     10      2    91%
src/CSET/operators/write.py                                          15      0      6      0   100%
src/CSET/recipes/__init__.py                                        104      0     28      0   100%
src/CSET/sample_data/__init__.py                                      0      0      0      0   100%
---------------------------------------------------------------------------------------------------
TOTAL                                                              5214    347   1832    140    92%

@jwarner8 James Warner (jwarner8) changed the title Aggregate RMSE over multiple cases [Experimental] Aggregate RMSE over multiple cases/variables and produce timeseries + Hinton plot [Experimental] Aug 24, 2026
@jwarner8
James Warner (jwarner8) marked this pull request as ready for review August 25, 2026 15:58
@jwarner8
James Warner (jwarner8) marked this pull request as draft August 25, 2026 15:58
@jwarner8

Copy link
Copy Markdown
Contributor Author

For the Hinton plots, I am tempted to make these set on a standard number of variables, rather than user defined. If user defined, the number of blocks in the recipe would have to dynamically adapt, and this could get messy quickly. Its not also clear how the plot with scale with additional variables. We could have it so that the Hinton plot supports 5 variables, and the user can change these.
We might also want to dynamically resample some of these variables, through averaging. If we have hourly data for temperature, we would probably want to resample to 6 hourly, otherwise the plot will be excessively long.

@jwarner8

Copy link
Copy Markdown
Contributor Author

Evidence of RMSE working,
image
Now to break up work into various sub-issues/PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

experimental An experimental change that is not yet intended to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant