CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-xclim

Climate indices computation package based on Xarray with extensive climate analysis capabilities

Overview
Eval results
Files

atmospheric-indicators.mddocs/

Atmospheric Indicators

Comprehensive atmospheric climate indicators for temperature, precipitation, wind, and humidity analysis. These indicators provide standardized climate metrics used in climate services, impact assessment, and adaptation planning.

Capabilities

Temperature Indicators

Mean Temperature Metrics

Basic temperature statistics and averages for climate monitoring and trend analysis.

def tg_mean(tas, freq="YS"):
    """
    Mean of daily mean temperature.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature data  
    - freq: str, resampling frequency (default "YS" for yearly)
    
    Returns:
    xr.DataArray: Mean temperature over specified frequency
    """

def tx_mean(tasmax, freq="YS"):
    """
    Mean of daily maximum temperature.
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature data
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Mean of daily maximum temperatures
    """

def tn_mean(tasmin, freq="YS"):
    """
    Mean of daily minimum temperature.
    
    Parameters:
    - tasmin: xr.DataArray, daily minimum temperature data
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Mean of daily minimum temperatures
    """

Extreme Temperature Metrics

Temperature extremes and ranges for heat wave and cold spell analysis.

def tx_max(tasmax, freq="YS"):
    """
    Maximum of daily maximum temperature.
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature data
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Maximum temperature over period
    """

def tn_min(tasmin, freq="YS"):
    """
    Minimum of daily minimum temperature.
    
    Parameters:
    - tasmin: xr.DataArray, daily minimum temperature data
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Minimum temperature over period
    """

def dtr(tasmax, tasmin, freq="YS"):
    """
    Mean diurnal temperature range.
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - tasmin: xr.DataArray, daily minimum temperature  
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Mean daily temperature range
    """

def etr(tasmax, tasmin, freq="YS"):
    """
    Extreme temperature range (max of tasmax - min of tasmin).
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - tasmin: xr.DataArray, daily minimum temperature
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Extreme temperature range
    """

Degree Day Indicators

Temperature accumulation indices for agricultural and energy applications.

def growing_degree_days(tas, thresh="4.0 degC", freq="YS"):
    """
    Growing degree days above threshold temperature.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, base threshold temperature (default "4.0 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Accumulated growing degree days
    """

def heating_degree_days(tas, thresh="17 degC", freq="YS"):
    """
    Heating degree days below threshold temperature.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, base threshold temperature (default "17 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Accumulated heating degree days
    """

def cooling_degree_days(tas, thresh="18 degC", freq="YS"):
    """
    Cooling degree days above threshold temperature.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, base threshold temperature (default "18 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Accumulated cooling degree days
    """

def freshing_degree_days(tas, thresh="0 degC", freq="YS"):
    """
    Freshing degree days below freezing point.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, freezing threshold (default "0 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Accumulated freshing degree days
    """

Temperature Threshold Indicators

Count-based temperature indices for climate extremes analysis.

def tx_days_above(tasmax, thresh="25 degC", freq="YS"):
    """
    Number of days with maximum temperature above threshold.
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - thresh: str or float, temperature threshold (default "25 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of days above threshold
    """

def tn_days_below(tasmin, thresh="0 degC", freq="YS"):
    """
    Number of days with minimum temperature below threshold.
    
    Parameters:
    - tasmin: xr.DataArray, daily minimum temperature
    - thresh: str or float, temperature threshold (default "0 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of days below threshold
    """

def frost_days(tasmin, thresh="0 degC", freq="YS"):
    """
    Number of frost days (minimum temperature below 0°C).
    
    Parameters:
    - tasmin: xr.DataArray, daily minimum temperature
    - thresh: str or float, frost threshold (default "0 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of frost days
    """

def ice_days(tasmax, thresh="0 degC", freq="YS"):
    """
    Number of ice days (maximum temperature below 0°C).
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - thresh: str or float, ice threshold (default "0 degC")  
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of ice days
    """

def summer_days(tasmax, thresh="25 degC", freq="YS"):
    """
    Number of summer days (maximum temperature above 25°C).
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - thresh: str or float, summer threshold (default "25 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of summer days
    """

def tropical_nights(tasmin, thresh="20 degC", freq="YS"):
    """
    Number of tropical nights (minimum temperature above 20°C).
    
    Parameters:
    - tasmin: xr.DataArray, daily minimum temperature
    - thresh: str or float, tropical threshold (default "20 degC")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of tropical nights
    """

Heat Wave and Cold Spell Indicators

Extended temperature extreme event detection and characterization.

def hot_spell_frequency(tasmax, thresh_tasmax="30 degC", window=3, freq="YS"):
    """
    Number of hot spell events above temperature threshold.
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - thresh_tasmax: str or float, temperature threshold (default "30 degC")
    - window: int, minimum number of consecutive days (default 3)
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of hot spell events
    """

def cold_spell_frequency(tasmin, thresh_tasmin="-10 degC", window=3, freq="YS"):
    """
    Number of cold spell events below temperature threshold.
    
    Parameters:
    - tasmin: xr.DataArray, daily minimum temperature
    - thresh_tasmin: str or float, temperature threshold (default "-10 degC")
    - window: int, minimum number of consecutive days (default 3)
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of cold spell events
    """

def hot_spell_max_length(tasmax, thresh_tasmax="30 degC", window=3, freq="YS"):
    """
    Maximum length of hot spell events.
    
    Parameters:
    - tasmax: xr.DataArray, daily maximum temperature
    - thresh_tasmax: str or float, temperature threshold
    - window: int, minimum number of consecutive days
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Maximum hot spell length in days
    """

Precipitation Indicators

Precipitation Amount Metrics

Basic precipitation statistics and accumulation measures.

def prcptot(pr, thresh="1 mm/day", freq="YS"):
    """
    Total precipitation from wet days.
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, wet day threshold (default "1 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Total precipitation amount
    """

def pr_max(pr, freq="YS"):
    """
    Maximum daily precipitation.
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Maximum daily precipitation
    """

def sdii(pr, thresh="1 mm/day", freq="YS"):
    """
    Simple daily intensity index (mean precipitation on wet days).
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, wet day threshold (default "1 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Simple daily intensity index
    """

Precipitation Frequency Indicators

Wet and dry day statistics for drought and flooding analysis.

def wet_days(pr, thresh="1 mm/day", freq="YS"):
    """
    Number of wet days (precipitation above threshold).
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, wet day threshold (default "1 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of wet days
    """

def dry_days(pr, thresh="1 mm/day", freq="YS"):
    """
    Number of dry days (precipitation below threshold).
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, dry day threshold (default "1 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of dry days
    """

def r10mm(pr, thresh="10 mm/day", freq="YS"):
    """
    Number of days with precipitation >= 10mm.
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, precipitation threshold (default "10 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of heavy precipitation days
    """

def r20mm(pr, thresh="20 mm/day", freq="YS"):
    """
    Number of days with precipitation >= 20mm.
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data  
    - thresh: str or float, precipitation threshold (default "20 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of very heavy precipitation days
    """

Consecutive Day Indicators

Drought and wet spell characterization for water resource management.

def cdd(pr, thresh="1 mm/day", freq="YS"):
    """
    Maximum number of consecutive dry days.
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, dry day threshold (default "1 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Maximum consecutive dry days
    """

def cwd(pr, thresh="1 mm/day", freq="YS"):
    """
    Maximum number of consecutive wet days.
    
    Parameters:
    - pr: xr.DataArray, daily precipitation data
    - thresh: str or float, wet day threshold (default "1 mm/day")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Maximum consecutive wet days
    """

Wind Indicators

Surface wind speed analysis for renewable energy and extreme weather applications.

def sfcwind_mean(sfcwind, freq="YS"):
    """
    Mean surface wind speed.
    
    Parameters:
    - sfcwind: xr.DataArray, daily surface wind speed
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Mean wind speed
    """

def sfcwind_max(sfcwind, freq="YS"):
    """
    Maximum surface wind speed.
    
    Parameters:
    - sfcwind: xr.DataArray, daily surface wind speed
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Maximum wind speed
    """

def windy_days(sfcwind, thresh="10 m/s", freq="YS"):
    """
    Number of windy days above wind speed threshold.
    
    Parameters:
    - sfcwind: xr.DataArray, daily surface wind speed
    - thresh: str or float, wind speed threshold (default "10 m/s")
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Number of windy days
    """

Growing Season Indicators

Agricultural season timing and length for crop management applications.

def growing_season_length(tas, thresh="5 degC", window=6, freq="YS"):
    """
    Length of growing season based on temperature threshold.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, temperature threshold (default "5 degC")
    - window: int, minimum window length for season detection (default 6)
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Growing season length in days
    """

def growing_season_start(tas, thresh="5 degC", window=6, freq="YS"):
    """
    Start date of growing season.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, temperature threshold (default "5 degC")
    - window: int, minimum window length (default 6)
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Growing season start day of year
    """

def growing_season_end(tas, thresh="5 degC", window=6, freq="YS"):
    """
    End date of growing season.
    
    Parameters:
    - tas: xr.DataArray, daily mean temperature
    - thresh: str or float, temperature threshold (default "5 degC")  
    - window: int, minimum window length (default 6)
    - freq: str, resampling frequency
    
    Returns:
    xr.DataArray: Growing season end day of year
    """

Usage Examples

Basic Temperature Analysis

import xarray as xr
import xclim.atmos as xca

# Load temperature data
ds = xr.tutorial.open_dataset("air_temperature") 
tasmax = ds.air.rename("tasmax")
tasmin = tasmax - 5  # Create tasmin for example

# Compute temperature indicators
tmax_mean = xca.tx_mean(tasmax, freq="YS")
summer_days = xca.summer_days(tasmax, thresh="25 degC", freq="YS")
frost_days = xca.frost_days(tasmin, thresh="0 degC", freq="YS")
growing_dd = xca.growing_degree_days(tasmax, thresh="4.0 degC", freq="YS")

Precipitation Analysis

# Load precipitation data
pr = ds.precip.rename("pr")  # assuming precip exists

# Compute precipitation indicators  
total_precip = xca.prcptot(pr, freq="YS")
heavy_days = xca.r10mm(pr, freq="YS") 
dry_spell = xca.cdd(pr, thresh="1 mm/day", freq="YS")
wet_spell = xca.cwd(pr, thresh="1 mm/day", freq="YS")
intensity = xca.sdii(pr, freq="YS")

Heat Wave Analysis

# Detect heat waves
heat_waves = xca.hot_spell_frequency(
    tasmax, 
    thresh_tasmax="30 degC",
    window=3,  # 3+ consecutive days
    freq="YS"
)

# Maximum heat wave length
max_heat_wave = xca.hot_spell_max_length(
    tasmax,
    thresh_tasmax="30 degC", 
    window=3,
    freq="YS"
)

Install with Tessl CLI

npx tessl i tessl/pypi-xclim

docs

atmospheric-indicators.md

conversion-indicators.md

core-computation.md

ensemble-analysis.md

fire-weather.md

index.md

land-indicators.md

sea-ice-indicators.md

spatial-analogs.md

statistical-downscaling.md

statistical-indicators.md

utilities.md

tile.json