v3.0.0 Modernization with Xarray and xCDAT
What's Changed
v3.0.0 marks a major milestone after nearly two years of work by the core development team. This release introduces a completely new back-end, replacing CDAT with Xarray and xCDAT. Due to the significant scale of code changes, this has been incremented as a major release. The user-facing API for running E3SM Diagnostics remains backward-compatible between v2 and v3.
The modernization improves performance, usability, and maintainability, paving the way for future enhancements to E3SM development. The refactored codebase is now more robust and extensively covered by unit tests, setting a solid foundation for ongoing testing and development.
This release also includes several new enhancements including support for more EAMxx variables, standardization of regridding with xESMF's conservative_normed method, and improving diagnostic run performance by skipping unnecessary regridding of datasets with the same lat-lon grid.
We are excited to share this release with the E3SM community and remain committed to continuously improving the software!
Enhancements
- Add support for more EAMxx variables by @chengzhuzhang, @tomvothecoder, and @czender in #880
- Standardize regridding to
conservative_normedby @tomvothecoder and @chengzhuzhang in #940 - Improve diagnostic run performance by skipping regridding for two datasets on same lat-lon grids by @chengzhuzhang in #959
- Revamp logging to improve readability and output E3SM diagnostic configuration, prevent duplicate log messages, and save complete console output to log file in
provdirectory by @tomvothecoder in #924 - Make viewer accessible at the top-level of results directory by @tomvothecoder in #927
Bug Fixes
- Fix prov files not printing with links in
provindex.html by @tomvothecoder in #937
Refactor and testing
- Merge v3.0.0 development branch (
cdat-migration-fy24) intomainwith the new Xarray/xCDAT backend by @tomvothecoder, @chengzhuzhang, @forsyth2, and @xylar in #902
DevOps
- Replace deprecated SciPy cwt with PyWavelets cwt by @tomvothecoder, @chengzhuzhang, and @whannah1 in #913
- Make
scipya base dependency inci.ymlanddev.ymlby @tomvothecoder in #905 - Constrain
dask !=2024.12.0,!=2024.12.1for performance by @tomvothecoder in #926 - Replace data downloads from LCRC webserver to avoid throttling by using data containers by @mahf708 in #901
- Adopt
ruffas the central tool for linting and formatting by @tomvothecoder in #920
Full Changelog: v2.12.1...v3.0.0