Contributors to this version: Trevor James Smith (:user:`Zeitsperre`), Pascal Bourgault (:user:`aulemahal`), Juliette Lavoie (:user:`juliettelavoie`), Sarah Gammon (:user:`SarahG-579462`).
- xscen now uses flit as its build-engine and no longer uses setuptools, setuptools-scm, or wheel. (:pull:`519`).
- Update to support Python3.13 and xclim v0.55.0 (:pull:`532`).
- Include station-obs and forecasts in the derived schema for build_path. (:pull:`534`).
- Project catalog now allows check_valid and drop_duplicates keyword arguments. (:pull:`536`, :issue:`535`).
- Docstrings and documentation have been updated to remove several small grammatical errors. (:pull:`527`).
- Updated the cookiecutter template to the latest commit. (:pull:`527`):
- Updated versions of many GitHub Actions and Python dependencies.
- Removed coveralls from the CI dependencies.
- Added pre-commit hooks for vulture (dead code) and codespell (typos).
- The minimum supported clisops version has been raised to v0.15.0. (:pull:`533`).
- Dependency pins have been synchronized across the repository. (:pull:`533`).
- GitHub Workflows for conda builds now use the coverallsapp/github-action action for coverage reporting. (:pull:`533`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Juliette Lavoie (:user:`juliettelavoie`), Trevor James Smith (:user:`Zeitsperre`).
- Improve
xs.ensembles.build_partition_data
. (:pull:`504`).
xs.utils.publish_release_notes
andxs.utils.show_versions
have been moved toxs.testing
. (:pull:`492`).- The previously-deprecated
xs.reduce
module has been removed. Refer toxs.ensembles.make_criteria
andxs.ensembles.reduce_ensemble
for replacement functionality. (:pull:`517`).
- Added a missing library (
openpyxl
) to the requirements. (:pull:`492`). - Fixed a bug in
xs.io.subset_maxsize
where the function would drop the last year. (:pull:`492`). - Fixed a bug in
xs.io.clean_incomplete
where the .zmetadata file was not removed. (:pull:`492`). - Fixed a bug in the saving of datasets where encoding was sometimes not applied, resulting for example in rechunking not being respected. (:pull:`492`).
- Fixed multiple bugs in
xs.io.save_to_zarr
with mode='a'. (:pull:`492`). - Fixed a few minor bugs in
xs.io.save_to_table
. (:pull:`492`).
- Added a new parameter latest to
xs.testing.publish_release_notes
to only print the latest release notes. (:pull:`492`). - The estimation method in
xs.io.estimate_chunks
has been improved. (:pull:`492`). - A new parameter incomplete has been added to
xs.io.clean_incomplete
to remove incomplete variables. (:pull:`492`). - Continued work on adding tests. (:pull:`492`).
- Modified a CI build to test against the oldest supported version of xclim. (:pull:`505`).
- Updated the cookiecutter template version: (:pull:`507`)
- Added vulture to pre-commit hooks (finding dead code blocks).
- Added zizmor to the pre-commit hooks (security analysis for CI workflows).
- Secured token usages on all workflows (using zizmor).
- Simplified logic in
bump-version.yml
. - Synchronized a few dependencies.
- Fixed a few socket blocks and configuration issues in the CI workflows. (:pull:`512`).
- Added Open Source Security Foundation Best Practices badge, Zenodo DOI badge, FOSSA license compliance badge to the README. (:pull:`514`).
- Several deprecated usages within the code base have been addressed. The number of warnings emitted from the test suite have been significantly reduced. (:issue:`515`, :pull:`516`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Pascal Bourgault (:user:`aulemahal`), Éric Dupuis (:user:`coxipi`).
xs.io.make_toc
now includes the global attributes of the dataset after the information about the variables. (:pull:`473`).- New function
xs.get_warming_level_from_period
to get the warming level associated with a given time horizon. (:pull:`474`). - Added ability to skip whole folders to
xs.parse_directory
with argumentskip_dirs
. (:pull:`478`, :pull:`479`). - diagnostics.measures_improvement now accepts dim, which specifies dimension(s) on which the proportion of improved pixels are computed. (:pull:`416`)
- The argument indicators in
xs.produce_horizon
is now optional. Added an argument op to control the climatological operation. (:pull:`483`).
xs.get_warming_level
has been renamed toxs.get_period_from_warming_level
. Its argument return_horizon was reversed and renamed return_central_year (:pull:`474`).- Removed support for the deprecated xclim function change_significance in ensemble_stats. (:pull:`482`).
- The argument indicators in
xs.produce_horizon
is no longer positional. (:pull:`483`).
xs.io.save_to_table
now correctly handles the case where the input is a DataArray or a Dataset with a single variable. (:pull:`473`).- Fixed a bug in
xs.utils.change_units
where the original dataset was also getting modified. (:pull:`482`). - Fixed a bug in
xs.compute_indicators
where the cat:variable attribute was not correctly set. (:pull:`483`). - Fixed a bug in
xs.climatological_op
where kwargs were not passed to the operation function. (:pull:`486`). - Fixed a bug in
xs.climatological_op
where min_periods was not passed when the operation was linregress. (:pull:`486`).
- Include CF convention for temperature differences and on scale (:pull:`428`, :issue:`428`).
- Bumped the version of xclim to 0.53.2. (:pull:`482`).
- More tests added. (:pull:`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. (:pull:`486`). - The function
xs.regrid._get_grid_mapping
was moved toxs.spatial.get_grid_mapping
and is now a public function. (:pull:`486`).
Contributors to this version: Juliette Lavoie (:user:`juliettelavoie`), Pascal Bourgault (:user:`aulemahal`), Gabriel Rondeau-Genesse (:user:`RondeauG`), Trevor James Smith (:user:`Zeitsperre`).
- 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. (:pull:`450`). - Few changes to
clean_up
: - The convert_calendar function now uses xarray instead of xclim. (:pull:`450`).
- The attrs_to_remove and remove_all_attrs_except arguments now use real regex. (:pull:`450`).
- Multiple entries can now be given for change_attr_prefix. (:pull:`450`).
- Few changes to
minimum_calendar
now accepts a list as input. (:pull:`450`).- More calendars are now recognized in
translate_time_chunk
. (:pull:`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. (:pull:`450`). - Updated the list of libraries in show_versions to reflect our current environment. (:pull:`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`. (:pull:`431`). - New
DataCatalog.copy_files
to copy all files of catalog to a new destination, unzipping if needed and returning a new catalog. (:pull:`431`). - Convenience functions
xs.io.zip_directory
andxs.io.unzip_directory
(for zarrs). (:pull:`431`). - New argument
compute_indicators
:rechunk_input
to rechunk the inputs to resample-appropriate chunks before calling xclim. (:pull:`431`). - New
xs.indicators.get_indicator_outputs
to retrieve what variable name(s) and frequency to expect from an xclim indicator. (:pull:`431`). - xscen now supports launches tests from pytest with the --numprocesses option. See the pytest-xdist documentation for more information. (:pull:`464`).
- Conservative regridding now supports oblique mercator projections. (:pull:`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. (:pull:`467`).
- Version facet is now optional in default filepath schemas for non-simulations a with "source_version" level. (:issue:`500`, :pull:`501`).
- Catalog attributes are removed by default in
save_to_zarr
andsave_to_netcdf
. Catalog attributes are those added from the catalog columns byto_dataset
,to_dataset_dict
andextract_dataset
, which have names prefixed withcat:
. (:issue:`499`, :pull:`501`).
- Fixed bug with reusing weights. (:issue:`411`, :pull:`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
(:pull:`413`). ensure_correct_time
now correctly handles cases where timesteps are missing. (:pull:`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. (:pull:`440`). maybe_unstack
now works if the dimension name is not the default. (:pull:`450`).unstack_fill_nan
now works if given a dictionary that contains both dimensions and coordinates. (:pull:`450`).clean_up
no longer modifies the original dataset. (:pull:`450`).unstack_dates
now works correctly for yearly datasets when winter_starts_year=True, as well as multi-year datasets. (:pull:`450`).- Fix
xs.catalog.concat_data_catalogs
for catalogs that have not been search yet. (:pull:`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). (:pull:`431`). create_bounds_rotated_pole
now uses the default value if the dataset has no north_pole_grid_longitude attribute, instead of crashing. (:pull:`455`).- Rewrote the global tas data file with latest HDF5/h5py to avoid errors when using h5py 3.11 and hdf5 1.14.2. (:pull:`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. (:pull:`465`).
- 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. (:pull:`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 .*. (:pull:`450`). - Python 3.9 is no longer supported. (:pull:`456`).
- Functions and arguments that were deprecated in xscen v0.8.0 or earlier have been removed. (:pull:`461`).
- pytest-xdist is now a development dependency. (:pull:`464`).
xs.regrid.create_bounds_rotated_pole
has been renamed toxs.regrid.create_bounds_gridmapping
. (:pull:`467`).- The weights_location argument in
regrid_dataset
is no longer positional. (:pull:`467`). - The
xs.regrid.create_mask
function now requires explicit arguments instead of a dictionary. (:pull:`467`).
DataCatalog.to_dataset
can now accept apreprocess
argument even ifcreate_ensemble_on
is given. The user assumes calendar handling. (:pull:`431`).- Include domain in weight_location in
regrid_dataset
. (:pull:`414`). - Added pins to xarray, xclim, h5py, and netcdf4. (:pull:`414`).
- Add
.zip
and.zarr.zip
as possible file extensions for Zarr datasets. (:pull:`426`). - Explicitly assign coords of multiindex in xs.unstack_fill_nan. (:pull:`427`).
- French translations are compiled offline. A new check ensures no PR are merged with missing messages. (:issue:`342`, :pull:`443`).
- Continued work to add tests. (:pull:`450`).
- Updated the cookiecutter template via cruft: (:pull:`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. (:pull:`452`).
- The bump-version.yml workflow now uses the Ouranosinc GitHub Helper Bot to sign bump version commits. (:pull:`462`).
Contributors to this version: Pascal Bourgault (:user:`aulemahal`), Trevor James Smith (:user:`Zeitsperre`), Juliette Lavoie (:user:`juliettelavoie`).
- xscen now uses a src layout in lieu of a flat layout. (:pull:`407`).
- Fixed defaults for
xr_combine_kwargs
inextract_dataset
(:pull:`402`). - Fixed bug with xs.utils.update_attr`(:issue:`404, :pull:`405`).
- Fixed template 1 bugs due to changes in dependencies. ( :pull:`405`).
- cartopy has been pinned above version '0.23.0' in order to address a licensing issue. (:pull:`403`).
- The cookiecutter template has been updated to the latest commit via cruft. (:pull:`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 nowCHANGELOG.rst
(see: ` KeepAChangelog <https://keepachangelog.com/en/1.0.0/>`_).- The
CODE_OF_CONDUCT.rst
file adapted to Contributor Covenant v2.1. - Maintainer-specific directions are now found under
releasing.rst
Contributors to this version: Trevor James Smith (:user:`Zeitsperre`), Pascal Bourgault (:user:`aulemahal`), Gabriel Rondeau-Genesse (:user:`RondeauG`), Juliette Lavoie (:user:`juliettelavoie`), Marco Braun (:user:`vindelico`).
xs.reduce_ensemble
will now callxclim.ensembles.create_ensemble
andxclim.ensembles.make_critera
if required. (:pull:`386`).
- Removed support for the old instances of the region argument in
spatial_mean
,extract_dataset
, andsubset
. (:pull:`367`). - Removed
xscen.extract.clisops_subset
. (:pull:`367`). dtr
(the function) was renamed todtr_from_minmax
to avoid confusion with the dtr variable. (:pull:`372`).- The
xscen.reduce
module has been abandoned. (:pull:`386`). build_reduction_data
has been made redundant byxclim.ensembles.make_critera
and will be removed in a future release.xscen.reduce.reduce_ensemble
has been moved toxscen.ensembles.reduce_ensemble
, as a module was no longer necessary.
- The
- 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) (:pull:`373`). - Updated the cookiecutter template to the latest version. (:pull:`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. (:pull:`366`, :pull:`367`, :pull:`372`).
- Refactored
xs.spatial.subset
into smaller functions. (:pull:`367`). - An encoding argument was added to
xs.config.load_config
. (:pull:`370`). - Various small fixes to the code to address FutureWarnings. (:pull:`380`).
xs.spatial.subset
will try to guess CF coordinate if it can't find "latitude" or "longitude" inds.cf
. (:pull:`384`).xs.extract_dataset
andxs.DataCatalog.to_dataset
will now default to opening datasets with optionchunks={}
, which tries to respect chunking on disk. (:pull:`398`, :issue:`368`).
- Fix
unstack_dates
for the new frequency syntax introduced by pandas v2.2. (:pull:`359`). subset_warming_level
will not return partial subsets if the warming level is reached at the end of the timeseries. (:issue:`360`, :pull:`359`).- Loading of training in adjust is now done outside of the periods loop. (:pull:`366`).
- Fixed bug for adding the preprocessing attributes inside the adjust function. (:pull:`366`).
- Fixed a bug to accept group = False in adjust function. (:pull:`366`).
- creep_weights now correctly handles the case where the grid is small, n is large, and mode=wrap. (:issue:`367`).
- Fixed a bug in
tasmin_from_dtr
andtasmax_from_dtr
, when dtr units differed from tasmin/max. (:pull:`372`). - Fixed a bug where the requested chunking would be ignored when saving a dataset (:pull:`379`).
- The missing value check in
health_checks
will no longer crasg if a variable has no time dimension. (:pull:`382`).
Contributors to this version: Juliette Lavoie (:user:`juliettelavoie`), Trevor James Smith (:user:`Zeitsperre`), Gabriel Rondeau-Genesse (:user:`RondeauG`), Pascal Bourgault (:user:`aulemahal`).
- xscen now has a security disclosure policy. (:pull:`353`).
- Various frequency-related changes to match the new pandas naming conventions. (:pull:`351`).
- Added tests for diagnostics. (:pull:`352`).
- Added a SECURITY.md file to the repository and the documentation. (:pull:`353`).
- Added tox modifier for testing builds against the main development branch of xclim. (:pull:`351`, :pull:`355`).
- Added a requirements_upstream.txt file to the repository to track the development branches of relevant dependencies. (:pull:`355`).
- Added a dedicated GitHub Workflow to evaluate compatibility with upstream dependencies. (:pull:`355`).
- xscen now requires pandas >= 2.2 and xclim >= 0.48.2. (:pull:`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"
). (:pull:`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. (:pull:`351`).
Contributors to this version: Trevor James Smith (:user:`Zeitsperre`), Pascal Bourgault (:user:`aulemahal`)
- Added a new argument
indicators_kw
toxs.ensembles.build_partition_data
. (:pull:`315`). - xscen is Semantic Versioning 2.0.0 compliant. (:pull:`319`).
- xesmf made an optional dependency, making xscen easier to install with pip. (:pull:`337`).
- Granular permissions and dependency scanning actions have been added to all GitHub CI Workflows. (:pull:`313`).
- Updated the list of dependencies to add missing requirements. (:pull:`314`).
- The cookiecutter template has been updated to the latest commit via cruft. (:pull:`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.
- Fixed an issue with pytest -m "not requires_netcdf" not working as expected. (:pull:`345`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Pascal Bourgault (:user:`aulemahal`), Juliette Lavoie (:user:`juliettelavoie`), Sarah-Claude Bourdeau-Goulet (:user:`sarahclaude`), Trevor James Smith (:user:`Zeitsperre`), Marco Braun (:user:`vindelico`).
- xscen now adheres to PEPs 517/518/621 using the setuptools and setuptools-scm backend for building and packaging. (:pull:`292`).
- New function
xscen.indicators.select_inds_for_avail_vars
to filter the indicators that can be calculated with the variables available in axarray.Dataset
. (:pull:`291`). - Replaced aggregation function
climatological_mean()
withclimatological_op()
offering more types of operations to aggregate over climatological periods. (:pull:`290`) - Added the ability to search for simulations that reach a given warming level. (:pull:`251`).
xs.spatial_mean
now accepts theregion="global"
keyword to perform a global average (:issue:`94`, :pull:`260`).xs.spatial_mean
withmethod='xESMF'
will also automatically segmentize polygons (down to a 1° resolution) to ensure a correct average (:pull:`260`).- Added documentation for require_all_on in search_data_catalogs. (:pull:`263`).
xs.save_to_table
andxs.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. (:issue:`80`, :issue:`93`, :pull:`265`). - New argument
attribute_weights
togenerate_weights
to allow for custom weights. (:pull:`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"
ofsave_to_netcdf
andsave_to_zarr
. (:pull:`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. (:issue:`268`, :pull:`270`).
- Implemented support for multiple levels and models in
xs.subset_warming_level
. Better support for DataArray and DataFrame inxs.get_warming_level
. (:pull:`270`). - Added the ability to directly provide an ensemble dataset to
xs.ensemble_stats
. (:pull:`299`). - Added support in
xs.ensemble_stats
for the new robustness-related functions available in xclim. (:pull:`299`). - New function
xs.ensembles.get_partition_input
(:pull:`289`).
climatological_mean()
has been replaced withclimatological_op()
and will be abandoned in a future version. (:pull:`290`)experiment_weights
argument ingenerate_weights
was renamed tobalance_experiments
. (:pull:`252`).- New argument
attribute_weights
togenerate_weights
to allow for custom weights. (:pull:`252`). - For a sequence of models, the output of
xs.get_warming_level
is now a list. Revert to a dictionary withoutput='selected'
(:pull:`270`). - The global average temperature database is now a netCDF, custom databases must follow the same format (:pull:`270`).
- Fixed a bug in
xs.search_data_catalogs
when searching for fixed fields and specific experiments/members. (:pull:`251`). - Fixed a bug in the documentation build configuration that prevented stable/latest and tagged documentation builds from resolving on ReadTheDocs. (:pull:`256`).
- Fixed
get_warming_level
to avoid incomplete matches. (:pull:`269`). - search_data_catalogs now eliminates anything that matches any entry in exclusions. (:issue:`275`, :pull:`280`).
- Fixed a bug in
xs.scripting.save_and_update
wherebuild_path_kwargs
was ignored when trying to guess the file format. (:pull:`282`). - Add a warning to
xs.extract._dispatch_historical_to_future
. (:issue:`286`, :pull:`287`). - Modify use_cftime for the calendar conversion in
to_dataset
. (:issue:`303`, :pull:`289`).
- Continued work on adding tests. (:pull:`251`).
- Fixed pre-commit's pretty-format-json hook so that it ignores notebooks. (:pull:`254`).
- Fixed the labeler so docs/CI isn't automatically added for contributions by new collaborators. (:pull:`254`).
- Made it so that tests are no longer treated as an installable package. (:pull:`248`).
- Renamed the pytest marker from
requires_docs
torequires_netcdf
. (:pull:`248`). - Included the documentation in the source distribution, while excluding the NetCDF files. (:pull:`248`).
- Reduced the size of the files in
/docs/notebooks/samples
and changed the notebooks and tests accordingly. (:issue:`247`, :pull:`248`). - Added a new xscen.testing module with the datablock_3d function previously located in
/tests/conftest.py
. (:pull:`248`). - New function xscen.testing.fake_data to generate fake data for testing. (:pull:`248`).
- xESMF 0.8 Regridder and SpatialAverager argument
out_chunks
is now accepted byxs.regrid_dataset
andxs.spatial_mean
. (:pull:`260`). - Testing, Packaging, and CI adjustments. (:pull:`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. (:pull:`282`).
- pip check in conda builds in GitHub workflows have been temporarily set to always pass. (:pull:`288`).
- The cookiecutter template has been updated to the latest commit via cruft. (:pull:`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. (:pull:`292`).
publish_release_notes
now uses better logic for finding and reformatting the CHANGES.rst file. (:pull:`292`).bump2version
version-bumping utility was replaced bybump-my-version
. (:pull:`292`).- Documentation build checks no longer fail due to broken external links; Notebooks are now nested and numbered. (:pull:`304`).
- Update dependencies by removing
pygeos
, pinningshapely>=2
andintake-esm>=2023.07.07
as well as other small fixes to the environment files. (:pull:`243`). - Fix
xs.aggregate.spatial_mean
with methodcos-lat
when the data is on a rectilinear grid. (:pull:`243`).
- Added a workflow that removes obsolete GitHub Workflow caches from merged pull requests. (:pull:`250`).
- Added a workflow to perform automated labeling of pull requests, dependent on the files changed. (:pull:`250`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Pascal Bourgault (:user:`aulemahal`), Trevor James Smith (:user:`Zeitsperre`), Juliette Lavoie (:user:`juliettelavoie`), Marco Braun (:user:`vindelico`).
- Dropped support for Python 3.8, added support for 3.11. (:pull:`199`, :pull:`222`).
- xscen is now available on conda-forge, and can be installed with
conda install -c conda-forge xscen
. (:pull:`241`)
- xscen now tracks code coverage using coveralls. (:pull:`187`).
- New function get_warming_level to search within the IPCC CMIP global temperatures CSV without requiring data. (:issue:`208`, :pull:`210`).
- File re-structuration from catalogs with
xscen.catutils.build_path
. (:pull:`205`, :pull:`237`). - New scripting functions save_and_update and move_and_delete. (:pull:`214`).
- Spatial dimensions can be generalized as X/Y when rechunking and will be mapped to rlon/rlat or lon/lat accordingly. (:pull:`221`).
- New argument var_as_string for get_cat_attrs to return variable names as strings. (:pull:`233`).
- New argument copy for move_and_delete. (:pull:`233`).
- New argument restrict_year for compute_indicators. (:pull:`233`).
- Add more comments in the template. (:pull:`233`, :issue:`232`).
generate_weights
now allows to split weights between experiments, and make them vary along the time/horizon axis. (:issue:`108`, :pull:`231`).- New independence_level, institution, added to
generate_weights
. (:pull:`231`). - Updated
produce_horizon
so it can accept multiple periods or warming levels. (:pull:`231`, :pull:`240`). - Add more comments in the template. (:pull:`233`, :pull:`235`, :issue:`232`).
- New function
diagnostics.health_checks
that can perform multiple checkups on a dataset. (:pull:`238`).
- Columns
date_start
anddate_end
now use adatetime64[ms]
dtype. (:pull:`222`). - The default output of
date_parser
is nowpd.Timestamp
(output_dtype='datetime'
). (:pull:`222`). date_parser(date, end_of_period=True)
has time "23:59:59", instead of "23:00". (:pull:`222`, :pull:`237`).driving_institution
was removed from the "default" xscen columns. (:pull:`222`).- Folder parsing utilities (
parse_directory
) moved toxscen.catutils
. Signature changed :globpattern
removed,dirglob
added, newpatterns
specifications. See doc for all changes. (:pull:`205`). compute_indicators
now returns all outputs produced by indicators with multiple outputs (such as rain_season). (:pull:`228`).- In
generate_weights
, independence_level all was renamed model. (:pull:`231`). - In response to a bugfix, results for
generate_weights(independence_level='GCM')
are significantly altered. (:issue:`230`, :pull:`231`). - Legacy support for stats_kwargs in
ensemble_stats
was dropped. (:pull:`231`). - period in
produce_horizon
has been deprecated and replaced with periods. (:pull:`231`). - Some automated to_level were updated to reflect more recent changes. (:pull:`231`).
- Removed
diagnostics.fix_unphysical_values
. (:pull:`238`).
- Fix bug in
unstack_dates
with seasonal climatological mean. (:issue:`202`, :pull:`202`). - Added NotImplemented errors when trying to call climatological_mean and compute_deltas with daily data. (:pull:`187`).
- Minor documentation fixes. (:issue:`223`, :pull:`225`).
- Fixed a bug in
unstack_dates
where it failed for anything other than seasons. (:pull:`228`). cleanup
with common_attrs_only now works even when no cat attribute is present in the datasets. (:pull:`231`).
- Removed the pin on xarray's version. (:issue:`175`, :pull:`199`).
- Folder parsing utilities now in pure python, platform independent. New dependency
parse
. (:pull:`205`). - Updated ReadTheDocs configuration to prevent
--eager
installation of xscen (:pull:`209`). - Implemented a template to be used for unit tests. (:pull:`187`).
- Updated GitHub Actions to remove deprecation warnings. (:pull:`187`).
- Updated the cookiecutter used to generate boilerplate documentation and code via cruft. (:pull:`212`).
- A few changes to subset_warming_level so it doesn't need driving_institution. (:pull:`215`).
- Added more tests. (:pull:`228`).
- In
compute_indicators
, the logic to manage indicators returning multiple outputs was simplified. (:pull:`228`).
Contributors to this version: Trevor James Smith (:user:`Zeitsperre`), Juliette Lavoie (:user:`juliettelavoie`), Pascal Bourgault (:user:`aulemahal`), Gabriel Rondeau-Genesse (:user:`RondeauG`).
- xscen is now offered as a conda package available through Anaconda.org. Refer to the installation documentation for more information. (:issue:`149`, :pull:`171`).
- Deprecation: Release 0.6.0 of xscen will be the last version to support
xscen.extract.clisops_subset
. Usexscen.spatial.subset
instead. (:pull:`182`, :pull:`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. (:issue:`99`, :issue:`101`, :pull:`184`).
- New 'cos-lat' averaging in spatial_mean. (:issue:`94`, :pull:`125`).
- Support for computing anomalies in compute_deltas. (:pull:`165`).
- Add function diagnostics.measures_improvement_2d. (:pull:`167`).
- Add function
regrid.create_bounds_rotated_pole
and automatic use inregrid_dataset
andspatial_mean
. This is temporary, while we wait for a functioning method incf_xarray
. (:pull:`174`, :issue:`96`). - Add
spatial
submodule with functionscreep_weights
andcreep_fill
for filling NaNs using neighbours. (:pull:`174`). - Allow passing
GeoDataFrame
instances inspatial_mean
'sregion
argument, not only geospatial file paths. (:pull:`174`). - Allow searching for periods in catalog.search. (:issue:`123`, :pull:`170`).
- Allow searching and extracting multiple frequencies for a given variable. (:issue:`168`, :pull:`170`).
- New masking feature in
extract_dataset
. (:issue:`180`, :pull:`182`). - New function
xs.spatial.subset
to replacexs.extract.clisops_subset
and add method "sel". (:issue:`180`, :pull:`182`). - Add long_name attribute to diagnostics. ( :pull:`189`).
- Added a new YAML-centric notebook (:issue:`8`, :pull:`191`).
- New
utils.standardize_periods
to standardize that argument across multiple functions. (:issue:`87`, :pull:`192`). - New coverage_kwargs argument added to
search_data_catalogs
to allow modifying the default values ofsubset_file_coverage
. (:issue:`87`, :pull:`192`).
- 'mean' averaging has been deprecated in spatial_mean. (:pull:`125`).
- 'interp_coord' has been renamed to 'interp_centroid' in spatial_mean. (:pull:`125`).
- The 'datasets' dimension of the output of
diagnostics.measures_heatmap
is renamed 'realization'. (:pull:`167`). - _subset_file_coverage was renamed subset_file_coverage and moved to
catalog.py
to prevent circular imports. (:pull:`170`). - extract_dataset doesn't fail when a variable is in the dataset, but not variables_and_freqs. (:pull:`185`).
- The argument period, used in multiple function, is now always a single list, while periods is more flexible. (:issue:`87`, :pull:`192`).
- The parameters reference_period and simulation_period of
xscen.train
andxscen.adjust
were renamed period/periods to respect the point above. (:issue:`87`, :pull:`192`).
- Forbid pandas v1.5.3 in the environment files, as the linux conda build breaks the data catalog parser. (:issue:`161`, :pull:`162`).
- Only return requested variables when using
DataCatalog.to_dataset
. (:pull:`163`). compute_indicators
no longer crashes if less than 3 timesteps are produced. (:pull:`125`).- xarray is temporarily pinned below v2023.3.0 due to an API-breaking change. (:issue:`175`, :pull:`173`).
- xscen.utils.unstack_fill_nan` can now handle datasets that have non dimension coordinates. (:issue:`156`, :pull:`175`).
- extract_dataset now skips a simulation way earlier if the frequency doesn't match. (:pull:`170`).
- extract_dataset now correctly tries to extract in reverse timedelta order. (:pull:`170`).
- compute_deltas no longer creates all NaN values if the input dataset is in a non-standard calendar. (:pull:`188`).
- xscen now manages packaging for PyPi and TestPyPI via GitHub workflows. (:pull:`159`).
- Pre-load coordinates in
extract.clisops_subset
(:pull:`163`). - Minimal documentation for templates. (:pull:`163`).
- xscen is now indexed in Zenodo, under the ouranos community of projects. (:pull:`164`).
- Added a few relevant Shields to the README.rst. (:pull:`164`).
- Better warning messages in
_subset_file_coverage
when coverage is insufficient. (:pull:`125`). - The top-level Makefile now includes a linkcheck recipe, and the ReadTheDocs configuration no longer reinstalls the llvmlite compiler library. (:pull:`173`).
- The checkups on coverage and duplicates can now be skipped in subset_file_coverage. (:pull:`170`).
- Changed the ProjectCatalog docstrings to make it more obvious that it needs to be created empty. (:issue:`99`, :pull:`184`).
- Added parse_config to creep_fill, creep_weights, and reduce_ensemble (:pull:`191`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Juliette Lavoie (:user:`juliettelavoie`), Trevor James Smith (:user:`Zeitsperre`), Sarah Gammon (:user:`SarahG-579462`) and Pascal Bourgault (:user:`aulemahal`).
- Possibility of excluding variables read from file from the catalog produced by
parse_directory
. (:pull:`107`). - New functions
extract.subset_warming_level
andaggregate.produce_horizon
. (:pull:`93`). - add round_var to xs.clean_up. (:pull:`93`).
- New "timeout_cleanup" option for
save_to_zarr
, which removes variables that were in the process of being written when receiving aTimeoutException
. (:pull:`106`). - New
scripting.skippable
context, allowing the use of CTRL-C to skip code sections. (:pull:`106`). - Possibility of fields with underscores in the patterns of
parse_directory
. (:pull:`111`). - New
utils.show_versions
function for printing or writing to file the dependency versions of xscen. (:issue:`109`, :pull:`112`). - Added previously private notebooks to the documentation. (:pull:`108`).
- Notebooks are now tested using pytest with nbval. (:pull:`108`).
- New
restrict_warming_level
argument forextract.search_data_catalogs
to filter dataset that are not in the warming level csv. (:issue:`105`, :pull:`138`). - Set configuration value programmatically through
CONFIG.set
. (:pull:`144`). - New
to_dataset
method onDataCatalog
. The same asto_dask
, but exposing more aggregation options. (:pull:`147`). - New templates folder with one general template. (:issue:`151`, :pull:`158`).
- Functions that are called internally can no longer parse the configuration. (:pull:`133`).
clean_up
now converts the calendar of variables that use "interpolate" in "missing_by_var" at the same time.- Hence, when it is a conversion from a 360_day calendar, the random dates are the same for all of the these variables. (:issue:`102`, :pull:`104`).
properties_and_measures
no longer casts month coordinates to string. (:pull:`106`).- search_data_catalogs no longer crashes if it finds nothing. (:issue:`42`, :pull:`92`).
- Prevented fixed fields from being duplicated during _dispatch_historical_to_future (:issue:`81`, :pull:`92`).
- Added missing parse_config to functions in reduce.py (:pull:`92`).
- Added deepcopy before skipna is popped in spatial_mean (:pull:`92`).
- subset_warming_level now validates that the data exists in the dataset provided (:issue:`117`, :pull:`119`).
- Adapt stack_drop_nan for the newest version of xarray (2022.12.0). (:issue:`122`, :pull:`126`).
- Fix stack_drop_nan not working if intermediate directories don't exist (:issue:`128`).
- Fixed a crash when compute_indicators produced fixed fields (:pull:`139`).
compute_deltas
skips the unstacking step if there is no time dimension and cast object dimensions to string. (:pull:`9`)- Added the "2sem" frequency to the translations CVs. (:pull:`111`).
- Skip files we can't read in
parse_directory
. (:pull:`111`). - Fixed non-numpy-standard Docstrings. (:pull:`108`).
- Added more metadata to package description on PyPI. (:pull:`108`).
- Faster
search_data_catalogs
andextract_dataset
through a fasterDataCatalog.unique
, date parsing and a rewrite of theensure_correct_time
logic. (:pull:`127`). - The
search_data_catalogs
function now accepts str or pathlib.Path variables (in addition to lists of either data type) for performing catalog lookups. (:pull:`121`). - produce_horizons now supports fixed fields (:pull:`139`).
- Rewrite of
unstack_dates
for better performance with dask arrays. (:pull:`144`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Juliette Lavoie (:user:`juliettelavoie`), Trevor James Smith (:user:`Zeitsperre`) and Pascal Bourgault (:user:`aulemahal`).
- New functions
diagnostics.properties_and_measures
,diagnostics.measures_heatmap
anddiagnostics.measures_improvement
. (:issue:`5`, :pull:`54`). - Add argument resample_methods to xs.extract.resample. (:issue:`57`, :pull:`57`)
- Added a ReadTheDocs configuration to expose public documentation. (:issue:`65`, :pull:`66`).
xs.utils.stack_drop_nans
/xs.utils.unstack_fill_nan
will now format the to_file/coords string to add the domain and the shape. (:issue:`59`, :pull:`67`).- New unstack_dates function to "extract" seasons or months from a timeseries. (:pull:`68`).
- Better spatial_mean for cases using xESMF and a shapefile with multiple polygons. (:pull:`68`).
- Yet more changes to parse_directory: (:pull:`68`).
- Better parallelization by merging the finding and name-parsing step in the same dask tree.
- Allow cvs for the variable columns.
- Fix parsing the variable names from datasets.
- Sort the variables in the tuples (for a more consistent output)
- In extract_dataset, add option
ensure_correct_time
to ensure the time coordinate matches the expected freq. Ex: monthly values given on the 15th day are moved to the 1st, as expected when asking for "MS". (:issue: 53). - In regrid_dataset: (:pull:`68`).
- Allow passing skipna to the regridder kwargs.
- Do not fail for any grid mapping problem, including if a grid_mapping attribute mentions a variable that doesn't exist.
- Default email sent to the local user. (:pull:`68`).
- Special accelerated pathway for parsing catalogs with all dates within the datetime64[ns] range. (:pull:`75`).
- New functions
reduce_ensemble
andbuild_reduction_data
to support kkz and kmeans clustering. (:issue:`4`, :pull:`63`). - ensemble_stats can now loop through multiple statistics, support functions located in xclim.ensembles._robustness, and supports weighted realizations. (:pull:`63`).
- New function ensemble_stats.generate_weights that estimates weights based on simulation metadata. (:pull:`63`).
- New function catalog.unstack_id to reverse-engineer IDs. (:pull:`63`).
- generate_id now accepts Datasets. (:pull:`63`).
- Add rechunk option to properties_and_measures (:pull:`76`).
- Add create argument to ProjectCatalog (:issue:`11`, :pull:`77`).
- Add percentage deltas to compute_deltas (:issue:`82`, :pull:`90`).
- statistics / stats_kwargs have been changed/eliminated in ensemble_stats, respectively. (:pull:`63`).
- Add a missing dependencies to the env (pyarrow, for faster string handling in catalogs). (:pull:`68`).
- Allow passing
compute=False
to save_to_zarr. (:pull:`68`).
- Small bugfixes in aggregate.py. (:pull:`55`, :pull:`56`).
- Default method of xs.extract.resample now depends on frequency. (:issue:`57`, :pull:`58`).
- Bugfix for _restrict_by_resolution with CMIP6 datasets (:pull:`71`).
- More complete check of coverage in
_subset_file_coverage
. (:issue:`70`, :pull:`72`) - The code that performs
common_attrs_only
in ensemble_stats has been moved to clean_up. (:pull:`63`). - Removed the default
to_level
in clean_up. (:pull:`63`). - xscen now has an official logo. (:pull:`69`).
- Use numpy max and min in properties_and_measures (:pull:`76`).
- Cast catalog date_start and date_end to "%4Y-%m-%d %H:00" when writing to disk. (:issue:`83`, :pull:`79`)
- Skip test of coverage on the sum if the list of select files is empty. (:pull:`79`)
- Added missing CMIP variable names in conversions.yml and added the ability to provide a custom file instead (:issue:`86`, :pull:`88`)
- Changed 'allow_conversion' and 'allow_resample' default to False in search_data_catalogs (:issue:`86`, :pull:`88`)
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Juliette Lavoie (:user:`juliettelavoie`), Trevor James Smith (:user:`Zeitsperre`) and Pascal Bourgault (:user:`aulemahal`).
- New function
clean_up
added. (:issue:`22`, :pull:`25`). - parse_directory: Fixes to xr_open_kwargs and support for wildcards (*) in the directories. (:pull:`19`).
- New function
xscen.ensemble.ensemble_stats
added. (:issue:`3`, :pull:`28`). - New functions
spatial_mean
,climatological_mean
anddeltas
added. (:issue:`4`, :pull:`35`). - Add argument
intermediate_reg_grids
toxscen.regridding.regrid
. (:issue:`34`, :pull:`39`). - Add argument
moving_yearly_window
toxscen.biasadjust.adjust
. (:pull:`39`). - Many adjustments to
parse_directory
: better wildcards (:issue:`24`), allow custom columns, fastpaths forparse_from_ds
, and more (:pull:`30`). - Documentation now makes better use of autodoc to generate package index. (:pull:`41`).
- periods argument added to compute_indicators to support datasets with jumps in time (:pull:`35`).
- Patterns in
parse_directory
start at the end of the paths indirectories
. (:pull:`30`). - Argument
extension
ofparse_directory
has been renamedglobpattern
. (:pull:`30`). - The
xscen
API and filestructure have been significantly refactored. (:issue:`40`, :pull:`41`). The following functions are available from the top-level: adjust
,train
,ensemble_stats
,clisops_subset
,dispatch_historical_to_future
,extract_dataset
,resample
,restrict_by_resolution
,restrict_multimembers
,search_data_catalogs
,save_to_netcdf
,save_to_zarr
,rechunk
,compute_indicators
,regrid_dataset
, andcreate_mask
.
- The
- xscen now requires geopandas and shapely (:pull:`35`).
- Following a change in intake-esm xscen now uses "cat:" to prefix the dataset attributes extracted from the catalog. All catalog-generated attributes should now be valid when saving to netCDF. (:issue:`13`, :pull:`51`).
- parse_directory: Fixes to xr_open_kwargs. (:pull:`19`).
- Fix for indicators removing the 'time' dimension. (:pull:`23`).
- Security scanning using CodeQL and GitHub Actions is now configured for the repository. (:pull:`21`).
- Bumpversion action now configured to automatically augment the version number on each merged pull request. (:pull:`21`).
- Add
align_on = 'year'
argument in bias adjustment converting of calendars. (:pull:`39`). - GitHub Actions using Ubuntu-22.04 images are now configured for running testing ensemble using tox-conda. (:pull:`44`).
- import xscen smoke test is now run on all pull requests. (:pull:`44`).
- Fix for create_mask removing attributes (:pull:`35`).
Contributors to this version: Gabriel Rondeau-Genesse (:user:`RondeauG`), Pascal Bourgault (:user:`aulemahal`), Trevor James Smith (:user:`Zeitsperre`), Juliette Lavoie (:user:`juliettelavoie`).
- This is the first official release for xscen!
- Supports workflows with YAML configuration files for better transparency, reproducibility, and long-term backups.
- Intake_esm-based catalog to find and manage climate data.
- Climate dataset extraction, subsetting, and temporal aggregation.
- Calculate missing variables through Intake-esm's DerivedVariableRegistry.
- Regridding with xESMF.
- Bias adjustment with xclim.
- N/A
- N/A