Skip to contents

climatekit 0.2.0

Bug fixes

  • ck_total_precip() now applies the canonical ‘ETCCDI’ ‘PRCPTOT’ wet-day filter (precipitation >= 1 mm) by default. Pass wet_day_threshold = 0 to recover the previous raw-sum behaviour.
  • ck_first_frost() and ck_last_frost() gain a lat argument and use hemisphere-appropriate cutoffs. Southern Hemisphere users no longer get silent NA results.
  • ck_branas() gains a lat argument; Southern Hemisphere growing season is now October-February of the following year.
  • ck_precip_intensity() (SDII) returns NA for periods with no valid observations rather than NaN.

In-base bootstrap (Zhang 2005)

  • ck_tx10p(), ck_tn10p(), ck_tx90p(), ck_tn90p() gain a bootstrap = FALSE argument. When TRUE, the leave-one-out resampling of Zhang et al. (2005) is applied to remove self-inclusion bias for analysis years inside the reference period. This is the canonical ‘climdex.pcic’ / ‘climpact’ behaviour and is required for climate-change attribution work spanning the base period.

ET-SCI heatwave family extensions

  • ck_hwm(), ck_hwa(), ck_cwm(), ck_cwa() gain a mode = c( "excess", "absolute") argument. "excess" (default) preserves the existing ‘ET-SCI’ / ‘climpact’ convention. "absolute" returns mean / peak raw temperature on event days, matching Perkins-Alexander (2013).
  • New function ck_ehf() implements the Excess Heat Factor of Nairn and Fawcett (2013), the Australian Bureau of Meteorology operational heatwave metric. Three annual statistics are exposed via stat = c("max", "n_positive", "sum_positive").

SPI / SPEI distribution choice

  • ck_spi() gains distribution = c("gamma", "pearsonIII"). Pearson III is preferred in arid regions where the wet-day distribution is highly skewed (Stagge et al. 2015).
  • ck_spei() gains distribution = c("log-logistic", "gev"). GEV is fitted via Hosking (1985) L-moments.

FAO-56 Penman-Monteith reference ET

  • New function ck_pet_pm() implements the FAO-56 Penman-Monteith reference evapotranspiration (Allen et al. 1998), the international standard. Optional inputs include relative humidity, wind speed, incoming solar radiation, and elevation; FAO-56 fallbacks are used where these are unavailable. ck_pet() remains as the simpler temperature-only Hargreaves estimator.

ETCCDI canonical 27 coverage

ET-SCI heatwave and cold-wave families

  • Added 10 new functions implementing the ‘ET-SCI’ heatwave and cold-wave families on a calendar-day percentile base. Heatwave family: ck_hwn(), ck_hwf(), ck_hwd(), ck_hwm(), ck_hwa() (number, frequency, duration, magnitude, amplitude). Cold-wave duals: ck_cwn(), ck_cwf(), ck_cwd(), ck_cwm(), ck_cwa().
  • The ‘CWD’ acronym is used by both ‘ETCCDI’ (Consecutive Wet Days) and ‘ET-SCI’ (Cold Wave Duration). ck_cwd() here is the ET-SCI cold-wave version; ck_wet_days() is the ETCCDI precipitation index. Both function-level documentation pages cross-reference the other.

Discovery surfaces

  • ck_etccdi_27() returns the canonical 27 ‘ETCCDI’ indices as a data frame with code, name, variable, unit, definition, ck_function, and status columns. Use it to audit coverage or to locate the function for a given short code.
  • ck_catalogue() returns the full implementation catalogue (51 rows). ck_browse(sector, standard, search) filters by sector (‘agriculture’, ‘health’, ‘water’, ‘energy’), standard (‘ETCCDI’, ‘ET-SCI’, ‘agroclimatic’, etc.), or free-text search.

Gridded support

  • ck_apply_grid(x, fun, dates, ...) applies any ck_* function over the cells of a ‘terra’ ‘SpatRaster’ and returns a SpatRaster with one layer per output period.
  • ck_from_netcdf(path, var) is a thin convenience wrapper around terra::rast() for ‘netCDF’ inputs with file-existence and argument validation.
  • ‘terra’ and ‘ncdf4’ are in ‘Suggests’; loading climatekit alone does not pull them in.

Documentation

  • inst/CITATION provides ‘bibentry’ records for the package and for Alexander et al. (2006) and Zhang et al. (2011).
  • ‘CITATION.cff’ at the repository root supports GitHub’s citation widget.
  • New vignette climdex-migration documents the function-name crosswalk from ‘climdex.pcic’ to climatekit, plus interface-shift notes (numeric-vector inputs, tidy data-frame outputs, default reference period).

Documented limitations

  • The percentile-based indices use the standard ±2-day calendar window but do not implement the Zhang et al. (2005) in-base bootstrap. Years inside the reference period therefore have a small self-inclusion bias. This is documented in each function’s documentation page.

climatekit 0.1.0

CRAN release: 2026-03-23

  • Initial release.
  • 10 temperature indices: frost days, ice days, summer days, tropical nights, growing season length, heating/cooling/growing degree days, diurnal temperature range, warm spell duration.
  • 8 precipitation indices: consecutive dry/wet days, total precipitation, heavy/very heavy precipitation days, max 1-day and 5-day precipitation, precipitation intensity (SDII).
  • 3 drought indices: Standardized Precipitation Index (SPI), Standardized Precipitation-Evapotranspiration Index (SPEI), potential evapotranspiration (Hargreaves method).
  • 5 agroclimatic indices: Huglin, Winkler, Branas, first/last frost dates.
  • 4 comfort indices: wind chill, heat index, humidex, fire danger index.
  • Generic dispatcher ck_compute() for programmatic index selection.
  • ck_available() and ck_metadata() for index discovery.
  • ck_convert_temp() for temperature unit conversion.