Skip to content

Add the ability for scoreswrappers functions and recipes to handle and plot multiple model-model comparisons - #2383

Merged
James Ross (james-a-f-ross) merged 22 commits into
mainfrom
2378-more-than-one-model-timeseries
Aug 20, 2026
Merged

Add the ability for scoreswrappers functions and recipes to handle and plot multiple model-model comparisons #2383
James Ross (james-a-f-ross) merged 22 commits into
mainfrom
2378-more-than-one-model-timeseries

Conversation

@james-a-f-ross

@james-a-f-ross James Ross (james-a-f-ross) commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

This closes #2378

Added the ability for scores verification to plot multiple model-model comparisons.

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.

@james-a-f-ross
James Ross (james-a-f-ross) force-pushed the 2378-more-than-one-model-timeseries branch from 0e48b29 to 0c48ae2 Compare August 17, 2026 08:56
@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor
Total coverage: 93% (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                                      77      1     22      1    98%
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                                        147      1     70      3    98%
src/CSET/operators/scoreswrappers.py                                235     21     64      5    89%
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                                                              5073    287   1770    144    93%

@james-a-f-ross
James Ross (james-a-f-ross) marked this pull request as ready for review August 17, 2026 09:30

@jwarner8 James Warner (jwarner8) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Few comments, Be good to have an example of this working in workflow with more than one model (can share some paths if useful).

Comment thread src/CSET/operators/read.py Outdated
Comment thread src/CSET/operators/scoreswrappers.py
Comment thread src/CSET/operators/scoreswrappers.py
Comment thread src/CSET/operators/scoreswrappers.py Outdated
Comment thread src/CSET/operators/scoreswrappers.py
Comment thread src/CSET/operators/scoreswrappers.py
Comment thread src/CSET/recipes/verification/timeseries_surface_difference_scores_RMSE.yaml Outdated
@james-a-f-ross

Copy link
Copy Markdown
Contributor Author

James Warner (@jwarner8) addressed the review comments. see: /home/users/james.ross/cset_development/rose-suite.conf.multiple_modelvmodel for a configuration file to run this.

@jwarner8

James Warner (jwarner8) commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Seems to be working, might be good to have 'difference' in the title so it is easier to filter for - will add comment in relevant section.
image

@jwarner8 James Warner (jwarner8) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good, really minor final changes

Comment thread src/CSET/operators/plot.py Outdated
…ores_correlation_pearsonr.yaml

Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
…ores_additive_bias.yaml

Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
…ores_RMSE.yaml

Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
…ores_MAE.yaml

Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>

@jwarner8 James Warner (jwarner8) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good to me

@james-a-f-ross
James Ross (james-a-f-ross) merged commit 0d1cc87 into main Aug 20, 2026
9 checks passed
@james-a-f-ross
James Ross (james-a-f-ross) deleted the 2378-more-than-one-model-timeseries branch August 20, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Scores: Ensure we can plot more than one model in timeseries verification

2 participants