Source code for huracanpy.tc._category
"""
Module with function to compute TC-specific categories
"""
import warnings
import pint
from metpy.xarray import preprocess_and_wrap
from ..info import category
from .._metpy import dequantify_results
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="hPa"):
"""
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)
"""
if not isinstance(slp, pint.Quantity) or slp.unitless:
if slp.min() > 10000 and slp_units == "hPa":
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 = slp / 100
return category(
slp,
bins=_thresholds[convention]["bins"],
labels=_thresholds[convention]["labels"],
variable_units=slp_units,
)