Skip to content

Aggregate observations across multiple forecasts - #2463

Merged
James Ross (james-a-f-ross) merged 25 commits into
mainfrom
2444-aggregate-obs-across-multiple-forecasts
Oct 14, 2026
Merged

James Ross (james-a-f-ross) merged 25 commits into
mainfrom
2444-aggregate-obs-across-multiple-forecasts

Conversation

@james-a-f-ross

@james-a-f-ross James Ross (james-a-f-ross) commented Sep 7, 2026 •

Copy link
Copy Markdown
Collaborator

fixes #2444

gen AI was used to help generate test fixtures

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.

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor
Total coverage: 93% (HTML report)
Name                                                              Stmts   Miss Branch BrPart  Cover
---------------------------------------------------------------------------------------------------
src/CSET/__init__.py                                                113      4     14      0    97%
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                                        105      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                                        200      8     74      6    95%
src/CSET/operators/ageofair.py                                      142      7     64      5    94%
src/CSET/operators/aggregate.py                                     184      8     60      7    94%
src/CSET/operators/aviation.py                                       61      0     18      0   100%
src/CSET/operators/collapse.py                                      162      8     80      3    94%
src/CSET/operators/constraints.py                                   115      7     50      2    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                                         1172    155    438     70    84%
src/CSET/operators/power_spectrum.py                                156     10     60      8    91%
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                                          458     25    194     15    94%
src/CSET/operators/regrid.py                                        147      1     70      3    98%
src/CSET/operators/scoreswrappers.py                                226     22     74      6    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                                                              5332    309   1888    152    93%

@BernardClaxton

Copy link
Copy Markdown
Contributor

From what I can tell, the code looks good. The coverage of .../operators/aggregate.py has dropped to to 90% - are more tests possible? It might be nice to see some output from this branch running through a cylc workflow.

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.

Just general comments - perhaps some more tests for aggregate.py and be nice to see some cylc workflow output for this branch.

@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.

suggestions for new test, as Bernard mentioned to increase coverage. Mostly formatting changes otherwise

Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread tests/operators/test_aggregate.py
@james-a-f-ross
James Ross (james-a-f-ross) force-pushed the 2444-aggregate-obs-across-multiple-forecasts branch from fa2a3be to 9edffae Compare October 5, 2026 14:57
@james-a-f-ross

Copy link
Copy Markdown
Collaborator Author

BernardClaxton (@BernardClaxton) James Warner (@jwarner8) addressed most comments, not sure I can really produce something on the workflow from this but this basically just refactors some code from PR #2419

@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, minor comments, happy to be merged

Comment thread src/CSET/operators/aggregate.py Outdated
Comment thread tests/operators/test_aggregate.py
@james-a-f-ross
James Ross (james-a-f-ross) force-pushed the 2444-aggregate-obs-across-multiple-forecasts branch from e7062ad to d205d36 Compare October 14, 2026 08:47
# Conflicts:
#	src/CSET/operators/aggregate.py
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
Co-authored-by: James Warner <62252918+jwarner8@users.noreply.github.com>
@james-a-f-ross
James Ross (james-a-f-ross) force-pushed the 2444-aggregate-obs-across-multiple-forecasts branch from 0411826 to b2540ac Compare October 14, 2026 08:56
@james-a-f-ross
James Ross (james-a-f-ross) merged commit f907d07 into main Oct 14, 2026
8 checks passed
@james-a-f-ross
James Ross (james-a-f-ross) deleted the 2444-aggregate-obs-across-multiple-forecasts branch October 14, 2026 09:06
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 Aggregation: New operator to combine obs across multiple forecasts

3 participants