Changelog History
xskillscore v0.0.29 (2026-02-18)
Internal Changes
Lifted numpy<2.4 dependency constraint and bumped minimum to numpy>=1.25. (GH444) Aaron Spring
xskillscore v0.0.28 (2026-01-19)
Bug Fixes
Fixed a bug introduced in v0.0.27 where numpy v1.x support was broken for some algorithms. (GH431) Trevor James Smith.
Removed all numpy.atleast_1d() calls that were causing numerical differences in p-value calculations with numpy v2.x and fixed several doctest expected outputs. (GH440) Aaron Spring.
Internal Changes
Pinned numpy below v2.4 due to breaking API changes. (GH441) Trevor James Smith
Adjusted tests to adapt to new xarray attributes preservation behaviour. (GH441) Trevor James Smith
Updated pre-commit configuration. (GH434)
xskillscore v0.0.27 (2025-07-14)
Bug Fixes
Updated and corrected the build configurations in the GitHub workflows so that the correct Python is used when running automated build tests. (GH426) Trevor James Smith
Internal Changes
Adapted code base for modern numpy and xarray. (GH426) Trevor James Smith
Removed
xskillscore.core.utils.suppress_warnings()in lieu ofwarnings.filterwarnings(). (GH426) Trevor James SmithThe minimum supported versions for several dependencies have been updated. (GH426) Trevor James Smith
xskillscore now uses setuptools-scm to automatically determine the version number. (GH427) Trevor James Smith
Updated GitHub Actions and pre-commit hook versions to more modern versions. (GH428) Trevor James Smith
Release documentation steps have been updated to to refer to the new setuptools-scm-based approach. (GH428) Trevor James Smith
The test suite now refers to the xarray.testing submodule for basic testing helpers. (GH422) weipeng1999
xskillscore v0.0.26 (2024-03-10)
Internal Changes
Fix build Ray Bell.
xskillscore v0.0.25 (2024-03-10)
Bug Fixes
rank_histogram()random_for_tied=Truehandles tied ranks correctly by default.random_for_tied=Falseignores this and retains previous behaviour. (GH335, GH364) Aaron Spring.Allow singleton dimension in
resample_iterations_idx()as this is allowed inresample_iterations()also. (GH375, GH376) Aaron Spring.
Internal Changes
Reduce dependencies (GH359, GH363) Aaron Spring.
Implement
typingfor allxs.{calls}. (GH317, GH366) Aaron Spring.Refactor masking
NaNinrps(). (GH397) Aaron Spring.Use to
pyproject.tomland userufffor linting Ray Bell.
xskillscore v0.0.24 (2021-10-08)
Documentation
xskillscore v0.0.23 (2021-08-09)
Features
multipletests()controlling the false discovery rate for multiple hypothesis tests. (GH365, GH370) Aaron Spring.
Bug Fixes
crps_ensemble()broadcasts (GH345, GH346) Aaron Spring.
Internal Changes
resample_iterations_idx()do not break whendimis not coordinate. (GH303, GH339) Aaron Spring.Allow
floatorintegerforecasts inbrier_score()(GH285, GH341) Aaron Spring.
xskillscore v0.0.22 (2021-06-29)
Internal Changes
xskillscore v0.0.21 (2021-06-13)
Allow
floatorintegerforecasts inbrier_score()(GH285, GH342) Aaron Spring
Internal Changes
Added mypy to linting (GH320) Zachary Blackwood.
Documentation
Breaking changes
Renamed mae_test to halfwidth_ci_test to make this comparative metric generic. Now, it accepts any of the distance metrics functions except for mape. The new function has an additional argument called metric which is a string and name of the target distance metric. (GH319) Taher Chegini.
xskillscore v0.0.20 (2021-05-08)
Features
Specify category distribution type with
input_distributionsinrps()ifcategory_edges==Nonethat forecasts and observations are probability distributionspor cumulative distributionssc. Seerps()docstrings and doctests for examples. (GH300) Aaron SpringAdded slope of linear fit
linslope(). (GH307) Ray Bell
Internal Changes
Use
pytest-xdistandmatplotlib-basein environments to speed up CI. (GH283) Aaron Springrps()does not break from masking NaNs anymore.rps()expilicty checks forbin_dimifcategory_edges==None. (GH287) Aaron SpringRemoved a call to compute weights in testing. (GH306) Ray Bell
xskillscore v0.0.19 (2021-03-12)
Features
Added mean error
me(). (GH202, GH200) Andrew Huangbrier_score()andrps()now contain keywordfairto account for ensemble-size adjustments, but defaults toFalse.brier_score()also accepts binary or boolean forecasts when amember_dimdimension is present. (GH162, GH211) Aaron SpringAdded MAE significance test
mae_test()from Jolliffe and Ebert https://www.cawcr.gov.au/projects/verification/CIdiff/FAQ-CIdiff.html (GH192, GH209) Aaron Springresample_iterations()and fasterresample_iterations_idx()for resampling with and without replacement. (GH215, GH225) Aaron SpringAdded receiver operating characteristic (ROC)
roc(). (GH114, GH256, GH236, GH259) Aaron SpringAdded many options for
category_edgesinrps(), which allows multi-dimensional edges.rps()now requires dimensionmember_dimin forecasts. (GH275, GH277) Aaron Spring
Breaking changes
Aligned output of
sign_test()withmae_test(). Now tests from comparative.py return more than one object including a boolean indicatingsignficancebased onalpha. (GH209) Aaron Spring
Bug Fixes
sign_test()now works forxr.Datasetinputs. (GH198, GH199) Aaron Springthreshold_brier_score()does not average over thresholds whendim==None. Now also carriesthresholdas coordinate. (GH255, GH211) Aaron SpringPassing weights no longer triggers eager computation. (GH218, GH224). Andrew Huang
rps()not restricted to[0, 1]. (GH266, GH277) Aaron Spring
Internal Changes
Added Python 3.7 and Python 3.8 to the CI. Use the latest version of Python 3 for development. (GH21, GH189) Aaron Spring
Update mape algorithm from scikit-learn v0.24.0 and test against it. (GH160, GH230) Ray Bell
Refactor
asvbenchmarks. (GH231) Aaron SpringAdded tests for nans in correlation metrics (GH246, GH247) Ray Bell
Added tests for weighted metrics against scikit-learn (GH257) Ray Bell
Pin
xhistogramto>=0.1.2and adjust code/documentation so that, as in np.histogram, right-most bin is right-edge inclusive where bins are specified (GH269) Dougie SquireReduce warnings. (GH41, GH268) Aaron Spring
Use
raise_if_dask_computesfrom xarray. (GH272, GH273) Ray Bellthreshold_brier_score()now carries threshold values as coordinates. (GH279) Aaron Spring
xskillscore v0.0.18 (2020-09-23)
Features
Added the sign test described in DelSole and Tippett 2016:
sign_test(). (GH133, GH176) Aaron Spring and Dougie Squire
Internal Changes
Removed an unused variable in
_rmse, resulting in 2x speedup (GH182). Andrew HuangRequire
xarray=0.16.1(GH183, GH184) Aaron Spring
Bug Fixes
Fix incompatibility with
xarray=0.16.1inapply_ufunc(GH183, GH184) Aaron Spring
Documentation
xskillscore v0.0.17 (2020-09-06)
Features
Added contingency table
Contingency()and associated metrics (GH119, GH153). Dougie SquireAdded
rank_histogram()anddiscrimination()to probabilistic metrics (GH136). Dougie SquireAdded
reliability()to probabilistic metrics (GH164). Dougie SquireAdded
dimandweightskwargs for probabilistic metrics. (GH121) Aaron SpringAdded
keep_attrskwarg for all metrics. (GH122) Andrew HuangAdded ranked probability score
rps(). (GH163) Aaron SpringDeterministic metrics now automatically broadcast any non-core dimensions. E.g., a single time series can be compared to a gridded product spanning that same time span. (GH165, GH71, GH156, GH166) Aaron Spring
Breaking Changes
Renamed
dimtomember_dimin probabilistic metrics. (GH121) Aaron SpringArgument
dimbecomes keyworddim=Nonein all metrics. (GH137, GH143) Aaron Springdim=Nonereduces all dimensions as inxr.mean(dim=None). (GH137, GH143) Aaron Spring
Bug Fixes
Fixes
weights=Nonetype issue with latest version ofdask. (GH168, GH171) Andrew Huang
Documentation
Added
sphinxdocumentation with full API and a quick start notebook. (GH127) Riley X. Brady and Ray Bell.
Internal Changes
Added
utilsmodule to house utilities shared across multiple modules (GH119). Dougie SquireAdded
conftest.pyto gather allpytest.fixtures. (GH126, GH159). Aaron Spring and Ray BellRemoved
test_np_deterministiccovered bytest_metric_results_accurate. (GH159) Aaron Spring
xskillscore v0.0.16 (2020-07-18)
Internal Changes
Add community support documents:
HOWTOCONTRIBUTE.rst, issue template and pull request template. Aaron Spring and Ray BellReplace
pandaswithcftimein examples and tests. Aaron Spring and Ray BellAdd coveralls for tests coverage. Aaron Spring and Ray Bell
Add
black,flake8,isort,doc8andpre-commitfor formatting similar toclimpred. Aaron Spring and Ray Bell
Bug Fixes
Avoid mutating inputted arrays when skipna=True. (GH111) Riley X. Brady.
Avoid read-only error that appeared due to not copying input arrays when dealing with NaNs. (GH111) Riley X. Brady.
xskillscore v0.0.15 (2020-03-24)
Features
Update the
XSkillScoreAccessorwith all metrics. Ray Bell
xskillscore v0.0.14 (2020-03-20)
Features
Add
r2as an implementation ofsklearn.metrics.r2_score. Ray Bell
xskillscore v0.0.13 (2020-03-17)
Bug Fixes
Fixes https://github.com/xarray-contrib/xskillscore/issues/79 assignment destination is read-only error when
skipna=Trueand weights are passed. Andrew Huang
xskillscore v0.0.12 (2020-01-09)
Internal Changes
~30-50% speedup for deterministic metrics when
weights=None. Aaron Spring
xskillscore v0.0.11 (2020-01-06)
Features
Add
effective_sample_size,pearson_r_eff_p_value, andspearman_r_eff_p_valuefor computing statistical significance for temporally correlated data with autocorrelation. Riley X. Brady
xskillscore v0.0.10 (2019-12-21)
Deprecations
madno longer works and is replaced bymedian_absolute_error. Riley X. Brady
Bug Fixes
skipnaforpearson_randspearman_rand their p-values now reports accurate results when there are pairwise nans (i.e., nans that occur in different indices inaandb) Riley X. Brady
Testing
Test that results from grid cells in a gridded product match the same value if their time series were input directly into functions. Riley X. Brady
Test that metric results from
xskillscoreare the same value as an external package (e.g.numpy,scipy,sklearn). Riley X. BradyTest that
skipna=Trueworks properly with pairwise nans. Riley X. Brady