Releases: xCDAT/xcdat
v0.3.2
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
Dependencies
- Make
xesmf
an optional dependency by @durack1 in #334- This is required because
xesmf
(andesmpy
which is a dependency) are not supported onosx-arm64
andwindows
at this time. - Once these platforms are supported,
xesmf
can become a direct dependency ofxcdat
.
- This is required because
Full Changelog: v0.3.1...v0.3.2
v0.3.1
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
- Ignore singleton coordinates without dims when attempting to generate bounds Stephen Po-Chedley in #281
- Modify logic to not throw error for singleton coordinates (with no bounds) by Stephen Po-Chedley in #313
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 boundsdatetime
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 boundsdatetime
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
inclass TemporalAccessor
by Tom Vo in #312
Internal Changes
- Filters safe warnings. by Jason Boutte in #276
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 constrainnumba>=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
- Paul Durack made their first contribution in #294
Full Changelog: v0.3.0...v0.3.1
v0.3.0
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 inclass SpatialAccessor
andclass TemporalAccessor
by @tomvothecoder in #252- Add
keep_weights
keyword attr to reduction methods - Make
_get_weights()
public inclass SpatialAccessor
- Add
- Update
get_axis_coord()
to interpret more keys by @tomvothecoder in #262- Along with the
axis
attr, it also now interpretsstandard_name
and the dimension name
- Along with the
Bug Fixes
- Fix
add_bounds()
breaking when time coords arecftime
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
- Revert official project name from "XCDAT" to "xCDAT" by @tomvothecoder in #231
- [DOC] Add CDAT API mapping table and gallery examples by @tomvothecoder in #239
Internal Changes
- Update time coordinates object type from
MultiIndex
todatetime
/cftime
forTemporalAccessor
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 toTrue
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
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
- Rename accessor classes and methods for API consistency by @tomvothecoder in #142
- Rename
fill_missing_bounds()
toadd_missing_bounds()
by @tomvothecoder in #157 - Remove data variable inference API by @tomvothecoder in #196
- Rename spatial file and class by @tomvothecoder in #207
Documentation
- update README by @chengzhuzhang in #127
- Update readme by @lee1043 in #129
- Update
HISTORY.rst
and fix docstrings by @tomvothecoder in #139 - Update
README.rst
content and add logo by @tomvothecoder in #153 - Update API Reference docs to list all APIs by @tomvothecoder in #155
- Add
config.yml
for issue templates with link to discussions by @tomvothecoder in #176 - Add FAQs page to docs by @tomvothecoder in #181
- Fix syntax of code examples from PR #181 by @tomvothecoder in #182
- Replace markdown issue templates with GitHub yml forms by @tomvothecoder in #186
- Update
README.rst
,index.rst
, andproject_maintenance.rst
by @tomvothecoder in #211
Deprecations
Internal Changes
- Update logger levels to debug by @tomvothecoder in #148
- Update and remove logger debug messages by @tomvothecoder in #193
DevOps
- Add
requires_dask
decorator for tests by @tomvothecoder in #177 - Update dependencies in
setup.py
anddev.yml
by @tomvothecoder in #174 - Add matrix testing and ci specific conda env by @tomvothecoder in #178
- Suppress xarray warning in test suite by @tomvothecoder in #179
- Drop support for Python 3.7 by @tomvothecoder in #187
- Update conda env dependencies by @tomvothecoder in #189
- Add deps to
pre-commit
mypy
and fix issues by @tomvothecoder in #191 - Add
matplotlib
to dev env, updateci.yml
and add Python 3.10 to build workflow by @tomvothecoder in #203 - Replace conda with mamba in rtd build by @tomvothecoder in #209
- Bump to 0.2.0 by @tomvothecoder in #212
New Contributors
- @chengzhuzhang made their first contribution in #127
- @lee1043 made their first contribution in #129
- @pochedls made their first contribution in #132
Full Changelog: v0.1.0...v0.2.0
v0.1.0
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
andopen_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
- This attr is set in
- Utilizes
cf_xarray
package (https://github.com/xarray-contrib/cf-xarray)
Docs
- Visit the docs here: https://xcdat.readthedocs.io/en/latest/index.html
CI/CD
- 100% code coverage (https://app.codecov.io/gh/XCDAT/xcdat)
- GH Actions for CI/CD build (https://github.com/XCDAT/xcdat/actions)
- Pytest and pytest-cov for test suite
Full Changelog: https://github.com/XCDAT/xcdat/commits/v0.1.0