History#

v0.6.1 (29 November 2023)#

This patch version adds a default value to the axes argument in ds.bounds.add_missing_bounds() (axes=["X", "Y", "T"]). The axes argument was added in v0.6.0 and did not have a default value, which inadvertently introduced a breaking change to the API.

xesmf is now a required dependency because its core library, ESMF, supports Windows as of Feb/2023. More information can be found here.

Bug Fixes#

DevOps#

Documentation#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.6.0…v0.6.1

v0.6.0 (10 October 2023)#

This minor version update consists of new features including vertical regridding (extension of xgcm), functions for producing accurate time bounds, and improving the usability of the create_grid API. It also includes bug fixes to preserve attributes when using regrid2 horizontal regridder and fixing multi-file datasets spatial average orientation and weights when lon bounds span prime meridian.

Features#

Deprecation#

Bug Fixes#

Horizontal Regridding#

Spatial Averaging#

Documentation#

DevOps#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.5.0…v0.6.0

v0.5.0 (27 March 2023)#

This long-awaited minor release includes feature updates to support an optional user-specified climatology reference period when calculating climatologies and departures, support for opening datasets using the directory key of the legacy CDAT Climate Data Markup Language (CDML) format (an XML dialect), and improved support for using custom time coordinates in temporal APIs.

This release also includes a bug fix for singleton coordinates breaking the swap_lon_axis() function. Additionally, Jupyter Notebooks for presentations and demos have been added to the documentation.

Features#

Bug Fixes#

Documentation#

DevOps#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.4.0…v0.5.0

v0.4.0 (9 November 2022)#

This minor release includes a feature update to support datasets that have N dimensions mapped to N coordinates to represent an axis. This means xcdat APIs are able to intelligently select which axis’s coordinates and bounds to work with if multiple are present within the dataset. Decoding time is now a lazy operation, leading to significant upfront runtime improvements when opening datasets with decode_times=True.

A new notebook called “A Gentle Introduction to xCDAT” was added to the documentation gallery to help guide new xarray/xcdat users. xCDAT is now hosted on Zenodo with a DOI for citations.

There are various bug fixes for bounds, naming of spatial weights, and a missing flag for xesmf that broke curvilinear regridding.

Features#

  • Support for N axis dimensions mapped to N coordinates by Tom Vo and Stephen Po-Chedley in xCDAT/xcdat#343

    • Rename get_axis_coord() to get_dim_coords() and get_axis_dim() to get_dim_keys()

    • Update spatial and temporal accessor class methods to refer to the dimension coordinate variable on the data_var being operated on, rather than the parent dataset

  • Decoding times (decode_time()) is now a lazy operation, which results in significant runtime improvements by Tom Vo in xCDAT/xcdat#343

Bug Fixes#

Documentation#

DevOps#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.3…v0.4.0

v0.3.3 (12 October 2022)#

This patch release fixes a bug where calculating daily climatologies/departures for specific CF calendar types that have leap days breaks when using cftime. It also includes documentation updates.

Bug Fixes#

  • Drop leap days based on CF calendar type to calculate daily climatologies and departures by Tom Vo and Jiwoo Lee in xCDAT/xcdat#350

    • Affected CF calendar types include gregorian, proleptic_gregorian, and standard

    • Since a solution implementation for handling leap days is generally opinionated, we decided to go with the route of least complexity and overhead (drop the leap days before performing calculations). We may revisit adding more options for the user to determine how they want to handle leap days (based on how valuable/desired it is).

Documentation#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.2…v0.3.3

v0.3.2 (16 September 2022)#

This patch release focuses on bug fixes related to temporal averaging, spatial averaging, and regridding. xesmf is now an optional dependency because it is not supported on osx-arm64 and windows at this time. There is a new documentation page for HPC/Jupyter guidance.

Bug Fixes#

Temporal Average#

Spatial Average#

Horizontal Regridding#

Documentation#

Dependencies#

  • Make xesmf an optional dependency by Paul Durack in xCDAT/xcdat#334

    • This is required because xesmf (and esmpy which is a dependency) are not supported on osx-arm64 and windows at this time.

    • Once these platforms are supported, xesmf can become a direct dependency of xcdat.

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.1…v0.3.2

v0.3.1 (18 August 2022)#

This patch release focuses on bug fixes including handling bounds generation with singleton coordinates and the use of cftime to represent temporal averaging outputs and non-CF compliant time coordinates (to avoid the pandas Timestamp limitations).

Bug Fixes#

Bounds#

Time Axis and Coordinates#

Internal Changes#

Documentation#

DevOps#

New Contributors#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.0…v0.3.1

v0.3.0 (27 June 2022)#

New Features#

  • Add horizontal regridding by Jason Boutte in xCDAT/xcdat#164

  • Add averages with time dimension removed by Tom Vo in xCDAT/xcdat#236

  • Update _get_weights() method in class SpatialAccessor and class TemporalAccessor by Tom Vo in xCDAT/xcdat#252

    • Add keep_weights keyword attr to reduction methods

    • Make _get_weights() public in class SpatialAccessor

  • Update get_axis_coord() to interpret more keys by Tom Vo in xCDAT/xcdat#262

    • Along with the axis attr, it also now interprets standard_name and the dimension name

Bug Fixes#

Breaking Changes#

Documentation#

Internal Changes#

  • Update time coordinates object type from MultiIndex to datetime/cftime for TemporalAccessor reduction methods and add convenience methods by Tom Vo in xCDAT/xcdat#221

  • Extract method _postprocess_dataset() and make bounds generation optional by Tom Vo in xCDAT/xcdat#223

  • Update add_bounds kwarg default value to True by Tom Vo in xCDAT/xcdat#230

  • Update decode_non_cf_time to return input dataset if the time “units” attr can’t be split into unit and reference date by Stephen Po-Chedley in xCDAT/xcdat#263

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.2.0…v0.3.0

v0.2.0 (24 March 2022)#

New Features#

Bug Fixes#

Breaking Changes#

Documentation#

Deprecations#

Internal Changes#

DevOps#

New Contributors#

Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.1.0…v0.2.0

v0.1.0 (7 October 2021)#

New Features#

  • Add geospatial averaging API through DatasetSpatialAverageAccessor class by Stephen Po-Chedley and Tom Vo in #87

    • Does not support parallelism with Dask yet

  • Add wrappers for xarray’s open_dataset and open_mfdataset to apply common operations such as:

    • If the dataset has a time dimension, decode both CF and non-CF time units

    • Generate bounds for supported coordinates if they don’t exist

    • Option to limit the Dataset to a single regular (non-bounds) data variable while retaining any bounds data variables

  • Add DatasetBoundsAccessor class for filling missing bounds, returning mapping of bounds, returning names of bounds keys

  • Add BoundsAccessor class for accessing xcdat public methods from other accessor classes

    • This will be probably be the API endpoint for most users, unless they prefer importing the individual accessor classes

  • Add ability to infer data variables in xcdat APIs based on the “xcdat_infer” Dataset attr

    • This attr is set in xcdat.open_dataset(), xcdat_mfdataset(), or manually

  • Utilizes cf_xarray package (xarray-contrib/cf-xarray)

Documentation#

DevOps#

Full Changelog: xCDAT/xcdat