Skip to content

Releases: xCDAT/xcdat

v0.7.0

10 Apr 20:40
799b81f
Compare
Choose a tag to compare

v0.7.0 (10 April 2024)

This minor release includes enhancements to the performance of the Regrid2 API and fixes Regrid2 to align the behavior of how missing values are handled with CDAT. There are various other bug fixes and documentation updates listed below.

Enhancements

  • Improving regrid2 performance by @jasonb5 in #533
  • Update Regrid2 missing and fill value behaviors to align with CDAT and add unmapped_to_nan arg for output data by @jasonb5 in #613

Bug Fixes

  • Fix Regrid2 to convert bounds as Dask Arrays to NumPy Arrays for compatibility with NumPy based code by @tomvothecoder and @lee1043 in #634
  • Fix climo notebook missing T bounds and add notebook env setup in all example notebooks by @tomvothecoder in #623
  • Update unweighted temporal averages to not require bounds by @tomvothecoder in #579

Documentation

Deprecations

  • Remove deprecated features and APIs by @tomvothecoder in #628, including:
    • horizontal_xesmf() and horizontal_regrid2()
    • **kwargs from create_grid()
    • add_bounds accepting boolean arg in open_dataset() and open_mfdataset()
    • Remove CDML/XML support from open_dataset() and open_mfdataset() since CDAT is EOL since Dec/2023

Full Changelog: v0.6.1...0.7.0

v0.6.1

29 Nov 17:46
104a5d5
Compare
Choose a tag to compare

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

  • Update doc: Add link to the ESFG seminar xCDAT introduction video by @lee1043 in #571
  • Fix v0.6.0 changelog headers for proper nesting by @tomvothecoder in #559

Full Changelog:

v0.6.0...v0.6.1

v0.6.0

10 Oct 20:51
2325f29
Compare
Choose a tag to compare

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

  • Improves error when axis is missing/incorrect attributes with regrid2 by @jasonb5 in #481
  • Fixes preserving ds/da attributes in the regrid2 module by @jasonb5 in #468
  • Fixes duplicate parameter in regrid2 docs by @jasonb5 in #532

Spatial Averaging

  • Fix multi-file dataset spatial average orientation and weights when lon bounds span prime meridian by @pochedls in #495

Documentation

DevOps

Full Changelog: v0.5.0...v0.6.0

v0.6.0rc1

07 Jul 18:06
870b334
Compare
Choose a tag to compare
v0.6.0rc1 Pre-release
Pre-release

v0.6.0rc1 (7 July 2023)

This is the first release candidate for the upcoming v0.6.0 release. This version is intended to be used for testing new features, improvements, and bug fixes. Refer to the changelog below for more information.

Features

  • Functions to produce accurate time bounds by @pochedls in #418
  • Add API extending xgcm vertical regridding by @jasonb5 in #388
  • Update create_grid args to improve usability by @jasonb5 in #507

Bug Fixes

  • Improves error when axis is missing/incorrect attributes by @jasonb5 in #481
  • Fix multi-file dataset spatial average orientation and weights when lon bounds span prime meridian by @pochedls in #495
  • Fixes preserving ds/da attributes in the regrid2 module by @jasonb5 in #468

Deprecations

  • Add deprecation warning for CDML/XML support in open_mfdataset() by @tomvothecoder in #503

Documentation

DevOps

Full Changelog: v0.5.0...v0.6.0rc1

v0.5.0

27 Mar 21:36
d0a4892
Compare
Choose a tag to compare

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

  • Update departures and climatology APIs with reference period by @tomvothecoder in #417
  • Wrap open_dataset and open_mfdataset to flexibly open datasets by @pochedls in #385
  • Add better support for using custom time coordinates in temporal APIs by @tomvothecoder in #415

Bug Fixes

Documentation

DevOps

Full Changelog: v0.4.0...0.5.0

v0.4.0

09 Nov 22:57
d5d4fd7
Compare
Choose a tag to compare

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 @tomvothecoder and @pochedls in #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 @tomvothecoder in #343

Bug Fixes

Documentation

DevOps

Full Changelog: v0.3.3...v0.4.0

v0.3.3

12 Oct 18:28
36a3539
Compare
Choose a tag to compare

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 @tomvothecoder and @lee1043 in #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 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

Dependencies

Full Changelog: v0.3.2...v0.3.3

v0.3.2

16 Sep 18:08
d37e052
Compare
Choose a tag to compare

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

  • Fix multiple temporal avg calls on same dataset breaking by @tomvothecoder in #329
  • Fix incorrect results for group averaging with missing data by @pochedls in #320

Spatial Average

  • Fix spatial bugs: handle datasets with domain bounds out of order and zonal averaging by @pochedls in #340

Horizontal Regridding

Documentation

  • Update README and add HPC/Jupyter Guidance by @pochedls in #331

Dependencies

  • Make xesmf an optional dependency by @durack1 in #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: v0.3.1...v0.3.2

v0.3.1

18 Aug 18:00
e38fe72
Compare
Choose a tag to compare

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

  • Fix TypeError with Dask Arrays from multifile datasets in temporal averaging by Stephen Po-Chedley in #291
  • Use cftime to avoid out of bounds datetime when decoding non-CF time coordinates by Stephen Po-Chedley and Tom Vo in #283
  • Use cftime for temporal averaging operations to avoid out of bounds datetime by Stephen Po-Chedley and Tom Vo in #302
  • Fix open_mfdataset() dropping time encoding attrs by Tom Vo in #309
  • Replace "time" references with self._dim in class TemporalAccessor by Tom Vo in #312

Internal Changes

Documentation

  • update conda install to conda create by Paul Durack in #294
  • Update project overview and planned features list by Tom Vo in #298
  • Fix bullet formatting in README.rst andindex.rst by Tom Vo in #299
  • Fix Jupyter headings not rendering with pandoc by Tom Vo in #318

DevOps

  • Unify workspace settings with settings.json by Tom Vo in #297
  • Run CI/CD on "push" and "workflow_dispatch" by Tom Vo in #287 and #288
  • Pin numba=0.55.2 in dev env and constrain numba>=0.55.2 in ci env by Tom Vo in #280
  • Update conda env yml files and add missing dependencies by Tom Vo in #307

New Contributors

Full Changelog: v0.3.0...v0.3.1

v0.3.0

27 Jun 21:48
ee5b703
Compare
Choose a tag to compare

v0.3.0 (27 June 2022)

New Features

  • Add horizontal regridding by @jasonb5 in #164
  • Add averages with time dimension removed by @tomvothecoder in #236
  • Update _get_weights() method in class SpatialAccessor and class TemporalAccessor by @tomvothecoder in #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 @tomvothecoder in #262
    • Along with the axis attr, it also now interprets standard_name and the dimension name

Bug Fixes

  • Fix add_bounds() breaking when time coords are cftime objects by @tomvothecoder in #241
  • Fix parsing of custom seasons for departures by @tomvothecoder in #246
  • Update swap_lon_axis to ignore same systems, which was causing odd behaviors for (0, 360) by @tomvothecoder in #257

Breaking Changes

  • Remove class XCDATAccessor by @tomvothecoder in #222
  • Update spatial axis arg supported type and keys by @tomvothecoder in #226
    • Now only supports CF-compliant axis names (e.g., "X", "Y")
  • Remove center_times kwarg from temporal averaging methods by @tomvothecoder in #254

Documentation

Internal Changes

  • Update time coordinates object type from MultiIndex to datetime/cftime for TemporalAccessor reduction methods and add convenience methods by @tomvothecoder in #221
  • Extract method _postprocess_dataset() and make bounds generation optional by @tomvothecoder in #223
  • Update add_bounds kwarg default value to True by @tomvothecoder in #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 @pochedls in #263

New Contributors

Full Changelog: v0.2.0...v0.3.0