What's New
v2026.03.b1 - 30th March 2026
New Features
-
Introduction of
NEMODataArrayobject, including manual andNEMODataTreeconstructors:-
NEMODataArrayproperties to support grid-aware computation (e.g.,.mask,.metrics,.gridetc.). -
NEMODataArraymethods:- Masking:
.apply_mask(). - Selections:
.sel_like(). - Grid Operators:
.diff(),.derivative(),.integral(),.depth_integral(). - Statistics:
.weighted_mean(),.masked_statistic(). - Interpolation:
.interp_to(). - Grid Transformations:
.transform_vertical_grid().
- Masking:
-
-
Addition of
.depth_integral()method to integrate a variable defined on a given NEMO model grid in depth coordinates between two depth limits. -
Addition of
.weighted_mean()method to perform a grid-aware weighted mean of a variable defined on a NEMO model grid. -
Update to
NEMODataTreeconstructors: -
NEMODataTreesupports NEMO model outputs using the linear free-surface approximation (i.e., time-independent vertical scale factors) viakey_linssh=True. -
Defined Pixi workspace & environments (
pixi.toml) to support NEMO Cookbook development.
New Recipes
- Two additional NEMO Cookbook Recipes:
- Upper Ocean Heat Content -
recipe_heat_content.ipynb - Meridional Ocean Heat Transport -
recipe_heat_transport.ipynb
Breaking Changes
-
.transform_to()method to linearly interpolate a variable to a neighbouring NEMO grid renamed tointerp_to(). -
Using dictionary syntax to access a variable from a
NEMODataTreeno longer returns a land-sea masked variable. Instead, an unmaskedNEMODataArrayis returned, which can be subsequently masked using the.maskedattribute. -
Started Deprecation Cycle for legacy
NEMODataTreemethods & included deprecation warnings for affected methods. These methods will be removed from NEMO Cookbook in v2026.05 later this year.
Bug Fixes
- Fix
.add_geoindex()usingxoak.SklearnGeoBallTreeAdapter& addedxoakdependency. - Fix
.extract_section()to improve boundary indexing and add land-sea masks - Fix nested test class
TestNEMODataTreeUtils()intest_nemodatatree.py - Fix potential NameError in
create_section_polygon()where section endpoints share same latitude. - Fix TypeError (keep_dims=None) in compute_binned_statistic() in stats.py.
- Fix alignment error in
interpolate_grid()utility function.
Documentation
- Reorganise User Guide to add NEMO Fundamentals section and improve
NEMODataArraydescription. - Update contributing guidance in docs to add getting started with Pixi & GitHub.
- Add .ipynb template and GitHub Issue template for NEMO Cookbook recipes.
- Update How To... guide to include
NEMODataArrayusage.
Full Changelog: https://github.com/NOC-MSM/nemo_cookbook/compare/v2026.01.0b1...v2026.03.0b1
v2026.01.b1 - 18th January 2026
New Features
- Introduction of
NEMODataTreeobject, including.from_paths()and.from_datasets()constructors.NEMODataTreemethods to calculate model grid cell properties (e.g.,.cell_area()).NEMODataTreemethods to perform grid-aware scalar and vector operations (e.g.,.gradient(),.integral().NEMODataTreemethods to calculate grid-aware masked and binned statistics (e.g.,.masked_statistic(),.binned_statistic())NEMODataTreemethods to transform model grid coordinates (e.g.,.transform_to())
New Recipes
- NEMO Cookbook Recipes, including
- Meridional overturning stream function in an arbitrary tracer coordinates.
- Meridional overturning stream function in depth coordinates (z/z*).
- Meridional heat & salt transports.
- Surface-forced water mass transformation in potential density coordinates.
- Volume census in T-S coordinates.
- Masked statistics using bounding boxes and polygons.
- Extracting volume transports and properties along the Overturning in the Subpolar North Atlantic array.
- Vertical coordinate transformations.
- Barotropic stream functions.
Full Changelog: https://github.com/NOC-MSM/nemo_cookbook/commits/v2026.01.0b1