github Ouranosinc/xclim v0.30.0

latest releases: v0.41.0, v0.40.0, v0.39.0...
2 years ago

New indicators

  • climatological_mean_doy indice returns the mean and standard deviation across a climatology according to day-of-year (xarray.DataArray.groupby("time.dayofyear")). A moving window averaging of days can also be supplied (default:window=1).
  • within_bnds_doy indice returns a boolean array indicating whether or not array's values are within bounds for each day of the year.
  • Added atmos.wet_precip_accumulation, an indicator accumulating precipitation over wet days.
  • Module ICCLIM now includes PRCPTOT, which accumulates precipitation for days with precipitation above 1 mm/day.

New features and enhancements

  • xclim.core.utils.nan_calc_percentiles now uses a custom algorithm instead of numpy.nanpercentiles to have more flexibility on the interpolation method. The performance is also improved.

  • xclim.core.calendar.percentile_doy now uses the 8th method of Hyndman & Fan for linear interpolation (alpha = beta = 1/3). Previously, the function used Numpy's percentile, which corresponds to the 7th method. This change is motivated by the fact that the 8th is recommended by Hyndman & Fay, and it ensures consistency with other climate indices packages (climdex, icclim). Using alpha = beta = 1 restores the previous behaviour.

  • xclim.core.utils._cal_perc is now only a proxy for xc.core.utils.nan_calc_percentiles with some axis moves.

  • xclim now implements many data quality assurance flags (xclim.core.dataflags) for temperature and precipitation based on ICCLIM documentation guidelines <https://eca.knmi.nl/documents/atbd.pdf>_. These checks include the following:

    • Temperature (variables: tas, tasmin, tasmax): tasmax_below_tasmin, tas_exceeds_tasmax, tas_below_tasmin, temperature_extremely_low (thresh="-90 degC"), temperature_extremely_high (thresh="60 degC").
    • Precipitation-specific (variables: pr, prsn, ): negative_accumulation_values, very_large_precipitation_events (thresh="300 mm d-1").
    • Wind-specific (variables: sfcWind, wsgsmax/sfcWindMax): wind_values_outside_of_bounds
    • Generic: outside_n_standard_deviations_of_climatology, values_repeating_for_n_or_more_days, values_op_thresh_repeating_for_n_or_more_days, percentage_values_outside_of_bounds.

    These quality-assurance checks are selected according to CF-standard variable names, and can be triggered via xclim.core.dataflags.data_flags(xarray.DataArray, xarray.Dataset). These checks are separate from the Indicator-defined datachecks and must be launched manually. They'll return an array of data_flags as boolean variables.
    If called with raise_flags=True, will raise an Exception with comments for each quality control check raised.

  • A convenience function (xclim.core.dataflags.ecad_compliant) is also offered as a method for asserting that data adheres to all relevant ECAD/ICCLIM checks. For more information on usage, consult the docstring/documentation.

  • A new utility "dataflags" is also available for performing fast quality control checks from the command-line (xclim dataflags --help). See the CLI documentation page for usage examples.

  • Added missing typed call signatures, expected returns and docstrings for many xclim.core.calendar functions.

Breaking changes

  • All "ANUCLIM" indices and indicators have lost their src_timestep argument. Most of them were not using it and now every function infers the frequency from the data directly. This may add stricter constraints on the time coordinate, the same as for xarray.infer_freq.
  • Many functions found within xclim.core.cfchecks (generate_cfcheck and check_valid_*) have been removed as existing indicator CF-standard checks and data checks rendered them redundant/obsolete.

Bug fixes

  • Fixes in sdba for (1) inputs with dimensions without coordinates, for (2) sdba.detrending.MeanDetrend and for (3) DetrendedQuantileMapping when used with dask's distributed scheduler.
  • Replaced instances of '◦' ("White bullet") with '°' ("Degree Sign") in icclim.yaml as it was causing issues for non-UTF8 environments.
  • Addressed an edge case where test_sdba::test_standardize randomness could generate values that surpass the test error tolerance.
  • Added a missing .txt file to the MANIFEST of the source distributable in order to be able to run all tests.
  • xc.core.units.rate2amount is now exact when the sampling frequency is monthly, seasonal or yearly. Earlier, monthly and yearly data were computed using constant month and year length. End-of-period frequencies are also correctly understood (ex: "M" vs "MS").
  • In the potential_evapotranspiration indice, add abbreviated method names to docstring.
  • Fixed an issue that prevented using the default group arg in adjustment objects.
  • Fix bug in missing_wmo, where a period would be considered valid if all months met WMO criteria, but complete months in a year were missing. Now, if any month does not meet criteria or is absent, the period will be considered missing.
  • Fix bootstrapping with dask arrays. Dask does not support using loc with multiple indexes to set new values, so a workaround was necessary.
  • Fix bootstrapping when the bootstrapped year must be converted to a 366_day calendar.
  • Virtual modules and translations now use 'UTF-8' by default when reading yaml or json file, instead of a machine-dependent encoding.

Internal Changes

  • xclim code quality checks now use the newest black (v21.8-beta). Checks launched via tox and pre-commit now run formatting modifications over Jupyter notebooks found under docs.

Don't miss a new xclim release

NewReleases is sending notifications on new releases.