Skip to content

Releases: xCDAT/xcdat

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

v0.2.0

24 Mar 18:20
1fdc8a9
Compare
Choose a tag to compare

v0.2.0 (24 March 22)

New Features

  • Add support for spatial averaging parallelism via Dask by @pochedls in #132
  • Refactor spatial averaging with more robust handling of longitude spanning prime meridian by @pochedls in #152
  • Update xcdat.open_mfdataset time decoding logic by @pochedls in #161
  • Add function to swap dataset longitude axis orientation by @tomvothecoder in #145
  • Add utility functions by @tomvothecoder in #205
  • Add temporal utilities and averaging functionalities by @tomvothecoder in #107

Bug Fixes

  • Add exception for coords of len <= 1 or multidimensional coords in fill_missing_bounds() by @tomvothecoder in #141
  • Update open_mfdataset() to avoid data vars dim concatenation by @tomvothecoder in #143
  • Fix indexing on axis keys using generic map (related to spatial averaging) by @tomvothecoder in #172

Breaking Changes

Documentation

Deprecations

Internal Changes

DevOps

New Contributors

Full Changelog: v0.1.0...v0.2.0

v0.1.0

07 Oct 22:44
21dad38
Compare
Choose a tag to compare

Below is a summary of changes in this version. In subsequent changelogs, the exact commits will be listed.

Features

  • Add geospatial averaging API through DatasetSpatialAverageAccessor class by @pochedls and @tomvothecoder 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 (https://github.com/xarray-contrib/cf-xarray)

Docs

CI/CD

Full Changelog: https://github.com/XCDAT/xcdat/commits/v0.1.0