v25.3.0 (2025-03-06) The RAL3-LFRic release
This release is the baseline for evaluating RAL3_LFRic#708.1 with RMED Ticket #708 detailing the science configuration. It introduces a fixed evaluation functionality for RAL3-LFRic and RAL3-UM, new functionality, bug fixes, and improvements. Key features for RAL3-LFRic evaluation include:
- Surface fields: spatial plots, timeseries, histograms, model comparison plots, time aggregation by hour of day, validity time, forecast range, area averages.
- Pressure levels fields: spatial plots, timeseries, histograms, model comparison plots, time aggregation by hour of day, validity time, forecast range, area averages, vertical profiles, PDFs.
Additional capabilities: transects, point selection, QQ plots, age of air diagnostics, cape diagnostics that can be selected by the user.
The next release will add analysis on model levels, multi-line plotting, and more derived variables.
PyPI package | conda-forge package | workflow tarball
What's Changed
- Upload hidden coverage files to fix GitHub Actions breakage by James Frost (@jfrost-mo) in #832
- Pin GitHub Actions to specific commits to prevent random breakage by James Frost (@jfrost-mo) in #846
- Switch to data time cycling to support multiple models and multiple case studies or trials by James Frost (@jfrost-mo) in #765
- Note that all documentation shell examples use bash by James Frost (@jfrost-mo) in #861
- Add colorbar entries for more standard names by James Frost (@jfrost-mo) in #839
- Support python 3.13 and remove usage of tox in CI by James Frost (@jfrost-mo) in #872
- Correct execute_recipe docstring; it takes an input directory by James Frost (@jfrost-mo) in #869
- Fix colorbar min and max not being set on pcolormesh plots by James Frost (@jfrost-mo) in #870
- Error fetch_fcst task when no data found for a model, as it usually indicates a typo in the data path by James Frost (@jfrost-mo) in #842
- Rewrite colorbar loading to use default colorbar definition from inside CSET package by James Frost (@jfrost-mo) in #871
- Fix spelling of stratiform_rainfall_rate in colorbar definition by James Frost (@jfrost-mo) in #878
- Improve transect title by James Warner (@jwarner8) in #829
- Update colorbar definitions by David Flack (@daflack) in #892
- Fix typo in comment by James Frost (@jfrost-mo) in #906
- Sort conda lock files to aid reviewing by James Frost (@jfrost-mo) in #890
- Explicitly use conda-forge conda channel for updating conda and resolving lock files by James Frost (@jfrost-mo) in #886
- Exclude
__main__.pyfrom test coverage measurement by James Frost (@jfrost-mo) in #880 - Remove HTTP status check as urlopen already does it by James Frost (@jfrost-mo) in #882
- Test templating variables into recipe parser by James Frost (@jfrost-mo) in #881
- Test recipe listing and detailing functions by James Frost (@jfrost-mo) in #883
- Fix type signature by James Warner (@jwarner8) in #931
- Changes to fix longitude convention to be in the range -180 degrees to 180 degrees where possible by Jon Shonk (@JKPShonk) in #896
- Disable strict checking that TLS certificates are well formed by James Frost (@jfrost-mo) in #904
- Change CSET introduction on documentation welcome page by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #899
- Harmonise variable names from UM Stash to LFRic variable and long_name by ukmo-huw-lewis in #898
- Add date to cset plot menu items by Sana Mahmood (@mo-sanamahmood) in #934
- Wrap plot title and increase figure size by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #935
- Fix supported arg type in regrid operator by James Warner (@jwarner8) in #948
- Use non-interactive backend for plotting by James Frost (@jfrost-mo) in #951
- Update to WEB_ADDR documentation. by David Flack (@daflack) in #955
- Add iris-grib library support by James Warner (@jwarner8) in #960
- Revert "Add iris-grib to dev dependencies" by James Frost (@jfrost-mo) in #974
- Import CSET.recipes as recipes during testing for readability by James Frost (@jfrost-mo) in #968
- Add nicer error messages for unhandled exceptions by James Frost (@jfrost-mo) in #884
- Target lockfile update PR to source branch by James Frost (@jfrost-mo) in #963
- Convert CLI interface tests to not use
subprocess.runby James Frost (@jfrost-mo) in #970 - Use regular install for CI tests by James Frost (@jfrost-mo) in #463
- Add age of air diagnostic functionality by James Warner (@jwarner8) in #480
- Add mask operators by David Flack (@daflack) in #967
- Documentation update for mask operator by David Flack (@daflack) in #990
- Adds spatial perturbation operator by David Flack (@daflack) in #979
- New callbacks to standardise some dim names by James Warner (@jwarner8) in #983
- Fix location of AOA docs by James Warner (@jwarner8) in #1001
- Fix no title in surface histogram plots by James Warner (@jwarner8) in #1006
- Updates generate_levels_constraint documentation for ensemble functionality by David Flack (@daflack) in #1003
- Log cubes that don't merge in
load_cubeoperator by James Frost (@jfrost-mo) in #1022 - Remove unneeded
nameglobal attribute by James Frost (@jfrost-mo) in #1024 - Adds DKE functionality by David Flack (@daflack) in #1002
- Format JSON when writing by James Frost (@jfrost-mo) in #1041
- Limit domain statistics to 3 s.f. and move below plot by James Frost (@jfrost-mo) in #1040
- Require tasks to succeed in DEBUG mode by James Frost (@jfrost-mo) in #1039
- Generalise spatial plot log message by James Frost (@jfrost-mo) in #1042
- Separate words in callback function name with _ so it is easier to read by James Frost (@jfrost-mo) in #1043
- Handle sorting files outside the current directory in
sort_json.pyscript by James Frost (@jfrost-mo) in #1046 - Replace all remaining usage of typing.Union with
|by James Frost (@jfrost-mo) in #1047 - Fix typo in rose-edit help by James Frost (@jfrost-mo) in #1051
- Add configuration file for GitHub Issue templates by James Frost (@jfrost-mo) in #1035
- Merge lead time into initiation time cycling by James Frost (@jfrost-mo) in #1053
- Add utility function for equalising attributes by James Frost (@jfrost-mo) in #1052
- unify colourbar for relative_humidity between UM and LFRic. by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1038
- unify colourbar for cloud_base_altitude between um and lfric by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1059
- Reduce useless log messages by James Frost (@jfrost-mo) in #1045
- Adds collapse_by_hour_of_day operator by David Flack (@daflack) in #1034
- Sort colorbar JSON files via pre-commit hook by James Frost (@jfrost-mo) in #1060
- Handle CubeList in line plotting operator by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #954
- Ensure multiple cases are put into a single cube by David Flack (@daflack) in #1050
- Data loading improvements, including loading multiple models by James Frost (@jfrost-mo) in #1054
- Improve rose edit and simplify include files by James Frost (@jfrost-mo) in #1055
- Collapse by validity time by David Flack (@daflack) in #1067
- Update collapse_by_hour for multiple cases by David Flack (@daflack) in #1068
- Accept microsecond precision in iris times by James Frost (@jfrost-mo) in #1074
- Parallelise CI tests by James Frost (@jfrost-mo) in #1071
- Use "spawn" start method for multiprocessing by James Frost (@jfrost-mo) in #1075
- Fix issue with rose-suite.conf variable by James Warner (@jwarner8) in #1082
- Remove unnecessary computation from age-of-air test by James Frost (@jfrost-mo) in #1081
- Share multiprocessing pool across ensemble members by James Frost (@jfrost-mo) in #1080
- Add data fetching script from MASS by James Frost (@jfrost-mo) in #1084
- Spatial difference plots by James Frost (@jfrost-mo) in #1061
- Make MASS fetch data script executable by James Frost (@jfrost-mo) in #1085
- Add additional colour bar definitions from UKEP Plot by James Frost (@jfrost-mo) in #1064
- Increase default memory to 4G for processes by James Warner (@jwarner8) in #1090
- Relax shape check in difference plots by James Warner (@jwarner8) in #1088
- Deduplicate an unlimited amount of STASH warnings by James Frost (@jfrost-mo) in #1091
- Search for correct log_record in fetch_data tests by James Frost (@jfrost-mo) in #1089
- Implement required return value for MASSFileRetriever by James Frost (@jfrost-mo) in #1095
- Use CSET read operator to load test data, and improve various fragile tests by James Frost (@jfrost-mo) in #1076
- Remove housekeep_raw task from workflow by James Frost (@jfrost-mo) in #1104
- Allow
collapse.collapseto handle a CubeList by James Frost (@jfrost-mo) in #985 - Update workflow for single recipe case aggregation by lead time by David Flack (@daflack) in #1086
- Update workflow to allow case aggregation by hour of day by David Flack (@daflack) in #1101
- Updates workflow for aggregation by validity time by David Flack (@daflack) in #1102
- Handle CubeLists in
plot_vertical_line_seriesandplot_scatter_plotby Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1100 - Add dummy tasks to prevent workflow graph failures by James Frost (@jfrost-mo) in #1119
- Update rose-suite.conf.example by James Frost (@jfrost-mo) in #1121
- Fix for pressure coordinate name variants plus enforce units to be hPa by James Warner (@jwarner8) in #1106
- Fix issue where pressure coordinate returns Unit object, not str by James Warner (@jwarner8) in #1123
- Allow real-world co-ordinates to be specified in single-point timeseries. by Carol Halliwell (@cehalliwell) in #943
- Extend histogram plot with CubeList handling capability by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1116
- switch off auto-scale for x axis to avoid jumping of ticks on x axis … by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1134
- Various fixes and new recipes for pressure level functionality by James Warner (@jwarner8) in #1127
- Switch web viewer to sidebar layout by James Frost (@jfrost-mo) in #1132
- Tidy Conf by making aggregatable collapsible, and fill missing example values. by James Warner (@jwarner8) in #1135
- Histogram enhancements by James Warner (@jwarner8) in #1137
- Fix LFRic time coordinate metadata by James Warner (@jwarner8) in #1117
- Shrink sidebar font size by James Frost (@jfrost-mo) in #1142
- Various QuickLook fixes and enhancements of surface plot functionality. by James Warner (@jwarner8) in #1122
- put in colorbar for surface_net_shortwave_flux_difference by BernardClaxton (@BernardClaxton) in #1138
- Fix spelling in plot.py by James Frost (@jfrost-mo) in #1147
- Search for all varnames and allow user colorbar override by James Frost (@jfrost-mo) in #1141
- Support flexible pressure_level dependent colorbars by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1140
- Fill out colorbar definitions for missing variables by BernardClaxton (@BernardClaxton) in #1145
- Unify .gitignore to cover both workflow and library by James Frost (@jfrost-mo) in #1151
- Update environments used throughout CSET to python 3.13 by James Frost (@jfrost-mo) in #1153
- Run generate_rose_meta script as pre-commit hook by James Frost (@jfrost-mo) in #1154
- Rename workflow conda lock files by James Frost (@jfrost-mo) in #1157
- Always build conda environment within workflow share directory by James Frost (@jfrost-mo) in #1156
- Break long names in sidebar by James Frost (@jfrost-mo) in #1160
- Allow release workflow to run on pre-releases by James Frost (@jfrost-mo) in #1161
- Unify documentation building Action into pull requests check workflow by James Frost (@jfrost-mo) in #1159
- Small additions to regrid and callback by James Warner (@jwarner8) in #1158
- Fix conda failure by James Frost (@jfrost-mo) in #1162
- Revert to python 3.12 for workflow environment by James Frost (@jfrost-mo) in #1168
- Add missing settings to example suite config by James Frost (@jfrost-mo) in #1169
- Remove any repeated or UM colorbars by David Flack (@daflack) in #1177
- Fix JSON colorbar entries and ensure we use LFRic names by James Warner (@jwarner8) in #1178
- Add colorbar ranges for different pressure levels by David Flack (@daflack) in #1181
- Add shellcheck to pre-commit hooks by James Frost (@jfrost-mo) in #1184
- Set website display date at plot creation by James Frost (@jfrost-mo) in #1186
- Fix timeseries ylim based on JSON entries, and add gridlines. by James Warner (@jwarner8) in #1175
- Append suffix to difference cube long name by James Frost (@jfrost-mo) in #1189
- Simplify logging by James Frost (@jfrost-mo) in #1185
- Fix color bars by David Flack (@daflack) in #1193
- Fix colorbar for geopotential height differences by David Flack (@daflack) in #1195
- Add fixes for vertical line xlim and PDF xlim by James Warner (@jwarner8) in #1182
- Test matplotlib font logs are filtered out by James Frost (@jfrost-mo) in #1200
- Remove unneeded callback by James Warner (@jwarner8) in #1205
- Error build_conda when local CSET path not set by James Frost (@jfrost-mo) in #1203
- Draw attention to the hyperlink to download the example by James Frost (@jfrost-mo) in #1211
- Create needed parent directories when writing the website by James Frost (@jfrost-mo) in #1219
- Remove tox by James Frost (@jfrost-mo) in #1220
- Updated vertical line series pressure maximum y limit to 100hPa. by mo-LewisBlunn in #1223
- Create standard rose-suite.conf for RAL3-LFRic, with all variables populated. by James Warner (@jwarner8) in #1190
- Modify
ensure_aggregatable_across_casesto ensure NetCDF cubes are correctly merged by James Frost (@jfrost-mo) in #1199 - Model level callback to allow LFRic cubes to merge by David Flack (@daflack) in #1227
- Sort diagnostics by display name by James Frost (@jfrost-mo) in #1229
- Add iris-grib to dev dependencies by James Frost (@jfrost-mo) in #980
- Add case date as subcategory for output website by Sylvia Bohnenstengel (@Sylviabohnenstengel) in #1208
- Increase memory and wall clock limits for case aggregation tasks by David Flack (@daflack) in #1236
New Contributors
- ukmo-huw-lewis made their first contribution in #898
- Sana Mahmood (@mo-sanamahmood) made their first contribution in #934
- Carol Halliwell (@cehalliwell) made their first contribution in #943
- BernardClaxton (@BernardClaxton) made their first contribution in #1138
- mo-LewisBlunn made their first contribution in #1223
Full Changelog: v24.8.0...v25.3.0