Skip to content

Support for unstructured regional ML gridded data - #2106

Closed
James Warner (jwarner8) wants to merge 51 commits into
mainfrom
support_ugrid
Closed

Support for unstructured regional ML gridded data#2106
James Warner (jwarner8) wants to merge 51 commits into
mainfrom
support_ugrid

Conversation

@jwarner8

Copy link
Copy Markdown
Contributor

Addresses #1975 and enables us to use CSET with regional ML models (BRIS, Regional FastNet).

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.
  • Ensure rose-suite.conf.example has been updated if new diagnostic added.
  • Conda lock files have been updated if dependencies have changed.
  • 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 enhancement New feature or request label May 7, 2026
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor
Total coverage: 93% (HTML report)
Name                                                              Stmts   Miss Branch BrPart  Cover
---------------------------------------------------------------------------------------------------
src/CSET/__init__.py                                                104      0     14      0   100%
src/CSET/_common.py                                                 150      0     52      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                                         1120    153    394     66    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                                          436     21    186     15    94%
src/CSET/operators/regrid.py                                        237      1     94      3    99%
src/CSET/operators/scoreswrappers.py                                160     22     40      7    82%
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%
---------------------------------------------------------------------------------------------------
TOTAL                                                              5081    285   1746    139    93%

@jfrost-mo James Frost (jfrost-mo) changed the title Support for unstructured grid data Support for unstructured regional ML gridded data May 8, 2026
@jwarner8

Copy link
Copy Markdown
Contributor Author

Have this working in the workflow, but aggregation very slow... there is a question of whether there is a better way, as we are regridding the data again in every baked recipe... over a 100 times.

@jwarner8

Copy link
Copy Markdown
Contributor Author
image Need to check how nan is propagated, given stats values showing np.nan

@jwarner8

Copy link
Copy Markdown
Contributor Author

Have lock files working now, just need to implement tests...

@jwarner8

Copy link
Copy Markdown
Contributor Author

Building in Anke F (@afinnen) suggestion for passing constraint all the way through to regrid, rather than backing out varname and others from an object for a much nicer implementation.

@jwarner8

Copy link
Copy Markdown
Contributor Author

Now working on ensuring pre-fix of metadata keeps data lazy, otherwise becomes memory expensive. Seems to work using core_data

@jwarner8

Copy link
Copy Markdown
Contributor Author

Outstanding issues, that might require their own issues to solve:

  • Gridlines appear to disappear on spatial maps when aggregating.
  • PDFs seem to not work for some variables (surface temperature), but OK for others. Aggregation by hour of day OK, but not lead-time or all cases, or general series.

@jwarner8
James Warner (jwarner8) marked this pull request as ready for review June 30, 2026 12:14
@jwarner8

Copy link
Copy Markdown
Contributor Author

This is probably ready for a review, as a not quite polished PR, in order to get any feedback from other developers. A practical balance has been sought over general flexibility and dealing with specific format data coming out of Anemoi.

@jwarner8

Copy link
Copy Markdown
Contributor Author

Following discussion at CSET surgery, might be worth holding off this PR till we have a contrib or similar scripts folder, but general logic could be useful to review.

@jwarner8
James Warner (jwarner8) marked this pull request as draft July 28, 2026 14:47
@jwarner8

Copy link
Copy Markdown
Contributor Author

Closing this pull request as superseeded by #2370.

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant