Skip to content

Releases: Ouranosinc/xscen

v0.10.1

04 Nov 21:42
7dcdacf
Compare
Choose a tag to compare

v0.10.1 (2024-11-04)

Contributors to this version: Gabriel Rondeau-Genesse (@RondeauG), Pascal Bourgault (@aulemahal), Éric Dupuis (@coxipi), Juliette Lavoie (@juliettelavoie).

New features and enhancements

  • xs.io.make_toc now includes the global attributes of the dataset after the information about the variables. (PR/473).
  • New function xs.get_warming_level_from_period to get the warming level associated with a given time horizon. (PR/474).
  • Added ability to skip whole folders to xs.parse_directory with argument skip_dirs. (PR/478, PR/479).
  • diagnostics.measures_improvement now accepts dim, which specifies dimension(s) on which the proportion of improved pixels are computed. (PR/416)
  • The argument indicators in xs.produce_horizon is now optional. Added an argument op to control the climatological operation. (PR/483).

Breaking changes

  • xs.get_warming_level has been renamed to xs.get_period_from_warming_level. Its argument return_horizon was reversed and renamed return_central_year (PR/474).
  • Removed support for the deprecated xclim function change_significance in ensemble_stats. (PR/482).
  • The argument indicators in xs.produce_horizon is no longer positional. (PR/483).

Bug fixes

  • xs.io.save_to_table now correctly handles the case where the input is a DataArray or a Dataset with a single variable. (PR/473).
  • Fixed a bug in xs.utils.change_units where the original dataset was also getting modified. (PR/482).
  • Fixed a bug in xs.compute_indicators where the cat:variable attribute was not correctly set. (PR/483).
  • Fixed a bug in xs.climatological_op where kwargs were not passed to the operation function. (PR/486).
  • Fixed a bug in xs.climatological_op where min_periods was not passed when the operation was linregress. (PR/486).

Internal changes

  • Include CF convention for temperature differences and on scale (PR/428, GH/428).
  • Bumped the version of xclim to 0.53.2. (PR/482).
  • More tests added. (PR/486).
  • Fixed a bug in xs.testing.datablock_3d where some attributes of the rotated pole got reversed half-way through the creation of the dataset. (PR/486).
  • The function xs.regrid._get_grid_mapping was moved to xs.spatial.get_grid_mapping and is now a public function. (PR/486).

v0.10.0

30 Sep 19:33
4f5ffdf
Compare
Choose a tag to compare

v0.10.0 (2024-09-30)

Contributors to this version: Juliette Lavoie (@juliettelavoie), Pascal Bourgault (@aulemahal), Gabriel Rondeau-Genesse (@RondeauG), Trevor James Smith (@Zeitsperre).

New features and enhancements

  • The mask argument in stack_drop_nans can now be a list of dimensions. In that case, a dropna(how='all') operation will be used to create the mask on-the-fly. (PR/450).
  • Few changes to clean_up:
    • The convert_calendar function now uses xarray instead of xclim. (PR/450).
    • The attrs_to_remove and remove_all_attrs_except arguments now use real regex. (PR/450).
    • Multiple entries can now be given for change_attr_prefix. (PR/450).
  • minimum_calendar now accepts a list as input. (PR/450).
  • More calendars are now recognized in translate_time_chunk. (PR/450).
  • new_dim in unstack_dates is now None by default and changes depending on the frequency. It becomes month if the data is exactly monthly, and keep the old default of season otherwise. (PR/450).
  • Updated the list of libraries in show_versions to reflect our current environment. (PR/450).
  • New xscen.catutils.patterns_from_schema to generate all possible patterns from a given schema (or one of xscen's default), to use with :py:func:parse_directory. (PR/431).
  • New DataCatalog.copy_files to copy all files of catalog to a new destination, unzipping if needed and returning a new catalog. (PR/431).
  • Convenience functions xs.io.zip_directory and xs.io.unzip_directory (for zarrs). (PR/431).
  • New argument compute_indicators: rechunk_input to rechunk the inputs to resample-appropriate chunks before calling xclim. (PR/431).
  • New xs.indicators.get_indicator_outputs to retrieve what variable name(s) and frequency to expect from an xclim indicator. (PR/431).
  • xscen now supports launches tests from pytest with the --numprocesses option. See the pytest-xdist documentation <https://pytest-xdist.readthedocs.io/en/stable/>_ for more information. (PR/464).
  • Conservative regridding now supports oblique mercator projections. (PR/467).
  • The automatic name for the weight file in regrid_dataset is now more explicit to avoid errors, but now requires cat:id and cat:domain arguments for both the source and target datasets. (PR/467).

Bug fixes

  • Fixed bug with reusing weights. (GH/411, PR/414).
  • Fixed bug in update_from_ds when "time" is a coordinate, but not a dimension. (:pull: 417).
  • Avoid modification of mutable arguments in search_data_catalogs (PR/413).
  • ensure_correct_time now correctly handles cases where timesteps are missing. (PR/440).
  • If using the argument tile_buffer with a shape method in spatial.subset, the shapefile will now be reprojected to a WGS84 grid before the buffer is applied. (PR/440).
  • maybe_unstack now works if the dimension name is not the default. (PR/450).
  • unstack_fill_nan now works if given a dictionary that contains both dimensions and coordinates. (PR/450).
  • clean_up no longer modifies the original dataset. (PR/450).
  • unstack_dates now works correctly for yearly datasets when winter_starts_year=True, as well as multi-year datasets. (PR/450).
  • Fix xs.catalog.concat_data_catalogs for catalogs that have not been search yet. (PR/431).
  • Fix indicator computation using freq=2Q* by assuming this means a semiannual frequency anchored at the given month (pandas assumes 2 quarter steps, any of them anchored at the given month). (PR/431).
  • create_bounds_rotated_pole now uses the default value if the dataset has no north_pole_grid_longitude attribute, instead of crashing. (PR/455).
  • Rewrote the global tas data file with latest HDF5/h5py to avoid errors when using h5py 3.11 and hdf5 1.14.2. (PR/1861).
  • Remove reference of deprecated xclim functions (convert_calendar, get_calendar) and adapt the code for supporting xclim 0.52.2 and its subsequent development version. (PR/465).

Breaking changes

  • convert_calendar in clean_up now uses xarray instead of xclim. Keywords aren't compatible between the two, but given that xclim will abandon its function, no backwards compatibility was sought. (PR/450).
  • attrs_to_remove and remove_all_attrs_except in clean_up now use real regex. It should not be too breaking since a fullmatch() is used, but * is now .*. (PR/450).
  • Python 3.9 is no longer supported. (PR/456).
  • Functions and arguments that were deprecated in xscen v0.8.0 or earlier have been removed. (PR/461).
  • pytest-xdist is now a development dependency. (PR/464).
  • xs.regrid.create_bounds_rotated_pole has been renamed to xs.regrid.create_bounds_gridmapping. (PR/467).
  • The weights_location argument in regrid_dataset is no longer positional. (PR/467).
  • The xs.regrid.create_mask function now requires explicit arguments instead of a dictionary. (PR/467).

Internal changes

  • DataCatalog.to_dataset can now accept a preprocess argument even if create_ensemble_on is given. The user assumes calendar handling. (PR/431).
  • Include domain in weight_location in regrid_dataset. (PR/414).
  • Added pins to xarray, xclim, h5py, and netcdf4. (PR/414).
  • Add .zip and .zarr.zip as possible file extensions for Zarr datasets. (PR/426).
  • Explicitly assign coords of multiindex in xs.unstack_fill_nan. (PR/427).
  • French translations are compiled offline. A new check ensures no PR are merged with missing messages. (GH/342, PR/443).
  • Continued work to add tests. (PR/450).
  • Updated the cookiecutter template via cruft: (PR/452)
    • GitHub Workflows that use rely on PyPI-based dependencies now use commit hashes.
    • Dependabot will now group updates by type.
    • Dependencies have been updated and synchronized.
    • Contributor guidance documentation has been adjusted.
    • numpydoc-validate has been added to the linting tools.
    • Linting checks are more reliant on ruff suggestions and stricter.
    • flake8-alphabetize has been replaced by ruff.
    • License information has been updated in the library top-level __init__.py.
  • Docstrings have been adjusted to meet the numpydoc standard. (PR/452).

CI changes

  • The bump-version.yml workflow now uses the Ouranosinc GitHub Helper Bot to sign bump version commits. (PR/462).

v0.9.1

04 Jun 20:52
89bc6ac
Compare
Choose a tag to compare

v0.9.1 (2024-06-04)

Contributors to this version: Pascal Bourgault (@aulemahal), Trevor James Smith (@Zeitsperre), Juliette Lavoie (@juliettelavoie).

Breaking changes

Bug fixes

  • Fixed defaults for xr_combine_kwargs in extract_dataset (PR/402).
  • Fixed bug with xs.utils.update_attr(GH/404, PR/405).
  • Fixed template 1 bugs due to changes in dependencies. ( PR/405).

Internal changes

  • cartopy has been pinned above version '0.23.0' in order to address a licensing issue. (PR/403).
  • The cookiecutter template has been updated to the latest commit via cruft. (PR/407).
    • GitHub Workflows now point to commits rather than tags.
    • Dependabot will now only update on a monthly schedule.
    • Dependencies have been updated and synchronized.
    • CHANGES.rst is now CHANGELOG.rst (see: KeepAChangelog).
    • The CODE_OF_CONDUCT.rst file adapted to Contributor Covenant v2.1 <https://www.contributor-covenant.org/version/2/1/code_of_conduct/>_.
    • Maintainer-specific directions are now found under releasing.rst

v0.9.0

07 May 19:15
59c9263
Compare
Choose a tag to compare

v0.9.0 (2024-05-07)

Contributors to this version: Trevor James Smith (@Zeitsperre), Pascal Bourgault (@aulemahal), Gabriel Rondeau-Genesse (@RondeauG), Juliette Lavoie (@juliettelavoie), Marco Braun (@vindelico).

New features and enhancements

  • xs.reduce_ensemble will now call xclim.ensembles.create_ensemble and xclim.ensembles.make_critera if required. (PR/386).

Breaking changes

  • Removed support for the old instances of the region argument in spatial_mean, extract_dataset, and subset. (PR/367).
  • Removed xscen.extract.clisops_subset. (PR/367).
  • dtr (the function) was renamed to dtr_from_minmax to avoid confusion with the dtr variable. (PR/372).
  • The xscen.reduce module has been abandoned. (PR/386).
    • build_reduction_data has been made redundant by xclim.ensembles.make_critera and will be removed in a future release.
    • xscen.reduce.reduce_ensemble has been moved to xscen.ensembles.reduce_ensemble, as a module was no longer necessary.

Internal changes

  • Modified xscen.utils.change_unit to always adopt the name from the variables_and_units dictionary if the physical units are equal but their names are not (ex. degC <-> ˚C) (PR/373).
  • Updated the cookiecutter template to the latest version. (PR/358):
    • Addresses a handful of misconfigurations in the GitHub Workflows.
    • Added a few free grep-based hooks for finding unwanted artifacts in the code base.
    • Updated ruff to v0.2.0 and black to v24.2.0.
  • Added more tests. (PR/366, PR/367, PR/372).
  • Refactored xs.spatial.subset into smaller functions. (PR/367).
  • An encoding argument was added to xs.config.load_config. (PR/370).
  • Various small fixes to the code to address FutureWarnings. (PR/380).
  • xs.spatial.subset will try to guess CF coordinate if it can't find "latitude" or "longitude" in ds.cf. (PR/384).
  • xs.extract_dataset and xs.DataCatalog.to_dataset will now default to opening datasets with option chunks={}, which tries to respect chunking on disk. (PR/398, GH/368).

Bug fixes

  • Fix unstack_dates for the new frequency syntax introduced by pandas v2.2. (PR/359).
  • subset_warming_level will not return partial subsets if the warming level is reached at the end of the timeseries. (GH/360, PR/359).
  • Loading of training in adjust is now done outside of the periods loop. (PR/366).
  • Fixed bug for adding the preprocessing attributes inside the adjust function. (PR/366).
  • Fixed a bug to accept group = False in adjust function. (PR/366).
  • creep_weights now correctly handles the case where the grid is small, n is large, and mode=wrap. (GH/367).
  • Fixed a bug in tasmin_from_dtr and tasmax_from_dtr, when dtr units differed from tasmin/max. (PR/372).
  • Fixed a bug where the requested chunking would be ignored when saving a dataset (PR/379).
  • The missing value check in health_checks will no longer crasg if a variable has no time dimension. (PR/382).

v0.8.3

28 Feb 15:24
ef3c8fd
Compare
Choose a tag to compare

Contributors to this version: Juliette Lavoie (@juliettelavoie), Trevor James Smith (@Zeitsperre), Gabriel Rondeau-Genesse (@RondeauG), Pascal Bourgault (@aulemahal).

Announcements

Internal changes

  • Added tests for diagnostics. (PR/352).
  • Added a SECURITY.md file to the repository and the documentation. (PR/353).
  • Added tox modifier for testing builds against the main development branch of xclim. (PR/351, PR/355).
  • Added a requirements_upstream.txt file to the repository to track the development branches of relevant dependencies. (PR/355).
  • Added a dedicated GitHub Workflow to evaluate compatibility with upstream dependencies. (PR/355).

Breaking changes

  • xscen now requires pandas >= 2.2 and xclim >= 0.48.2. (PR/351).
  • Functions that output a dict with keys as xrfreq (such as extract_dataset, compute_indicators) will now return the new nomenclature (e.g. "YS-JAN" instead of "AS-JAN"). (PR/351).
  • Going from xrfreq to frequencies or timedeltas will still work, but the opposite (frequency --> xrfreq/timedelta) will now only result in the new pandas nomenclature. (PR/351).

v0.8.2

12 Feb 21:37
b81ba1c
Compare
Choose a tag to compare

v0.8.2 (2024-02-12)

Contributors to this version: Trevor James Smith (@Zeitsperre), Pascal Bourgault (@aulemahal)

New features and enhancements

  • Added a new argument indicators_kw to xs.ensembles.build_partition_data. (PR/315).
  • xscen is Semantic Versioning 2.0.0 <https://semver.org/spec/v2.0.0.html>_ compliant. (PR/319).
  • xesmf made an optional dependency, making xscen easier to install with pip. (PR/337).

Internal changes

  • Granular permissions and dependency scanning actions have been added to all GitHub CI Workflows. (PR/313).
  • Updated the list of dependencies to add missing requirements. (PR/314).
  • The cookiecutter template has been updated to the latest commit via cruft. (PR/319):
    • actions-versions-updater.yml has been replaced with Dependabot (it's just better).
    • The OpenSSF scorecard.yml workflow has been added to the GitHub workflows to evaluate package security.
    • Code formatting tools (black, blackdoc, isort) are now hard-pinned. These need to be kept in sync with changes from pre-commit. (Dependabot should perform this task automatically.)
    • The versioning system has been updated to follow the Semantic Versioning 2.0.0 standard.

v0.8.0

16 Jan 19:12
2e4752f
Compare
Choose a tag to compare

Changelog

v0.8.0 (2024-01-16)

Contributors to this version: Gabriel Rondeau-Genesse (@RondeauG), Pascal Bourgault (@aulemahal), Juliette Lavoie (@juliettelavoie), Sarah-Claude Bourdeau-Goulet (@sarahclaude), Trevor James Smith (@Zeitsperre), Marco Braun (@vindelico).

Announcements

  • xscen now adheres to PEPs 517/518/621 using the setuptools and setuptools-scm backend for building and packaging. (PR/292).

New features and enhancements

  • New function xscen.indicators.select_inds_for_avail_vars to filter the indicators that can be calculated with the variables available in a xarray.Dataset. (PR/291).
  • Replaced aggregation function climatological_mean() with climatological_op() offering more types of operations to aggregate over climatological periods. (PR/290)
  • Added the ability to search for simulations that reach a given warming level. (PR/251).
  • xs.spatial_mean now accepts the region="global" keyword to perform a global average (GH/94, PR/260).
  • xs.spatial_mean with method='xESMF' will also automatically segmentize polygons (down to a 1° resolution) to ensure a correct average (PR/260).
  • Added documentation for require_all_on in search_data_catalogs. (PR/263).
  • xs.save_to_table and xs.io.to_table to transform datasets and arrays to DataFrames, but with support for multi-columns, multi-sheets and localized table of content generation.
  • Better xs.extract.resample : support for weighted resampling operations when starting with frequencies coarser than daily and missing timesteps/values handling. (GH/80, GH/93, PR/265).
  • New argument attribute_weights to generate_weights to allow for custom weights. (PR/252).
  • xs.io.round_bits to round floating point variable up to a number of bits, allowing for a better compression. This can be combined with the saving step through argument "bitround" of save_to_netcdf and save_to_zarr. (PR/266).
  • Added annual global tas timeseries for CMIP6's models CMCC-ESM2 (ssp245, ssp370, ssp585), EC-Earth3-CC (ssp245, ssp585), KACE-1-0-G (ssp245, ssp370, ssp585) and TaiESM1 (ssp245, ssp370). Moved global tas database to a netCDF file. (GH/268, PR/270).
  • Implemented support for multiple levels and models in xs.subset_warming_level. Better support for DataArray and DataFrame in xs.get_warming_level. (PR/270).
  • Added the ability to directly provide an ensemble dataset to xs.ensemble_stats. (PR/299).
  • Added support in xs.ensemble_stats for the new robustness-related functions available in xclim. (PR/299).
  • New function xs.ensembles.get_partition_input (PR/289).

Breaking changes

  • climatological_mean() has been replaced with climatological_op() and will be abandoned in a future version. (PR/290)
  • experiment_weights argument in generate_weights was renamed to balance_experiments. (PR/252).
  • New argument attribute_weights to generate_weights to allow for custom weights. (PR/252).
  • For a sequence of models, the output of xs.get_warming_level is now a list. Revert to a dictionary with output='selected' (PR/270).
  • The global average temperature database is now a netCDF, custom databases must follow the same format (PR/270).

Bug fixes

  • Fixed a bug in xs.search_data_catalogs when searching for fixed fields and specific experiments/members. (PR/251).
  • Fixed a bug in the documentation build configuration that prevented stable/latest and tagged documentation builds from resolving on ReadTheDocs. (PR/256).
  • Fixed get_warming_level to avoid incomplete matches. (PR/269).
  • search_data_catalogs now eliminates anything that matches any entry in exclusions. (GH/275, PR/280).
  • Fixed a bug in xs.scripting.save_and_update where build_path_kwargs was ignored when trying to guess the file format. (PR/282).
  • Add a warning to xs.extract._dispatch_historical_to_future. (GH/286, PR/287).
  • Modify use_cftime for the calendar conversion in to_dataset. (GH/303, PR/289).

Internal changes

  • Continued work on adding tests. (PR/251).
  • Fixed pre-commit's pretty-format-json hook so that it ignores notebooks. (PR/254).
  • Fixed the labeler so docs/CI isn't automatically added for contributions by new collaborators. (PR/254).
  • Made it so that tests are no longer treated as an installable package. (PR/248).
  • Renamed the pytest marker from requires_docs to requires_netcdf. (PR/248).
  • Included the documentation in the source distribution, while excluding the NetCDF files. (PR/248).
  • Reduced the size of the files in /docs/notebooks/samples and changed the notebooks and tests accordingly. (GH/247, PR/248).
  • Added a new xscen.testing module with the datablock_3d function previously located in /tests/conftest.py. (PR/248).
  • New function xscen.testing.fake_data to generate fake data for testing. (PR/248).
  • xESMF 0.8 Regridder and SpatialAverager argument out_chunks is now accepted by xs.regrid_dataset and xs.spatial_mean. (PR/260).
  • Testing, Packaging, and CI adjustments. (PR/274):
    • xscen builds now install in a tox environment with conda-provided ESMF in GitHub Workflows.
    • tox now offers a method for installing esmpy from a tag/branch (via ESMF_VERSION environment variable).
    • $ make translate is now called on ReadTheDocs and within tox.
    • Linters are now called by order of most common failures first, to speed up the CI.
    • Manifest.in is much more specific about what is installed.
    • Re-adds a dev recipe to the setup.py.
  • Multiple improvements to the docstrings and type annotations. (PR/282).
  • pip check in conda builds in GitHub workflows have been temporarily set to always pass. (PR/288).
  • The cookiecutter template has been updated to the latest commit via cruft. (PR/292):
    • setup.py has been mostly hollowed-out, save for the babel-related translation function.
    • pyproject.toml has been added, with most package configurations migrated into it.
    • HISTORY.rst has been renamed to CHANGES.rst.
    • actions-version-updater.yml has been added to automate the versioning of the package.
    • pre-commit hooks have been updated to the latest versions; check-toml and toml-sort have been added to cleanup the pyproject.toml file, and check-json-schema has been added to ensure GitHub and ReadTheDocs workflow files are valid.
    • ruff has been added to the linting tools to replace most flake8 and pydocstyle verifications.
    • tox builds are more pure Python environment/PyPI-friendly.
    • xscen now uses Trusted Publishing for TestPyPI and PyPI uploads.
  • Linting checks now examine the testing folder, function complexity, and alphabetical order of __all__ lists. (PR/292).
  • publish_release_notes now uses better logic for finding and reformatting the CHANGES.rst file. (PR/292).
  • bump2version version-bumping utility was replaced by bump-my-version. (PR/292).
  • Documentation build checks no longer fail due to broken external links; Notebooks are now nested and numbered. (PR/304).

v0.7.1

23 Aug 19:11
Compare
Choose a tag to compare

Bug fix release to update the dependencies and clean the way for a working conda-forge package!

Also, a bug fix in aggregate.spatial_mean for method= 'cos-lat' and the case of a rectilinear grid.

v0.7.0

22 Aug 18:30
94fca2e
Compare
Choose a tag to compare

v0.7.0 (2023-08-22)

Contributors to this version: Gabriel Rondeau-Genesse (@RondeauG), Pascal Bourgault (@aulemahal), Trevor James Smith (@Zeitsperre), Juliette Lavoie (@juliettelavoie), Marco Braun (@vindelico).

Announcements

  • Dropped support for Python 3.8, added support for 3.11. (PR/199, PR/222).
  • xscen is now available on conda-forge <https://anaconda.org/conda-forge/xscen>_, and can be installed with conda install -c conda-forge xscen. (PR/241)

New features and enhancements

  • xscen now tracks code coverage using coveralls. (PR/187).
  • New function get_warming_level to search within the IPCC CMIP global temperatures CSV without requiring data. (GH/208, PR/210).
  • File re-structuration from catalogs with xscen.catutils.build_path. (PR/205, PR/237).
  • New scripting functions save_and_update and move_and_delete. (PR/214).
  • Spatial dimensions can be generalized as X/Y when rechunking and will be mapped to rlon/rlat or lon/lat accordingly. (PR/221).
  • New argument var_as_string for get_cat_attrs to return variable names as strings. (PR/233).
  • New argument copy for move_and_delete. (PR/233).
  • New argument restrict_year for compute_indicators. (PR/233).
  • Add more comments in the template. (PR/233, GH/232).
  • generate_weights now allows to split weights between experiments, and make them vary along the time/horizon axis. (GH/108, PR/231).
  • New independence_level, institution, added to generate_weights. (PR/231).
  • Updated produce_horizon so it can accept multiple periods or warming levels. (PR/231, PR/240).
  • Add more comments in the template. (PR/233, PR/235, GH/232).
  • New function diagnostics.health_checks that can perform multiple checkups on a dataset. (PR/238).

Breaking changes

  • Columns date_start and date_end now use a datetime64[ms] dtype. (PR/222).
  • The default output of date_parser is now pd.Timestamp (output_dtype='datetime'). (PR/222).
  • date_parser(date, end_of_period=True) has time "23:59:59", instead of "23:00". (PR/222, PR/237).
  • driving_institution was removed from the "default" xscen columns. (PR/222).
  • Folder parsing utilities (parse_directory) moved to xscen.catutils. Signature changed : globpattern removed, dirglob added, new patterns specifications. See doc for all changes. (PR/205).
  • compute_indicators now returns all outputs produced by indicators with multiple outputs (such as rain_season). (PR/228).
  • In generate_weights, independence_level all was renamed model. (PR/231).
  • In response to a bugfix, results for generate_weights(independence_level='GCM') are significantly altered. (GH/230, PR/231).
  • Legacy support for stats_kwargs in ensemble_stats was dropped. (PR/231).
  • period in produce_horizon has been deprecated and replaced with periods. (PR/231).
  • Some automated to_level were updated to reflect more recent changes. (PR/231).
  • Removed diagnostics.fix_unphysical_values. (PR/238).

Bug fixes

  • Fix bug in unstack_dates with seasonal climatological mean. (GH/202, PR/202).
  • Added NotImplemented errors when trying to call climatological_mean and compute_deltas with daily data. (PR/187).
  • Minor documentation fixes. (GH/223, PR/225).
  • Fixed a bug in unstack_dates where it failed for anything other than seasons. (PR/228).
  • cleanup with common_attrs_only now works even when no cat attribute is present in the datasets. (PR/231).

Internal changes

  • Removed the pin on xarray's version. (GH/175, PR/199).
  • Folder parsing utilities now in pure python, platform independent. New dependency parse. (PR/205).
  • Updated ReadTheDocs configuration to prevent --eager installation of xscen (PR/209).
  • Implemented a template to be used for unit tests. (PR/187).
  • Updated GitHub Actions to remove deprecation warnings. (PR/187).
  • Updated the cookiecutter used to generate boilerplate documentation and code via cruft. (PR/212).
  • A few changes to subset_warming_level so it doesn't need driving_institution. (PR/215).
  • Added more tests. (PR/228).
  • In compute_indicators, the logic to manage indicators returning multiple outputs was simplified. (PR/228).

v0.6.0

04 May 21:11
9d09ae0
Compare
Choose a tag to compare

History

v0.6.0 (2023-05-04)

Contributors to this version: Trevor James Smith (@Zeitsperre), Juliette Lavoie (@juliettelavoie), Pascal Bourgault (@aulemahal), Gabriel Rondeau-Genesse (@RondeauG).

Announcements

  • xscen is now offered as a conda package available through Anaconda.org. Refer to the installation documentation for more information. (GH/149, PR/171).
  • Deprecation: Release 0.6.0 of xscen will be the last version to support xscen.extract.clisops_subset. Use xscen.spatial.subset instead. (PR/182, PR/184).
  • Deprecation: The argument region, used in multiple functions, has been slightly reformatted. Release 0.6.0 of xscen will be the last version to support the old format. (GH/99, GH/101, PR/184).

New features and enhancements

  • New 'cos-lat' averaging in spatial_mean. (GH/94, PR/125).
  • Support for computing anomalies in compute_deltas. (PR/165).
  • Add function diagnostics.measures_improvement_2d. (PR/167).
  • Add function regrid.create_bounds_rotated_pole and automatic use in regrid_dataset and spatial_mean. This is temporary, while we wait for a functionning method in cf_xarray. (PR/174, GH/96).
  • Add spatial submodule with functions creep_weights and creep_fill for filling NaNs using neighbours. (PR/174).
  • Allow passing GeoDataFrame instances in spatial_mean's region argument, not only geospatial file paths. (PR/174).
  • Allow searching for periods in catalog.search. (GH/123, PR/170).
  • Allow searching and extracting multiple frequencies for a given variable. (GH/168, PR/170).
  • New masking feature in extract_dataset. (GH/180, PR/182).
  • New function xs.spatial.subset to replace xs.extract.clisops_subset and add method "sel". (GH/180, PR/182).
  • Add long_name attribute to diagnostics. ( PR/189).
  • Added a new YAML-centric notebook (GH/8, PR/191).
  • New utils.standardize_periods to standardize that argument across multiple functions. (GH/87, PR/192).
  • New coverage_kwargs argument added to search_data_catalogs to allow modifying the default values of subset_file_coverage. (GH/87, PR/192).

Breaking changes

  • 'mean' averaging has been deprecated in spatial_mean. (PR/125).
  • 'interp_coord' has been renamed to 'interp_centroid' in spatial_mean. (PR/125).
  • The 'datasets' dimension of the output of diagnostics.measures_heatmap is renamed 'realization'. (PR/167).
  • _subset_file_coverage was renamed subset_file_coverage and moved to catalog.py to prevent circular imports. (PR/170).
  • extract_dataset doesn't fail when a variable is in the dataset, but not variables_and_freqs. (PR/185).
  • The argument period, used in multiple function, is now always a single list, while periods is more flexible. (GH/87, PR/192).
  • The parameters reference_period and simulation_period of xscen.train and xscen.adjust were renamed period/periods to respect the point above. (GH/87, PR/192).

Bug fixes

  • Forbid pandas v1.5.3 in the environment files, as the linux conda build breaks the data catalog parser. (GH/161, PR/162).
  • Only return requested variables when using DataCatalog.to_dataset. (PR/163).
  • compute_indicators no longer crashes if less than 3 timesteps are produced. (PR/125).
  • xarray is temporarily pinned below v2023.3.0 due to an API-breaking change. (GH/175, PR/173).
  • `xscen.utils.unstack_fill_nan`` can now handle datasets that have non dimension coordinates. (GH/156, PR/175).
  • extract_dataset now skips a simulation way earlier if the frequency doesn't match. (PR/170).
  • extract_dataset now correctly tries to extract in reverse timedelta order. (PR/170).
  • compute_deltas no longer creates all NaN values if the input dataset is in a non-standard calendar. (PR/188).

Internal changes

  • xscen now manages packaging for PyPi and TestPyPI via GitHub workflows. (PR/159).
  • Pre-load coordinates in extract.clisops_subset (PR/163).
  • Minimal documentation for templates. (PR/163).
  • xscen is now indexed in Zenodo, under the ouranos community of projects. (PR/164).
  • Added a few relevant Shields to the README.rst. (PR/164).
  • Better warning messages in _subset_file_coverage when coverage is insufficient. (PR/125).
  • The top-level Makefile now includes a linkcheck recipe, and the ReadTheDocs configuration no longer reinstalls the llvmlite compiler library. (PR/173).
  • The checkups on coverage and duplicates can now be skipped in subset_file_coverage. (PR/170).
  • Changed the ProjectCatalog docstrings to make it more obvious that it needs to be created empty. (GH/99, PR/184).
  • Added parse_config to creep_fill, creep_weights, and reduce_ensemble (PR/191).