Releases: Ouranosinc/xscen
v0.9.1
v0.9.1 (2024-06-04)
Contributors to this version: Pascal Bourgault (@aulemahal), Trevor James Smith (@Zeitsperre), Juliette Lavoie (@juliettelavoie).
Breaking changes
xscen
now uses a src layout in lieu of a flat layout. (PR/407).
Bug fixes
- Fixed defaults for
xr_combine_kwargs
inextract_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 nowCHANGELOG.rst
(see: KeepAChangelog).- The
CODE_OF_CONDUCT.rst
file adapted toContributor 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
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 callxclim.ensembles.create_ensemble
andxclim.ensembles.make_critera
if required. (PR/386).
Breaking changes
- Removed support for the old instances of the
region
argument inspatial_mean
,extract_dataset
, andsubset
. (PR/367). - Removed
xscen.extract.clisops_subset
. (PR/367). dtr
(the function) was renamed todtr_from_minmax
to avoid confusion with thedtr
variable. (PR/372).- The
xscen.reduce
module has been abandoned. (PR/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.
Internal changes
- Modified
xscen.utils.change_unit
to always adopt the name from thevariables_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 andblack
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 toxs.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" inds.cf
. (PR/384).xs.extract_dataset
andxs.DataCatalog.to_dataset
will now default to opening datasets with optionchunks={}
, 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
inadjust
function. (PR/366). creep_weights
now correctly handles the case where the grid is small,n
is large, andmode=wrap
. (GH/367).- Fixed a bug in
tasmin_from_dtr
andtasmax_from_dtr
, whendtr
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
Contributors to this version: Juliette Lavoie (@juliettelavoie), Trevor James Smith (@Zeitsperre), Gabriel Rondeau-Genesse (@RondeauG), Pascal Bourgault (@aulemahal).
Announcements
xscen
now has a security disclosure policy. (PR/353).- Various frequency-related changes to match the new
pandas
naming conventions. (PR/351).
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 themain
development branch ofxclim
. (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 requirespandas
>= 2.2 andxclim
>= 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 newpandas
nomenclature. (PR/351).
v0.8.2
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
toxs.ensembles.build_partition_data
. (PR/315). xscen
isSemantic Versioning 2.0.0 <https://semver.org/spec/v2.0.0.html>
_ compliant. (PR/319).xesmf
made an optional dependency, makingxscen
easier to install withpip
. (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 viacruft
. (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 frompre-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
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 thesetuptools
andsetuptools-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 axarray.Dataset
. (PR/291). - Replaced aggregation function
climatological_mean()
withclimatological_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 theregion="global"
keyword to perform a global average (GH/94, PR/260).xs.spatial_mean
withmethod='xESMF'
will also automatically segmentize polygons (down to a 1° resolution) to ensure a correct average (PR/260).- Added documentation for
require_all_on
insearch_data_catalogs
. (PR/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. (GH/80, GH/93, PR/265). - New argument
attribute_weights
togenerate_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"
ofsave_to_netcdf
andsave_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 forDataArray
andDataFrame
inxs.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 inxclim
. (PR/299). - New function
xs.ensembles.get_partition_input
(PR/289).
Breaking changes
climatological_mean()
has been replaced withclimatological_op()
and will be abandoned in a future version. (PR/290)experiment_weights
argument ingenerate_weights
was renamed tobalance_experiments
. (PR/252).- New argument
attribute_weights
togenerate_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 withoutput='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 inexclusions
. (GH/275, PR/280).- Fixed a bug in
xs.scripting.save_and_update
wherebuild_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
'spretty-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
torequires_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 thedatablock_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 byxs.regrid_dataset
andxs.spatial_mean
. (PR/260). - Testing, Packaging, and CI adjustments. (PR/274):
xscen
builds now install in atox
environment withconda
-providedESMF
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 withintox
.- 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 viacruft
. (PR/292):setup.py
has been mostly hollowed-out, save for thebabel
-related translation function.pyproject.toml
has been added, with most package configurations migrated into it.HISTORY.rst
has been renamed toCHANGES.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
andtoml-sort
have been added to cleanup thepyproject.toml
file, andcheck-json-schema
has been added to ensure GitHub and ReadTheDocs workflow files are valid.ruff
has been added to the linting tools to replace mostflake8
andpydocstyle
verifications.tox
builds are more pure Python environment/PyPI-friendly.xscen
now usesTrusted 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 theCHANGES.rst
file. (PR/292).bump2version
version-bumping utility was replaced bybump-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
v0.7.0
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 onconda-forge <https://anaconda.org/conda-forge/xscen>
_, and can be installed withconda 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
andmove_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
forget_cat_attrs
to return variable names as strings. (PR/233). - New argument
copy
formove_and_delete
. (PR/233). - New argument
restrict_year
forcompute_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 togenerate_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
anddate_end
now use adatetime64[ms]
dtype. (PR/222). - The default output of
date_parser
is nowpd.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 toxscen.catutils
. Signature changed :globpattern
removed,dirglob
added, newpatterns
specifications. See doc for all changes. (PR/205). compute_indicators
now returns all outputs produced by indicators with multiple outputs (such asrain_season
). (PR/228).- In
generate_weights
, independence_levelall
was renamedmodel
. (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
inensemble_stats
was dropped. (PR/231). period
inproduce_horizon
has been deprecated and replaced withperiods
. (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
andcompute_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
withcommon_attrs_only
now works even when nocat
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 needdriving_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
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 supportxscen.extract.clisops_subset
. Usexscen.spatial.subset
instead. (PR/182, PR/184). - Deprecation: The argument
region
, used in multiple functions, has been slightly reformatted. Release 0.6.0 ofxscen
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 inregrid_dataset
andspatial_mean
. This is temporary, while we wait for a functionning method incf_xarray
. (PR/174, GH/96). - Add
spatial
submodule with functionscreep_weights
andcreep_fill
for filling NaNs using neighbours. (PR/174). - Allow passing
GeoDataFrame
instances inspatial_mean
'sregion
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 replacexs.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 tosearch_data_catalogs
to allow modifying the default values ofsubset_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 renamedsubset_file_coverage
and moved tocatalog.py
to prevent circular imports. (PR/170).extract_dataset
doesn't fail when a variable is in the dataset, but notvariables_and_freqs
. (PR/185).- The argument
period
, used in multiple function, is now always a single list, whileperiods
is more flexible. (GH/87, PR/192). - The parameters
reference_period
andsimulation_period
ofxscen.train
andxscen.adjust
were renamedperiod/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 theouranos
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 thellvmlite
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
, andreduce_ensemble
(PR/191).
v0.5.0
Contributors to this version: Gabriel Rondeau-Genesse (@RondeauG), Juliette Lavoie (@juliettelavoie), Trevor James Smith (@Zeitsperre), Sarah Gammon (@sg2475962) and Pascal Bourgault (@aulemahal).
New features and enhancements
- Possibility of excluding variables read from file from the catalog produced by
parse_directory
. (PR/107). - New functions
extract.subset_warming_level
andaggregate.produce_horizon
. (PR/93). - add
round_var
toxs.clean_up
. (PR/93). - New "timeout_cleanup" option for
save_to_zarr
, which removes variables that were in the process of being written when receiving aTimeoutException
. (PR/106). - New
scripting.skippable
context, allowing the use of CTRL-C to skip code sections. (PR/106). - Possibility of fields with underscores in the patterns of
parse_directory
. (PR/111). - New
utils.show_versions
function for printing or writing to file the dependency versions ofxscen
. (GH/109, PR/112). - Added previously private notebooks to the documentation. (PR/108).
- Notebooks are now tested using
pytest
withnbval
. (PR/108). - New
restrict_warming_level
argument forextract.search_data_catalogs
to filter dataset that are not in the warming level csv. (GH/105, PR/138). - Set configuration value programmatically through
CONFIG.set
. (PR/144). - New
to_dataset
method onDataCatalog
. The same asto_dask
, but exposing more aggregation options. (PR/147).
Breaking changes
- Functions that are called internally can no longer parse the configuration. (PR/133).
Bug fixes
clean_up
now converts the calendar of variables that use "interpolate" in "missing_by_var" at the same time.properties_and_measures
no longer casts month coordinates to string. (PR/106).search_data_catalogs
no longer crashes if it finds nothing. (GH/42, PR/92).- Prevented fixed fields from being duplicated during
_dispatch_historical_to_future
(GH/81, PR/92). - Added missing
parse_config
to functions inreduce.py
(PR/92). - Added deepcopy before
skipna
is popped inspatial_mean
(PR/92). subset_warming_level
now validates that the data exists in the dataset provided (GH/117, PR/119).- Adapt
stack_drop_nan
for the newest version of xarray (2022.12.0). (GH/122, PR/126). - Fix
stack_drop_nan
not working if intermediate directories don't exist (GH/128). - Fixed a crash when
compute_indicators
produced fixed fields (PR/139).
Internal changes
compute_deltas
skips the unstacking step if there is no time dimension and cast object dimensions to string. (PR/9)- Added the "2sem" frequency to the translations CVs. (PR/111).
- Skip files we can't read in
parse_directory
. (PR/111). - Fixed non-numpy-standard Docstrings. (PR/108).
- Added more metadata to package description on PyPI. (PR/108).
- Faster
search_data_catalogs
andextract_dataset
through a fasterDataCatalog.unique
, date parsing and a rewrite of theensure_correct_time
logic. (PR/127). - The
search_data_catalogs
function now acceptsstr
orpathlib.Path
variables (in addition to lists of either data type) for performing catalog lookups. (PR/121). produce_horizons
now supports fixed fields (PR/139).- Rewrite of
unstack_dates
for better performance with dask arrays. (PR/144).
v0.4.0
v0.4.0 (2022-09-28)
Contributors to this version: Gabriel Rondeau-Genesse (@RondeauG), Juliette Lavoie (@juliettelavoie), Trevor James Smith (@Zeitsperre) and Pascal Bourgault (@aulemahal).
New features and enhancements
- New functions
diagnostics.properties_and_measures
,diagnostics.measures_heatmap
anddiagnostics.measures_improvement
. (GH/5, PR/54). - Add argument
resample_methods
toxs.extract.resample
. (GH/57, PR/57) - Added a ReadTheDocs configuration to expose public documentation. (GH/65, PR/66).
xs.utils.stack_drop_nans
/xs.utils.unstack_fill_nan
will now format theto_file
/coords
string to add the domain and the shape. (GH/59, PR/67).- New unstack_dates function to "extract" seasons or months from a timeseries. (PR/68).
- Better spatial_mean for cases using xESMF and a shapefile with multiple polygons. (PR/68).
- Yet more changes to parse_directory: (PR/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: (PR/68).
- Allow passing skipna to the regridder kwargs.
- Do not fail for any grid mapping problem, includin if a grid_mapping attribute mentions a variable that doesn't exist.
- Default email sent to the local user. (PR/68).
- Special accelerated pathway for parsing catalogs with all dates within the datetime64[ns] range. (PR/75).
- New functions
reduce_ensemble
andbuild_reduction_data
to support kkz and kmeans clustering. (GH/4, PR/63). ensemble_stats
can now loop through multiple statistics, support functions located inxclim.ensembles._robustness
, and supports weighted realizations. (PR/63).- New function
ensemble_stats.generate_weights
that estimates weights based on simulation metadata. (PR/63). - New function
catalog.unstack_id
to reverse-engineer IDs. (PR/63). generate_id
now accepts Datasets. (PR/63).- Add
rechunk
option toproperties_and_measures
(PR/76). - Add
create
argument toProjectCatalog
(GH/11, PR/77). - Add percentage deltas to
compute_deltas
(GH/82, PR/90).
Breaking changes
statistics / stats_kwargs
have been changed/eliminated inensemble_stats
, respectively. (PR/63).
Bug fixes
- Add a missing dependencies to the env (
pyarrow
, for faster string handling in catalogs). (PR/68). - Allow passing
compute=False
tosave_to_zarr
. (PR/68).
Internal changes
- Small bugfixes in
aggregate.py
. (PR/55, PR/56). - Default method of
xs.extract.resample
now depends on frequency. (GH/57, PR/58). - Bugfix for
_restrict_by_resolution
with CMIP6 datasets (PR/71). - More complete check of coverage in
_subset_file_coverage
. (GH/70, PR/72) - The code that performs
common_attrs_only
inensemble_stats
has been moved toclean_up
. (PR/63). - Removed the default
to_level
inclean_up
. (PR/63). xscen
now has an official logo. (PR/69).- Use numpy max and min in
properties_and_measures
(PR/76). - Cast catalog date_start and date_end to "%4Y-%m-%d %H:00" when writing to disk. (GH/83, PR/79)
- Skip test of coverage on the sum if the list of select files is empty. (PR/79)
- Added missing CMIP variable names in conversions.yml and added the ability to provide a custom file instead (GH/86, PR/88)
- Changed 'allow_conversion' and 'allow_resample' default to False in search_data_catalogs (GH/86, PR/88)