Releases: xCDAT/xcdat
v0.7.3
v0.7.3 (06 November 2024)
This patch release updates the NumPy constraint to numpy >=2.0.0,<3.0.0
to ensure compatibility with NumPy 2.0 (which introduces breaking changes). It also fixes a bug in the get_bounds()
method where bounds could not be found on supported non-CF axes (e.g., "latitude", "longitude", etc.) even with the "bounds"
attribute set on the axes.
Bug Fixes
- Update
get_bounds()
to support mappable non-CF axes using"bounds"
attr by @tomvothecoder in #708
Documentation
- Add link to SciPy talk in docs by @tomvothecoder in #704
DevOps
- Adopt
ruff
as the central tool for linting, formatting, and import sorting by @tomvothecoder in #702 - Update numpy constraint to
>=2.0.0,<3.0.0
by @tomvothecoder and @xylar in #711, #712 - Replace
setup.py
withpyproject.toml
for modern Python packaging by @tomvothecoder and @xylar in #712
Full Changelog: v0.7.2...v0.7.3
v0.7.2
v0.7.2 (02 October 2024)
This patch release introduces significant performance improvements to the temporal grouping averaging APIs (group_average
, climatology
, and departures
) and adds support for piControl and other simulations that have time coordinates starting at year 1 (e.g., "0001-01-01") when dropping incomplete seasons.
Enhancements
- [Refactor] Improve the performance of temporal group averaging by @tomvothecoder in #689
Bug Fixes
- Update temporal.py to properly handle piControl and other simulations that start at year 1 when dropping incomplete seasons by @lee1043 in #696
Documentation
- Add project logos to README and project overview page on docs by @tomvothecoder in #686
- Add links to JOSS and DOE EESM content by @tomvothecoder in #682
- Add SciPy 2024 talk material by @tomvothecoder in #658, #678, #679, #680
- Add JOSS badge to README by @tomvothecoder in #674
DevOps
- Update
setup.py
classifiers by @tomvothecoder in #691 - Update build workflow by @tomvothecoder in #698
Full Changelog: v0.7.1...v0.7.2
v0.7.1
v0.7.1 (24 June 2024)
This patch release fixes a bug in the Regrid2 API where a static order of dimensions are incorrectly expected. It updates add_missing_bounds()
to convert np.timedelta64
values to pandas.Timedelta
objects to support Xarray's datetime component accessor.
This release also includes numerous updates to the documentation, including adding a general guide to parallel computing with Dask notebook (link). It also ensures all existing notebooks and documentation are up to date with the latest and relevant information.
Bug Fixes
- Fixes regrid2 mapping output to input ordering by @jasonb5 in #653
- Update
add_missing_bounds()
to convertnp.timedelta64
topd.Timedelta
to support Xarray's datetime component accessor by @lee1043 in #660
Documentation
- Add JOSS paper by @tomvothecoder in #567
- Add Parallel Computing with Dask Jupyter Notebook by @tomvothecoder in #489
- Update regridding notebook for v0.7.0 by @chengzhuzhang in #646
- Update FAQs, HPC guide, and Gentle Introduction by @tomvothecoder in #650
- Simplify the contributing guide by @tomvothecoder in #593
- Update notebook env setup instructions with kernel by @tomvothecoder in #652
- Add instructions for setting
ESMFMKFILE
and update links to xESMF docs by @tomvothecoder in #643 - Temporal average notebooks maintanance by @lee1043 in #633
- Review of spatial averaging and general dataset utilities by @pochedls in #644
Full Changelog: v0.7.0...v0.7.1
v0.7.0
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
- Update documentation styling for easier navigation by @tomvothecoder and @pochedls in #624 and #630
- Add list of projects using xCDAT by @tomvothecoder in #617
- [PR]: Update documentation on temporal averaging, usage of bounds, and generation of weights by @tomvothecoder in #601
- Fix ESMFMKFILE env variable not set in RTD build by @tomvothecoder in #577
Deprecations
- Remove deprecated features and APIs by @tomvothecoder in #628, including:
horizontal_xesmf()
andhorizontal_regrid2()
**kwargs
fromcreate_grid()
add_bounds
accepting boolean arg inopen_dataset()
andopen_mfdataset()
- Remove CDML/XML support from
open_dataset()
andopen_mfdataset()
since CDAT is EOL since Dec/2023
Full Changelog: v0.6.1...0.7.0
v0.6.1
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
- Add defaults to add_missing_bounds by @acordonez in #569
DevOps
- Make xESMF a required dependency by @tomvothecoder in #566
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.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
- Functions to produce accurate time bounds by @pochedls in #418
- Add API extending xgcm vertical regridding by @jasonb5 in #388, #535, #525
- Update
create_grid
args to improve usability by @jasonb5 in #507, #539
Deprecation
- Add deprecation warnings for
add_bounds
boolean args by @tomvothecoder in #548, - Add deprecation warning for CDML/XML support in
open_mfdataset()
by @tomvothecoder in #503, #504
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
- Typo fix for climatology code example in docs by @lee1043 in #491
- Update documentation in regrid2.py by @lee1043 in #509
- Add more fields to GH Discussions question form by @tomvothecoder in #480
- Add Q&A GH discussions template by @tomvothecoder in #479
- Update FAQs question covering datasets with conflicting bounds by @tomvothecoder in #474
- Add Google Groups mailing list to docs by @tomvothecoder in #452
- Fix README link to CODE-OF-CONDUCT.rst by @tomvothecoder in #444
- Replace LLNL E3SM License with xCDAT License by @tomvothecoder in #443
- Update getting started and HPC documentation by @tomvothecoder in #553
DevOps
- Fix Python deprecation comment in conda env yml files by @tomvothecoder in #514
- Simplify conda environments and move configs to
pyproject.toml
by @tomvothecoder in #512 - Update DevOps to cache conda and fix attributes not being preserved with
xarray > 2023.3.0
by @tomvothecoder in #465 - Update GH Actions to use
mamba
by @tomvothecoder in #450 - Update constraint
cf_xarray >=0.7.3
to workaround xarray import issue by @tomvothecoder in #547
Full Changelog: v0.5.0...v0.6.0
v0.6.0rc1
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
- Typo fix for doc by @lee1043 in #491
- Update documentation in regrid2.py by @lee1043 in #509
- Remove cdms-filemap references in API docstrings by @tomvothecoder in #504
- Add more fields to GH Discussions question form by @tomvothecoder in #480
- Add Q&A GH discussions template by @tomvothecoder in #479
- Update FAQs question covering datasets with conflicting bounds by @tomvothecoder in #474
- Add Google Groups mailing list to docs by @tomvothecoder in #452
- Fix README link to CODE-OF-CONDUCT.rst by @tomvothecoder in #444
- Replace LLNL E3SM License with xCDAT License by @tomvothecoder in #443
DevOps
- Fix Python deprecation comment in conda env yml files by @tomvothecoder in #514
- Simplify conda environments and move configs to
pyproject.toml
by @tomvothecoder in #512 - Update DevOps to cache conda and fix attributes not being preserved with
xarray > 2023.3.0
by @tomvothecoder in #465 - Update GH Actions to use
mamba
by @tomvothecoder in #450 - Bump to 0.6.0rc1 by @tomvothecoder in #515
Full Changelog: v0.5.0...v0.6.0rc1
v0.5.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
- 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
- [Doc]: Fix missing
xesmf
APIs and update slides in intro notebook by @tomvothecoder in #428 - Raise warning if no time coords found with
decode_times
by @tomvothecoder in #409 - Bump conda env dependencies by @tomvothecoder in #408
- Fix
swap_lon_axis()
breaking when sorting with singleton coords by @tomvothecoder in #392
Documentation
- Bump to v0.5.0 by @tomvothecoder in #436
- Update xsearch-xcdat-example.ipynb by @pochedls in #425
- Updates xesmf docs by @jasonb5 in #432
- [Doc]: Fix missing
xesmf
APIs and update slides in intro notebook by @tomvothecoder in #428 - Add presentations and demos to sphinx toctree by @tomvothecoder in #422
- [Doc]: Add
xsearch
demo notebook for CWSS Presentation by @tomvothecoder in #398 - Update temporal
.average
and.departures
docstrings by @tomvothecoder in #407
DevOps
- Bump conda env dependencies by @tomvothecoder in #408
Full Changelog: v0.4.0...0.5.0
v0.4.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 @tomvothecoder and @pochedls in #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 @tomvothecoder in #343
Bug Fixes
- Fix
add_bounds()
not ignoring 0-dim singleton coords by @tomvothecoder and @pochedls in #343 - Fix name of spatial weights with singleton coord by @tomvothecoder in #379
- Fixes
xesmf
flag that was missing which broke curvilinear regridding by @jasonb5 and @pochedls in #374
Documentation
- Add FAQs section for temporal metadata by @tomvothecoder in #383
- Add gentle introduction notebook by @tomvothecoder in #373
- Link repo to Zenodo and upload GitHub releases by @tomvothecoder in #367
- Update project overview, FAQs, and add a link to xarray tutorials by @tomvothecoder in #365
- Update feature list, add metadata interpretation to FAQs, and add
ipython
syntax highlighting for notebooks by @tomvothecoder in #362
DevOps
- Update release-drafter template by @tomvothecoder in #371 and #370
- Automate release notes generation by @tomvothecoder in #368
Full Changelog: v0.3.3...v0.4.0
v0.3.3
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
, 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 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
Documentation
- Add horizontal regridding gallery notebook by @jasonb5 in #328
- Add doc for staying up to date with releases by @tomvothecoder in #355
Dependencies
xarray >= 0.21.0
is the new constraint in the conda-forge recipe.- xcdat uses xarray.coding.times, which is only available in
xarray >= 0.21.0
.
- xcdat uses xarray.coding.times, which is only available in
Full Changelog: v0.3.2...v0.3.3