Changelog#

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

v1.4.0#

Added#

  • huracanpy.info.beaufort_category

  • huracanpy.calc.corral_radius

  • Load SuperBT from github file

  • Load IBTrACS from a netCDF file

  • Allow huracanpy.load to load non-ragged netCDF files. Essentially just calls xarray.load without modification

  • Add optional keywords to huracanpy.save to allow them to be passed to pandas to_csv or xarray to_netcdf

  • Add option to assess.match to only match tracks if the number of matching points needed are consecutive

  • assess.match now uses calc.distance for the separation distance, so can use geodesic distance (as well as haversine)

  • info.timestep gives the best guess of timestep given a set of tracks

  • Centring options for delta-like functions (delta, rate, azimuth, distance, translation_speed)

    • centering="centre" - Centred difference, NaN at the start and end of tracks

    • centering="adaptive" - Centered difference. Forward difference at the start of tracks. Backward difference at the end of tracks

  • Basin definitions from Knutson et al. (2020) ("Knutson2020")

  • Add spherical option to calc.density. Divides by area of gridboxes for method="histogram" and implements haversine weighting with scikit-learn for method="kde"

  • Add info.landfall_points which returns each point where a track crosses a coastline

  • New module convert and function convert.to_geodataframe to convert tracks to a geodataframe of points or linestrings (if track_id is given)

  • tc.pressure_wind_relation to get/apply the model for a pressure wind relation without having to use tc.pace. The return model is als wrapped so that the fitting and predicting of the model uses units.

  • plot.pressure_wind_relation

  • tc.saffir_simpson_category has the option to use thresholds for 10-minute or 1-minute sustained winds. Previously it was only 10-minute by default

  • Optional mean distance (instead of default maximum distance) when matching tracks with assess.match

Changed#

  • Speed up huracanpy.save for netCDF files

  • Remove NaN only variables when loading online IBTrACS data.

  • Add a cyclic point when using plot.density so that the dateline doesn’t show up as empty

  • huracanpy.calc.apex_vals always gives the first point when there a multiple minima/maxima with the same values. Consistent with the behaviour of argmin/argmax

Fixed#

  • -180 and 180 no longer treated as different longitudes. -180 is always used instead

  • When a point is exactly on the boundary of basin, give the first basin in the list rather than no basin

v1.3.1#

Fixed#

  • calc.density with crop=True will only crop the region outside of where there are tracks rather than all empty longitudes/latitudes

v1.3.0#

Added#

  • Include missing accessor functions

    • get_beta_drift and add_beta_drift

    • plot_fancyline

  • plot.tracks and plot.density can be placed on existing axes if they are explicitly passed to the function

  • Load tracks from the Imperial College Storm Model (IRIS)

  • huracanpy.infer_track_id to generate a track ID from unique combinations of variables. e.g. “year” and “storm number in year”.

    • Also add as an option to huracanpy.load

  • Can use huracanpy.load with a list of files

  • huracanpy.concat_tracks to concatenate tracks while keeping the track_id as a unique identifier

Changed#

  • Reduced unnecessary warning messages

  • Always use var_name as the accessor keyword for choosing a specific variable. Previously some functions used varname

  • track density kde function integrates to the total number of points being passed, so that numbers are reasonable.

Fixed#

  • Consistent use of track_id in delta calculations

  • Correctly convert units in category functions

  • Always do the beta_drift calculation with wind speed in metres per second

  • Allow requesting other time components than year/month/day/hour from add_time_components, consistent with info.time_components

  • get_azimuth was calling the wrong function

  • Correctly use wind in “knots” and pressure in “hPa” when using pre-calculated pressure-wind relations (“holland”, “z2021”) in tc.pace

  • Use a lower precision datetime64 when times are outside the default representable range

v1.2.0#

Added#

  • Modify huracanpy.load to load TRACK files with timesteps instead of dates (e.g. track_calendar=("1940-01-01", 6) to specify start time and timestep length in hours)

  • Add “Old HURDAT”/ECMWF track data reader

  • Add function to compute azimuth

  • Allow huracanpy.sel_id to be used to select multiple track IDs

Changed#

  • Update python versions supported (python 3.9-3.13, changed from 3.8-3.12)

v1.1.0#

Added#

  • Support for WiTRACK text files in huracanpy.load

  • Beta-drift computation (along with RMW support within distance function)

  • Full documentation incuding new examples

  • kde option for densities

  • Reference track set option for matching

  • Basin definitions from E. Sainsbury’s papers

Fixes#

  • Accessor was not behaving in the right way when the object was modified after the accessor’s first call;

  • Allow for ISO time to be called “isotime” in csv/parquet

v1.0.0#

Added#

  • xarray Dataset accessor (hrcn)

  • Extra keyword arguments to huracanpy.load

    • rename

    • units

    • baselon

  • sel_id function to select a single track by track_id from a Dataset but faster than using groupby

Changed#

  • Simplified module namespaces

    • utils.{module}.{function} -> info.{function}

    • diags.{module}.{function} -> calc.{function} or tc.{function}

    • subset.trackswhere -> trackswhere

  • Simplified function naming

    • plot_ prefix removed functions in plot module

  • Modified arguments to load

    • keyword tracker renamed source to reflect not all tracks are from trackers, e.g. IBTrACS or statistical-dynamical downscaling models

    • Use ibtracs_subset to determine whether the subset is online or not, removing ibtracs_online keyword

    • When filename is specified for an online IBTrACS dataset, save the downloaded data to that file, rather than using ibtracs_clean=False and a default filename

  • Use a single matching function assess.match for 2 or more datasets instead of assess.match_pair and assess.match_multiple

  • Remove get_ from functions in info. Instead this syntax is used to differentiate get_ and add_ functions in the hrcn accessor

  • Split info.get_land_or_ocean into is_land and is_ocean

  • Renamed tc.sshs_cat to tc.saffir_simpson_category and tc.pres_cat to tc.pressure_category

  • Improved support for calculations with units (using metpy style functions)

  • Updated IBTrACS data

Removed#

  • add_info argument from huracanpy.load

  • add_all_info function. Instead use add_ functions on hrcn accessor

  • get_time. Functionality already covered by pandas.to_datetime

Fixed#

  • huracanpy.info.season now works with cftime.datetime