CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-metpy

Comprehensive Python library for meteorological data analysis and weather visualization.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

calculation-functions.mddocs/

Meteorological Calculations

MetPy provides over 150 calculation functions covering all aspects of atmospheric science including thermodynamics, dynamic meteorology, and kinematics. All functions handle units properly through Pint integration and work seamlessly with numpy arrays, xarray DataArrays, and scalar values.

Capabilities

Thermodynamic Functions

Temperature, moisture, and energy calculations fundamental to atmospheric thermodynamics.

def potential_temperature(pressure, temperature):
    """
    Calculate potential temperature.
    
    Parameters:
    - pressure: atmospheric pressure
    - temperature: air temperature
    
    Returns:
    Potential temperature
    """

def equivalent_potential_temperature(pressure, temperature, dewpoint):
    """
    Calculate equivalent potential temperature.
    
    Parameters:
    - pressure: atmospheric pressure  
    - temperature: air temperature
    - dewpoint: dewpoint temperature
    
    Returns:
    Equivalent potential temperature
    """

def virtual_temperature(temperature, mixing_ratio, molecular_weight_ratio=epsilon):
    """
    Calculate virtual temperature.
    
    Parameters:
    - temperature: air temperature
    - mixing_ratio: water vapor mixing ratio
    - molecular_weight_ratio: ratio of molecular weights (optional)
    
    Returns:
    Virtual temperature
    """

def wet_bulb_temperature(pressure, temperature, dewpoint):
    """
    Calculate wet bulb temperature.
    
    Parameters:
    - pressure: atmospheric pressure
    - temperature: air temperature  
    - dewpoint: dewpoint temperature
    
    Returns:
    Wet bulb temperature
    """

def heat_index(temperature, relative_humidity, mask_undefined=True):
    """
    Calculate heat index from temperature and relative humidity.
    
    Parameters:
    - temperature: air temperature
    - relative_humidity: relative humidity (0-100%)
    - mask_undefined: whether to mask undefined values
    
    Returns:
    Heat index
    """

def apparent_temperature(temperature, relative_humidity, wind_speed):
    """
    Calculate apparent temperature (Australian formula).
    
    Parameters:
    - temperature: air temperature
    - relative_humidity: relative humidity
    - wind_speed: wind speed
    
    Returns:
    Apparent temperature
    """

Moisture Calculations

Water vapor and humidity calculations for atmospheric moisture analysis.

def mixing_ratio(partial_press, total_press, molecular_weight_ratio=epsilon):
    """
    Calculate water vapor mixing ratio.
    
    Parameters:
    - partial_press: water vapor partial pressure
    - total_press: total atmospheric pressure
    - molecular_weight_ratio: ratio of molecular weights
    
    Returns:
    Mixing ratio (dimensionless)
    """

def saturation_mixing_ratio(total_press, temperature):
    """
    Calculate saturation mixing ratio.
    
    Parameters:
    - total_press: total atmospheric pressure
    - temperature: air temperature
    
    Returns:
    Saturation mixing ratio
    """

def relative_humidity_from_mixing_ratio(mixing_ratio, temperature, pressure):
    """
    Calculate relative humidity from mixing ratio.
    
    Parameters:
    - mixing_ratio: water vapor mixing ratio
    - temperature: air temperature
    - pressure: atmospheric pressure
    
    Returns:
    Relative humidity (0-1)
    """

def relative_humidity_from_dewpoint(temperature, dewpoint, *, phase='liquid'):
    """
    Calculate relative humidity from dewpoint.
    
    Parameters:
    - temperature: air temperature
    - dewpoint: dewpoint temperature
    - phase: thermodynamic phase ('liquid' or 'ice')
    
    Returns:
    Relative humidity (0-1)
    """

def dewpoint_from_relative_humidity(temperature, relative_humidity):
    """
    Calculate dewpoint from relative humidity.
    
    Parameters:
    - temperature: air temperature
    - relative_humidity: relative humidity (0-1)
    
    Returns:
    Dewpoint temperature
    """

def vapor_pressure(pressure, mixing_ratio):
    """
    Calculate water vapor pressure from mixing ratio.
    
    Parameters:
    - pressure: total atmospheric pressure
    - mixing_ratio: water vapor mixing ratio
    
    Returns:
    Water vapor pressure
    """

def saturation_vapor_pressure(temperature):
    """
    Calculate saturation vapor pressure.
    
    Parameters:
    - temperature: air temperature
    
    Returns:
    Saturation vapor pressure
    """

def specific_humidity_from_mixing_ratio(mixing_ratio):
    """
    Calculate specific humidity from mixing ratio.
    
    Parameters:
    - mixing_ratio: water vapor mixing ratio
    
    Returns:
    Specific humidity (dimensionless)
    """

def mixing_ratio_from_specific_humidity(specific_humidity):
    """
    Calculate mixing ratio from specific humidity.
    
    Parameters:
    - specific_humidity: water vapor specific humidity
    
    Returns:
    Mixing ratio (dimensionless)
    """

def specific_humidity_from_dewpoint(pressure, dewpoint, phase='liquid'):
    """
    Calculate specific humidity from dewpoint and pressure.
    
    Parameters:
    - pressure: atmospheric pressure
    - dewpoint: dewpoint temperature
    - phase: thermodynamic phase ('liquid' or 'ice')
    
    Returns:
    Specific humidity
    """

def precipitable_water(pressure, dewpoint, bottom=None, top=None):
    """
    Calculate precipitable water through atmospheric column.
    
    Parameters:
    - pressure: pressure profile
    - dewpoint: dewpoint temperature profile
    - bottom: bottom pressure level (optional)
    - top: top pressure level (optional)
    
    Returns:
    Precipitable water amount
    """

Pressure and Altitude

Atmospheric pressure and height relationship calculations.

def height_to_pressure_std(height):
    """
    Convert height to pressure using standard atmosphere.
    
    Parameters:
    - height: height above sea level
    
    Returns:
    Atmospheric pressure
    """

def pressure_to_height_std(pressure):
    """
    Convert pressure to height using standard atmosphere.
    
    Parameters:
    - pressure: atmospheric pressure
    
    Returns:
    Height above sea level
    """

def altimeter_to_station_pressure(altimeter_value, height, temperature):
    """
    Convert altimeter setting to station pressure.
    
    Parameters:
    - altimeter_value: altimeter setting
    - height: station elevation
    - temperature: station temperature
    
    Returns:
    Station pressure
    """

def station_to_altimeter_pressure(station_pressure, height, temperature):
    """
    Convert station pressure to altimeter setting.
    
    Parameters:
    - station_pressure: station pressure  
    - height: station elevation
    - temperature: station temperature
    
    Returns:
    Altimeter setting
    """

def geopotential_to_height(geopotential):
    """
    Convert geopotential to geometric height.
    
    Parameters:
    - geopotential: geopotential
    
    Returns:
    Geometric height
    """

Atmospheric Stability

Stability indices and parcel theory calculations.

def lifted_index(pressure, temperature, parcel_profile):
    """
    Calculate lifted index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - parcel_profile: parcel temperature profile
    
    Returns:
    Lifted index
    """

def cape_cin(pressure, temperature, dewpoint, parcel_profile, which_lfc='bottom', which_el='top'):
    """
    Calculate CAPE and CIN (Convective Available Potential Energy and Convective Inhibition).
    
    Parameters:
    - pressure: pressure profile
    - temperature: temperature profile  
    - dewpoint: dewpoint profile
    - parcel_profile: parcel temperature profile
    - which_lfc: which LFC to use when multiple exist
    - which_el: which EL to use when multiple exist
    
    Returns:
    Tuple of (CAPE, CIN) values
    """

def convective_inhibition(pressure, temperature, dewpoint, parcel_profile):
    """
    Calculate CIN (Convective Inhibition).
    
    Parameters:
    - pressure: pressure profile
    - temperature: temperature profile
    - dewpoint: dewpoint profile  
    - parcel_profile: parcel temperature profile
    
    Returns:
    CIN value
    """

def surface_based_cape_cin(pressure, temperature, dewpoint):
    """
    Calculate surface-based CAPE and CIN.
    
    Parameters:
    - pressure: atmospheric pressure profile (high to low pressure)
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    
    Returns:
    Tuple of (CAPE, CIN) values for surface-based parcel
    """

def most_unstable_cape_cin(pressure, temperature, dewpoint, **kwargs):
    """
    Calculate most unstable CAPE and CIN.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    - **kwargs: keyword arguments for parcel selection
    
    Returns:
    Tuple of (CAPE, CIN) values for most unstable parcel
    """

def mixed_layer_cape_cin(pressure, temperature, dewpoint, **kwargs):
    """
    Calculate mixed-layer CAPE and CIN.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    - **kwargs: keyword arguments for mixed layer (e.g., depth)
    
    Returns:
    Tuple of (CAPE, CIN) values for mixed-layer parcel
    """

def downdraft_cape(pressure, temperature, dewpoint):
    """
    Calculate Downdraft CAPE (DCAPE).
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    
    Returns:
    Downdraft CAPE value (negative buoyancy energy)
    """

def level_of_free_convection(pressure, temperature, dewpoint, parcel_temperature_profile=None):
    """
    Calculate Level of Free Convection (LFC).
    
    Parameters:
    - pressure: pressure profile
    - temperature: environmental temperature
    - dewpoint: dewpoint temperature
    - parcel_temperature_profile: parcel temperature profile
    
    Returns:
    LFC pressure and temperature
    """

def lcl(pressure, temperature, dewpoint, max_iters=50, eps=1e-5):
    """
    Calculate Lifting Condensation Level (LCL).
    
    Parameters:
    - pressure: starting pressure
    - temperature: starting temperature
    - dewpoint: starting dewpoint
    - max_iters: maximum iterations
    - eps: convergence criterion
    
    Returns:
    LCL pressure and temperature
    """

def parcel_profile(pressure, temperature, dewpoint):
    """
    Calculate parcel temperature profile.
    
    Parameters:
    - pressure: pressure levels
    - temperature: starting temperature
    - dewpoint: starting dewpoint
    
    Returns:
    Parcel temperature at each pressure level
    """

def mixed_parcel(pressure, temperature, dewpoint, parcel_start_pressure=None, height=None, bottom=None, depth=None):
    """
    Calculate mixed parcel properties.
    
    Parameters:
    - pressure: pressure profile
    - temperature: temperature profile
    - dewpoint: dewpoint profile
    - parcel_start_pressure: starting pressure for parcel
    - height: height profile
    - bottom: bottom of mixed layer
    - depth: depth of mixed layer
    
    Returns:
    Mixed parcel pressure, temperature, dewpoint
    """

def el(pressure, temperature, dewpoint, parcel_temperature_profile=None, which='top'):
    """
    Calculate the equilibrium level (EL).
    
    Parameters:
    - pressure: atmospheric pressure profile (high to low pressure)
    - temperature: environmental temperature at pressure levels
    - dewpoint: dewpoint temperature at pressure levels
    - parcel_temperature_profile: parcel temperature profile (optional)
    - which: which EL to return when multiple exist ('top', 'bottom')
    
    Returns:
    EL pressure and temperature
    """

def ccl(pressure, temperature, dewpoint, height=None, mixed_layer_depth=None, which='top'):
    """
    Calculate the Convective Condensation Level (CCL).
    
    Parameters:
    - pressure: atmospheric pressure profile (high to low pressure)
    - temperature: environmental temperature at pressure levels
    - dewpoint: dewpoint temperature at pressure levels
    - height: height profile (optional)
    - mixed_layer_depth: depth of mixed layer for averaging (optional)
    - which: which CCL to return when multiple exist ('top', 'bottom')
    
    Returns:
    CCL pressure and temperature
    """

def most_unstable_parcel(pressure, temperature, dewpoint, height=None, bottom=None, depth=None):
    """
    Calculate the most unstable parcel in a layer.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile  
    - dewpoint: dewpoint temperature profile
    - height: height profile (optional)
    - bottom: bottom of layer to search (optional)
    - depth: depth of layer to search (optional)
    
    Returns:
    Most unstable parcel pressure, temperature, dewpoint
    """

Additional Stability Indices

Classical stability indices for severe weather forecasting and convective analysis.

def k_index(pressure, temperature, dewpoint, vertical_dim=0):
    """
    Calculate K Index stability index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    - vertical_dim: vertical dimension index
    
    Returns:
    K Index value
    """

def showalter_index(pressure, temperature, dewpoint):
    """
    Calculate Showalter Index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    
    Returns:
    Showalter Index value
    """

def total_totals_index(pressure, temperature, dewpoint, vertical_dim=0):
    """
    Calculate Total Totals Index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    - vertical_dim: vertical dimension index
    
    Returns:
    Total Totals Index value
    """

def vertical_totals(pressure, temperature, vertical_dim=0):
    """
    Calculate Vertical Totals Index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - vertical_dim: vertical dimension index
    
    Returns:
    Vertical Totals value
    """

def cross_totals(pressure, temperature, dewpoint, vertical_dim=0):
    """
    Calculate Cross Totals Index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    - vertical_dim: vertical dimension index
    
    Returns:
    Cross Totals value
    """

def sweat_index(pressure, temperature, dewpoint, speed, direction, vertical_dim=0):
    """
    Calculate SWEAT (Severe Weather Threat) Index.
    
    Parameters:
    - pressure: atmospheric pressure profile
    - temperature: environmental temperature profile
    - dewpoint: dewpoint temperature profile
    - speed: wind speed profile
    - direction: wind direction profile
    - vertical_dim: vertical dimension index
    
    Returns:
    SWEAT Index value
    """

Dynamic Meteorology

Wind analysis, vorticity, and atmospheric dynamics calculations.

def wind_direction(u, v, convention='from'):
    """
    Calculate wind direction from u and v components.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - convention: 'from' or 'to' direction convention
    
    Returns:
    Wind direction in degrees
    """

def wind_speed(u, v):
    """
    Calculate wind speed from u and v components.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    
    Returns:
    Wind speed
    """

def wind_components(speed, direction):
    """
    Calculate u and v wind components from speed and direction.
    
    Parameters:
    - speed: wind speed
    - direction: wind direction
    
    Returns:
    u and v components
    """

def geostrophic_wind(geopotential, f=None, dx=None, dy=None):
    """
    Calculate geostrophic wind from geopotential field.
    
    Parameters:
    - geopotential: geopotential field
    - f: coriolis parameter
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    
    Returns:
    u and v components of geostrophic wind
    """

def ageostrophic_wind(geopotential, u, v, dx=None, dy=None, f=None):
    """
    Calculate ageostrophic wind.
    
    Parameters:
    - geopotential: geopotential field
    - u: u-component of observed wind
    - v: v-component of observed wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - f: coriolis parameter
    
    Returns:
    u and v components of ageostrophic wind
    """

def vorticity(u, v, dx=None, dy=None, dim_order='yx'):
    """
    Calculate relative vorticity.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind  
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - dim_order: dimension order
    
    Returns:
    Relative vorticity
    """

def absolute_vorticity(u, v, dx=None, dy=None, y_dim=-2, latitude=None, dim_order='yx'):
    """
    Calculate absolute vorticity.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - y_dim: y dimension index
    - latitude: latitude values
    - dim_order: dimension order
    
    Returns:
    Absolute vorticity
    """

def advection(scalar, u, v, dx=None, dy=None, dim_order='yx'):
    """
    Calculate advection of a scalar field.
    
    Parameters:
    - scalar: scalar field to advect
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - dim_order: dimension order
    
    Returns:
    Advection of scalar field
    """

def q_vector(geopotential, temperature, pressure, u, v):
    """
    Calculate Q-vectors.
    
    Parameters:
    - geopotential: geopotential field
    - temperature: temperature field
    - pressure: pressure level
    - u: u-component of wind
    - v: v-component of wind
    
    Returns:
    Q-vector components
    """

def frontogenesis(potential_temperature, u, v, dx=None, dy=None, dim_order='yx'):
    """
    Calculate frontogenesis.
    
    Parameters:
    - potential_temperature: potential temperature field
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - dim_order: dimension order
    
    Returns:
    Frontogenesis
    """

def divergence(u, v, dx=None, dy=None, x_dim=-1, y_dim=-2, parallel_scale=None, meridional_scale=None):
    """
    Calculate horizontal divergence of wind field.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - x_dim: x dimension index
    - y_dim: y dimension index
    - parallel_scale: parallel scale factor
    - meridional_scale: meridional scale factor
    
    Returns:
    Horizontal divergence
    """

def shearing_deformation(u, v, dx=None, dy=None, x_dim=-1, y_dim=-2, parallel_scale=None, meridional_scale=None):
    """
    Calculate shearing deformation of wind field.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - x_dim: x dimension index
    - y_dim: y dimension index
    - parallel_scale: parallel scale factor
    - meridional_scale: meridional scale factor
    
    Returns:
    Shearing deformation
    """

def stretching_deformation(u, v, dx=None, dy=None, x_dim=-1, y_dim=-2, parallel_scale=None, meridional_scale=None):
    """
    Calculate stretching deformation of wind field.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - x_dim: x dimension index
    - y_dim: y dimension index
    - parallel_scale: parallel scale factor
    - meridional_scale: meridional scale factor
    
    Returns:
    Stretching deformation
    """

def total_deformation(u, v, dx=None, dy=None, x_dim=-1, y_dim=-2, parallel_scale=None, meridional_scale=None):
    """
    Calculate total deformation of wind field.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - dx: grid spacing in x direction
    - dy: grid spacing in y direction
    - x_dim: x dimension index
    - y_dim: y dimension index
    - parallel_scale: parallel scale factor
    - meridional_scale: meridional scale factor
    
    Returns:
    Total deformation magnitude
    """

Severe Weather Indices

Specialized calculations for severe weather forecasting.

def bulk_shear(pressure, u, v, height=None, bottom=None, depth=None):
    """
    Calculate bulk wind shear.
    
    Parameters:
    - pressure: pressure profile
    - u: u-component of wind profile
    - v: v-component of wind profile
    - height: height profile
    - bottom: bottom of layer
    - depth: depth of layer
    
    Returns:
    Bulk shear magnitude and components
    """

def storm_relative_helicity(u, v, height, depth, bottom=None, storm_u=None, storm_v=None):
    """
    Calculate storm-relative helicity.
    
    Parameters:
    - u: u-component of wind
    - v: v-component of wind
    - height: height levels
    - depth: integration depth
    - bottom: bottom of integration layer
    - storm_u: storm motion u-component
    - storm_v: storm motion v-component
    
    Returns:
    Storm-relative helicity
    """

def supercell_composite_parameter(mucape, effective_shear, effective_srh):
    """
    Calculate Supercell Composite Parameter.
    
    Parameters:
    - mucape: most unstable CAPE
    - effective_shear: effective bulk shear
    - effective_srh: effective storm-relative helicity
    
    Returns:
    Supercell composite parameter
    """

def significant_tornado_parameter(sbcape, surface_based_lcl_height, bulk_shear_0to6, surface_based_srh_0to1km):
    """
    Calculate Significant Tornado Parameter.
    
    Parameters:
    - sbcape: surface-based CAPE
    - surface_based_lcl_height: surface-based LCL height
    - bulk_shear_0to6: 0-6 km bulk shear
    - surface_based_srh_0to1km: 0-1 km storm-relative helicity
    
    Returns:
    Significant tornado parameter
    """

Exception Classes

class InvalidSoundingError(ValueError):
    """Raised when sounding data is invalid or insufficient."""

class DataDimensionalityError(ValueError):
    """Raised when data has incorrect dimensionality for calculation."""

docs

calculation-functions.md

data-io.md

index.md

interpolation.md

physical-constants.md

plotting.md

xarray-integration.md

tile.json