Source code for huracanpy.diags.track_stats
"""
Module containing functions to compute track statistics
"""
[docs]
def duration(tracks):
"""
Compute the duration of each track
Parameters
----------
tracks : xarray.Dataset
Returns
-------
xarray.DataArray
Duration of each track
"""
duration = (
tracks.groupby("track_id")
.map(lambda x: x.time.max() - x.time.min())
.rename("duration")
)
duration = (duration * 1e-9 / 3600).astype(float)
duration.attrs["units"] = "h"
return duration
[docs]
def gen_vals(tracks):
"""
Shows the attributes for the genesis point of each track
Parameters
----------
tracks : xarray.DataSet
Returns
-------
xarray.Dataset
Dataset containing only genesis points, with track_id as index.
"""
return tracks.sortby("time").groupby("track_id").first()
[docs]
def extremum_vals(tracks, varname, stat="max"):
"""
Shows the attribute for the extremum point of each track
Parameters
----------
tracks : xarray.DataSet
var : str
The extremum variable
stat : str, optional
Type of extremum. Can be "min" or "max". The default is "max".
Raises
------
NotImplementedError
If another value than "min" and "max" is given to stat
Returns
-------
xarray.Dataset
Dataset containing only extremum points, with track_id as index.
"""
# tracks will be sorted along var and then the first line of each track_id will be used
# asc determines whether the sorting must be ascending (True) or descending (False)
if stat == "max":
asc = False
elif stat == "min":
asc = True
else:
raise NotImplementedError("stat not recognized. Please use one of {min, max}")
return tracks.sortby(varname, ascending=asc).groupby("track_id").first()