Source code for huracanpy.tc._category

"""
Module with function to compute TC-specific categories
"""

import warnings

from metpy.units import units
from metpy.xarray import preprocess_and_wrap

from ..info import category
from .._metpy import dequantify_results, validate_units
from ._conventions import _thresholds


[docs] def saffir_simpson_category(wind, convention="Saffir-Simpson", wind_units="m s-1"): """ Function to determine the Saffir-Simpson Hurricane Scale (SSHS) category. Parameters ---------- wind : array_like 10-minutes averaged 10m wind in m/s convention : str wind_units : str, default="m s-1" The units of the input array if they are not already provided by the attributes Returns ------- array_like The category series. You can append it to your tracks by running tracks["sshs"] = get_sshs_cat(tracks.wind) """ return category( wind, bins=_thresholds[convention]["bins"], labels=_thresholds[convention]["labels"], variable_units=wind_units, )
[docs] @dequantify_results @preprocess_and_wrap(wrap_like="slp") def pressure_category(slp, convention="Klotzbach", slp_units=None): """ Determine the pressure category according to selected convention. Parameters ---------- slp : xarray.DataArray Minimum Sea-level Pressure series in hPa convention : str Name of the classification convention you want to use. * Klotzbach (default) * Simpson slp_units : str, default="hPa" The units of the input array if they are not already provided by the attributes Returns ------- xarray.DataArray The category series. You can append it to your tracks by running tracks["cat"] = get_pressure_cat(tracks.slp) """ # Don't automatically switch units to Pa if they have been explicitly set to Pa, # even if they seem wrong if (not isinstance(slp, units.Quantity) or slp.unitless) and slp_units is None: if slp.magnitude.min() > 10000: warnings.warn( "Caution, pressure are likely in Pa, they are being converted to hPa " "for categorization. In future specify the units explicitly by passing " 'slp_units="Pa" to this function or setting ' 'slp.attrs["units"] = "Pa"' ) slp_units = "Pa" else: slp_units = "hPa" slp = validate_units(slp, expected_units=slp_units) return category( slp, bins=_thresholds[convention]["bins"], labels=_thresholds[convention]["labels"], variable_units=slp_units, )