What's New
v2026.09.01 - 10th September 2026
New Features
-
Added
extract_meridional_section()method toNEMODataTree:- Enables users to extract an approximately meridional section at a chosen longitude from a NEMODataTree.
- Hydrographic section will be located at the constant i-coordinate whose average longitude (following selection between lat_min and lat_max) is closest to the given longitude.
-
Added
concat()andmerge()methods ofNEMODataTreeenabling users to merge variables contained in two or moreNEMODataTreesor concatenate variables contained in two or moreNEMODataTreesalong a new or existing dimension. -
Added
geoplot()method ofNEMODataArrayenabling users to plot a 2-dimensional horizontal slice of a variable in geographical coordinates using Cartopy.
Refactored
- Updated
divergence()&curl()method ofNEMODataArrayto utiliseNEMODataArraydifferencing operations.
Bug Fixes
- Fix bug in
interp_to()when applied toNEMODataArraysin nested NEMO model domains
Deprecated
- Deprecated
NEMODataTree.gradient()method. Users should useNEMODataArray.derivative()to calculate derivatives of scalar and vector variables along a given dimension.
Documentation
- Refactored User Guide to include separate sections on NEMO fundamentals, data structures and core operations.
- Added new
NEMODataTree&NEMODataArraymethods to How To... Guide.. - Added new pipelines page to document use of NEMO Pipeline for undertaking NEMO Cookbook diagnostics at scale.
Pull Requests
- 36 refactor improve performance of nemodatatree constructors by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/39
- 37 feature add nemodataarraygeoplot method by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/40
- 38 refactor improve performance of clip grid by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/41
- Fix for #43 - bug in interp_to() by @atb299 in https://github.com/NOC-MSM/nemo_cookbook/pull/44
- 45 update geoplot method to support customisation by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/48
- 46 add support for 3 dimensional depth coordinates by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/49
- 47 add option to retain ghost points in nested nemodatatrees by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/50
- 51 feature add extract meridional section method by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/56
- 57 feature automated iperio nftype and name discovery during nemodatatree creation by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/58
- 55 refactor replace existing nemodatatree curl and divergence methods by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/59
- 60 feature add merge and concat methods to combine nemodatatrees by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/61
- 53 docs refactor the nemo cookbook user guide by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/62
New Contributors
- @atb299 made their first contribution in https://github.com/NOC-MSM/nemo_cookbook/pull/44
Full Changelog: https://github.com/NOC-MSM/nemo_cookbook/compare/v2026.06.01...v2026.09.01
v2026.06.01 - 23rd June 2026
New Features
-
Added
extract_zonal_section()method toNEMODataTree:- Enables users to extract an approximately zonal section at a chosen latitude from a NEMODataTree.
- Hydrographic section will be located at the constant j-coordinate whose average latitude (following selection between lon_min and lon_max) is closest to the given latitude.
-
Added
from_xesmf()accessor forNEMODataArrayenabling users to import an xESMF-compatiblexarray.Datasetto a NEMO model variable. -
Add reference vertical scale factors
e3{t/u/v/w}_0and water column heightsh{t/u/v/w}_0toNEMODataTreeconstruction.
New Recipes
- Two additional NEMO Cookbook Recipes:
- Extracting Zonal Hydrographic Sections -
recipe_extract_rapid.ipynb - Working with CMORISED NEMO ocean model outputs -
recipe_cmip6.ipynb
Breaking Changes
extract_section()expected parameterslon,latrenamed tolon_section,lat_section.
Bug Fixes
- Fix interp_to(), depth_integral() and transform_vertical_grid() to preserve core dimensions when size(time_counter)=1 - @robertsmalcolm
- Update
_check_grid_dims()to handle singleton dims in domain_cfg - Update
processing.pyto improve performance of merging NEMO gridT and icemod datasets - @atb299
Documentation
- Added required core dimensions for
NEMODataTreeconstructors to User Guide & How To... Guide. - Added two new NEMO Cookbook recipes to documentation.
Pull Requests
- 29 [feature] add from_xesmf method by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/30
- 32 feature add extract zonal section method to nemodatatree by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/33
- 34 feature add cmorised nemodatatree recipe by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/35
Full Changelog: https://github.com/NOC-MSM/nemo_cookbook/compare/v2026.04.0b1...v2026.06.01
v2026.04.b1 - 30th April 2026
New Features
-
Introduction of
from_icechunk()andfrom_zarr()constructors forNEMODataTree:- Enables users to open a
NEMODataTreefrom anxarray.DataTreestored in a hierarchical Zarr store or Icechunk store where each group contains one NEMO model grid node dataset. - Definition of
NEMODataTreegrid nodes is now validated to ensure expected coordinates, dimensions, land-sea masks and grid cell scale factors are included.
- Enables users to open a
-
Addition of
to_xesmf()accessor forNEMODataArrayenabling users to export a NEMO model variable to an xESMF-compatiblexarray.Dataset.
New Recipes
- Three additional NEMO Cookbook Recipes:
- Regridding using xESMF-
recipe_xesmf.ipynb - Sea Ice Diagnostics -
recipe_sea_ice.ipynb - Extracting mask boundaries -
recipe_extract_mask_boundary.ipynb
Breaking Changes
read_mask=Trueexpectst/u/v/fmaksutil2-dimensional land-sea unique point masks must be included in the input domain_cfg dataset, otherwise useread_mask=False
Bug Fixes
- Fix
.extract_mask_boundary()andextract.pyto support nested NEMO model domains where coordinates are notglamb,gphib - **Improved performance of
NEMODataArrayvalidation andset_like()methods.
Documentation
- Update How To... guide to include
to_xesmfusage to produce xESMF-compatiblexarray.DatasetsfromNEMODataArrays. - Added Marimo and Google Colab notebook previews of all existing NEMO Cookbook recipes, including adding badges to table of recipes in docs.
Pull Requests
- 16 refactor improve performance of nemodataarray methods by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/23
- 19 add marimo notebook support for recipes by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/24
- 17 feature add from icechunk nemodatatree constructor by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/25
- 22 feature add accessor to support xesmf regridding by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/26
- 20 add new nemo cookbook recipes by @oj-tooth in https://github.com/NOC-MSM/nemo_cookbook/pull/27
Full Changelog: https://github.com/NOC-MSM/nemo_cookbook/compare/v2026.03.0b1...v2026.04.0b1
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