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.
- Update departures and climatology APIs with reference period by Tom Vo in xCDAT#417
- Wrap open_dataset and open_mfdataset to flexibly open datasets by Stephen Po-Chedley in xCDAT#385
- Add better support for using custom time coordinates in temporal APIs by Tom Vo in xCDAT#415
- Raise warning if no time coords found with
decode_timesby Tom Vo in xCDAT#409 - Bump conda env dependencies by Tom Vo in xCDAT#408
- Fix
swap_lon_axis()breaking when sorting with singleton coords by Tom Vo in xCDAT#392
- Update xsearch-xcdat-example.ipynb by Stephen Po-Chedley in xCDAT#425
- Updates xesmf docs by Jason Boutte in xCDAT#432
- Add presentations and demos to sphinx toctree by Tom Vo in xCDAT#422
- Update temporal
.averageand.departuresdocstrings by Tom Vo in xCDAT#407
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.4.0...v0.5.0
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.
- Support for N axis dimensions mapped to N coordinates by
Tom Vo and Stephen Po-Chedley in
xCDAT#343
- Rename
get_axis_coord()toget_dim_coords()andget_axis_dim()toget_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
- Rename
- Decoding times (
decode_time()) is now a lazy operation, which results in significant runtime improvements by Tom Vo in xCDAT#343
- Fix
add_bounds()not ignoring 0-dim singleton coords by Tom Vo and Stephen Po-Chedley in xCDAT#343 - Fix name of spatial weights with singleton coord by Tom Vo in xCDAT#379
- Fixes
xesmfflag that was missing which broke curvilinear regridding by Jason Boutte and Stephen Po-Chedley in xCDAT#374
- Add FAQs section for temporal metadata by Tom Vo in xCDAT#383
- Add gentle introduction notebook by Tom Vo in xCDAT#373
- Link repo to Zenodo and upload GitHub releases by Tom Vo in xCDAT#367
- Update project overview, FAQs, and add a link to xarray tutorials by Tom Vo in xCDAT#365
- Update feature list, add metadata interpretation to FAQs, and add
ipythonsyntax highlighting for notebooks by Tom Vo in xCDAT#362
- Update release-drafter template by Tom Vo in xCDAT#371 and xCDAT#370
- Automate release notes generation by Tom Vo in xCDAT#368
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.3...v0.4.0
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.
- Drop leap days based on CF calendar type to calculate daily
climatologies and departures by Tom Vo and Jiwoo Lee in
xCDAT#350
- Affected CF calendar types include
gregorian,proleptic_gregorian, andstandard - 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).
- Affected CF calendar types include
- Add horizontal regridding gallery notebook by Jason Boutte in xCDAT#328
- Add doc for staying up to date with releases by Tom Vo in xCDAT#355
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.2...v0.3.3
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.
- Fix multiple temporal avg calls on same dataset breaking by Tom Vo in xCDAT#329
- Fix incorrect results for group averaging with missing data by Stephen Po-Chedley in xCDAT#320
- Fix spatial bugs: handle datasets with domain bounds out of order and zonal averaging by Stephen Po-Chedley in xCDAT#340
- Fix regridder storing NaNs for bounds by Stephen Po-Chedley in xCDAT#344
- Update README and add HPC/Jupyter Guidance by Stephen Po-Chedley in xCDAT#331
- Make
xesmfan optional dependency by Paul Durack in xCDAT#334- This is required because
xesmf(andesmpywhich is a dependency) are not supported onosx-arm64andwindowsat this time. - Once these platforms are supported,
xesmfcan become a direct dependency ofxcdat.
- This is required because
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.1...v0.3.2
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).
- Ignore singleton coordinates without dims when attempting to generate bounds by Stephen Po-Chedley in xCDAT#281
- Modify logic to not throw error for singleton coordinates (with no bounds) by Stephen Po-Chedley in xCDAT#313
- Fix
TypeErrorwith Dask Arrays from multifile datasets in temporal averaging by Stephen Po-Chedley in xCDAT#291 - Use
cftimeto avoid out of boundsdatetimewhen decoding non-CF time coordinates by Stephen Po-Chedley and Tom Vo in xCDAT#283 - Use
cftimefor temporal averaging operations to avoid out of boundsdatetimeby Stephen Po-Chedley and Tom Vo in xCDAT#302 - Fix
open_mfdataset()dropping time encoding attrs by Tom Vo in xCDAT#309 - Replace “time” references with
self._diminclass TemporalAccessorby Tom Vo in xCDAT#312
- Filters safe warnings. by Jason Boutte in xCDAT#276
- update conda install to conda create by Paul Durack in xCDAT#294
- Update project overview and planned features list by Tom Vo in xCDAT#298
- Fix bullet formatting in
README.rstandindex.rstby Tom Vo in xCDAT#299 - Fix Jupyter headings not rendering with pandoc by Tom Vo in xCDAT#318
- Unify workspace settings with
settings.jsonby Tom Vo in xCDAT#297 - Run CI/CD on “push” and “workflow_dispatch” by Tom Vo in xCDAT#287 and xCDAT#288
- Pin
numba=0.55.2in dev env and constrainnumba>=0.55.2in ci env by Tom Vo in xCDAT#280 - Update conda env yml files and add missing dependencies by Tom Vo in xCDAT#307
- Paul Durack made their first contribution in xCDAT#294
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.3.0...v0.3.1
- Add horizontal regridding by Jason Boutte in xCDAT#164
- Add averages with time dimension removed by Tom Vo in xCDAT#236
- Update
_get_weights()method inclass SpatialAccessorandclass TemporalAccessorby Tom Vo in xCDAT#252- Add
keep_weightskeyword attr to reduction methods - Make
_get_weights()public inclass SpatialAccessor
- Add
- Update
get_axis_coord()to interpret more keys by Tom Vo in xCDAT#262- Along with the
axisattr, it also now interpretsstandard_nameand the dimension name
- Along with the
- Fix
add_bounds()breaking when time coords arecftimeobjects by Tom Vo in xCDAT#241 - Fix parsing of custom seasons for departures by Tom Vo in xCDAT#246
- Update
swap_lon_axisto ignore same systems, which was causing odd behaviors for (0, 360) by Tom Vo in xCDAT#257
- Remove
class XCDATAccessorby Tom Vo in xCDAT#222 - Update spatial
axisarg supported type and keys by Tom Vo in xCDAT#226- Now only supports CF-compliant axis names (e.g., “X”, “Y”)
- Remove
center_timeskwarg from temporal averaging methods by Tom Vo in xCDAT#254
- Revert official project name from “XCDAT” to “xCDAT” by Tom Vo in xCDAT#231
- [DOC] Add CDAT API mapping table and gallery examples by Tom Vo in xCDAT#239
- Update time coordinates object type from
MultiIndextodatetime/cftimeforTemporalAccessorreduction methods and add convenience methods by Tom Vo in xCDAT#221 - Extract method
_postprocess_dataset()and make bounds generation optional by Tom Vo in xCDAT#223 - Update
add_boundskwarg default value toTrueby Tom Vo in xCDAT#230 - Update
decode_non_cf_timeto return input dataset if the time “units” attr can’t be split into unit and reference date by Stephen Po-Chedley in xCDAT#263
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.2.0...v0.3.0
- Add support for spatial averaging parallelism via Dask by Stephen Po-Chedley in xCDAT#132
- Refactor spatial averaging with more robust handling of longitude spanning prime meridian by Stephen Po-Chedley in xCDAT#152
- Update xcdat.open_mfdataset time decoding logic by Stephen Po-Chedley in xCDAT#161
- Add function to swap dataset longitude axis orientation by Tom Vo in xCDAT#145
- Add utility functions by Tom Vo in xCDAT#205
- Add temporal utilities and averaging functionalities by Tom Vo in xCDAT#107
- Add exception for coords of len <= 1 or multidimensional coords in
fill_missing_bounds()by Tom Vo in xCDAT#141 - Update
open_mfdataset()to avoid data vars dim concatenation by Tom Vo in xCDAT#143 - Fix indexing on axis keys using generic map (related to spatial averaging) by Tom Vo in xCDAT#172
- Rename accessor classes and methods for API consistency by Tom Vo in xCDAT#142
- Rename
fill_missing_bounds()toadd_missing_bounds()by Tom Vo in xCDAT#157 - Remove data variable inference API by Tom Vo in xCDAT#196
- Rename spatial file and class by Tom Vo in xCDAT#207
- update README by Jill Chengzhu Zhang in xCDAT#127
- Update readme by Jiwoo Lee in xCDAT#129
- Update
HISTORY.rstand fix docstrings by Tom Vo in xCDAT#139 - Update
README.rstcontent and add logo by Tom Vo in xCDAT#153 - Update API Reference docs to list all APIs by Tom Vo in xCDAT#155
- Add
config.ymlfor issue templates with link to discussions by Tom Vo in xCDAT#176 - Add FAQs page to docs by Tom Vo in xCDAT#181
- Fix syntax of code examples from PR #181 by Tom Vo in xCDAT#182
- Replace markdown issue templates with GitHub yml forms by Tom Vo in xCDAT#186
- Update
README.rst,index.rst, andproject_maintenance.rstby Tom Vo in xCDAT#211
- Update logger levels to debug by Tom Vo in xCDAT#148
- Update and remove logger debug messages by Tom Vo in xCDAT#193
- Add
requires_daskdecorator for tests by Tom Vo in xCDAT#177 - Update dependencies in
setup.pyanddev.ymlby Tom Vo in xCDAT#174 - Add matrix testing and ci specific conda env by Tom Vo in xCDAT#178
- Suppress xarray warning in test suite by Tom Vo in xCDAT#179
- Drop support for Python 3.7 by Tom Vo in xCDAT#187
- Update conda env dependencies by Tom Vo in xCDAT#189
- Add deps to
pre-commitmypyand fix issues by Tom Vo in xCDAT#191 - Add
matplotlibto dev env, updateci.ymland add Python 3.10 to build workflow by Tom Vo in xCDAT#203 - Replace conda with mamba in rtd build by Tom Vo in xCDAT#209
- Jill Chengzhu Zhang made their first contribution in xCDAT#127
- Jiwoo Lee made their first contribution in xCDAT#129
- Stephen Po-Chedley made their first contribution in xCDAT#132
Full Changelog: https://github.com/xCDAT/xcdat/compare/v0.1.0...v0.2.0
- Add geospatial averaging API through
DatasetSpatialAverageAccessorclass by Stephen Po-Chedley and Tom Vo in #87- Does not support parallelism with Dask yet
- Add wrappers for xarray's
open_datasetandopen_mfdatasetto 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
DatasetBoundsAccessorclass for filling missing bounds, returning mapping of bounds, returning names of bounds keys - Add
BoundsAccessorclass 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_xarraypackage (https://github.com/xarray-contrib/cf-xarray)
- Visit the docs here: https://xcdat.readthedocs.io/en/latest/index.html
- 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