From b06cc974df7c1d391903d53334bfe5b11e95e96c Mon Sep 17 00:00:00 2001 From: William Pringle Date: Tue, 8 Jun 2021 16:50:57 -0400 Subject: [PATCH 01/29] add python script for ensemble vortex generation --- .../perturbation/make_storm_ensemble.py | 742 ++++++++++++++++++ 1 file changed, 742 insertions(+) create mode 100644 ensembleperturbation/perturbation/make_storm_ensemble.py diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py new file mode 100644 index 00000000..1629171f --- /dev/null +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -0,0 +1,742 @@ +#! /usr/bin/env python3 +""" +Script to: +(1) extract an ATCF best track dataset; +(2) randomly perturb different parameters (e.g., intensity, +size, track coordinates) to generate an ensemble; and +(3) write out each ensemble member to the fort.22 ATCF +tropical cyclone vortex format file. + +Variables that can be perturbed: +- "max_sustained_wind_speed" (Vmax) is made weaker/stronger + based on random gaussian distribution with sigma scaled by + historical mean absolute errors. central_pressure (pc) + is then changed proportionally based on Holland B + +- "radius_of_maximum_winds" (Rmax) is made small/larger + based on random number in a range bounded by the 15th and + 85th percentile CDF of historical forecast errors. + +- "along_track" variable is used to offset the coordinate of + the tropical cyclone center at each forecast time forward or + backward along the given track based on a random gaussian + distribution with sigma scaled by historical mean absolute + errors. + +- "cross_track" variable is used to offset the coordinate of + the tropical cyclone center at each forecast time a certain + perpendicular distance from the given track based on a + random gaussian distribution with sigma scaled by historical + mean absolute errors. + +By William Pringle, Argonne National Laboratory, Mar-May 2021 + Zach Burnett, NOS/NOAA + Saeed Moghimi, NOS/NOAA +""" +from argparse import ArgumentParser +from copy import deepcopy +from datetime import datetime, timedelta +from math import exp, inf, sqrt +from os import PathLike +from pathlib import Path +from random import gauss, random + +from adcircpy.forcing.winds.best_track import BestTrackForcing +from dateutil.parser import parse as parse_date +from numpy import append, floor, insert, interp, sign, transpose +from pandas import DataFrame +from pyproj import Proj +from shapely.geometry import LineString + + +def main( + number_of_perturbations: int, + variable_list: [str], + storm_code: str, + start_date: datetime, + end_date: datetime, + output_directory: PathLike = None, +): + """ + Write perturbed tracks to `fort.22` + + :param number_of_perturbations: number of perturbations to create + :param variable_list: list of variable names, any combination of `["max_sustained_wind_speed", "radius_of_maximum_winds", "along_track", "cross_track"]` + :param storm_code: NHC storm code, for instance `al062018` + :param start_date: start time of ensemble + :param end_date: end time of ensemble + :param output_directory: directory to which to write + """ + + if output_directory is None: + output_directory = Path.cwd() + elif not isinstance(output_directory, Path): + output_directory = Path(output_directory) + + # getting best track + best_track = BestTrackForcing( + storm_code, + start_date=start_date, + end_date=end_date, + ) + + # write out original fort.22 + best_track.write( + output_directory / 'original.22', + overwrite=True, + ) + + # Computing Holland B and validation times from BT + holland_B = compute_Holland_B(best_track) + storm_VT = compute_VT_hours(best_track) + + # Get the initial intensity and size + storm_strength = intensity_class( + compute_initial(best_track, vmax_variable), + ) + storm_size = size_class(compute_initial(best_track, rmw_var)) + + print(f'Initial storm strength: {storm_strength}') + print(f'Initial storm size: {storm_size}') + + # extracting original dataframe + df_original = best_track.df + + # modifying the central pressure while subsequently changing + # Vmax using the same Holland B parameter, + # writing each to a new fort.22 + for variable in variable_list: + print(f'writing perturbations for "{variable}"') + # print(min(df_original[var])) + # print(max(df_original[var])) + + # Make the random pertubations based on the historical forecast errors + # Interpolate from the given VT to the storm_VT + # print(forecast_errors[var][Initial_Vmax]) + if variable == 'radius_of_maximum_winds': + storm_classification = storm_size + else: + storm_classification = storm_strength + + xp = forecast_errors[variable][storm_classification].index + yp = forecast_errors[variable][storm_classification].values + base_errors = [ + interp(storm_VT, xp, yp[:, ncol]) + for ncol in range(len(yp[0])) + ] + + # print(base_errors) + + for perturbation_index in range(1, number_of_perturbations + 1): + # make a deepcopy to preserve the original dataframe + df_modified = deepcopy(df_original) + + # get the random perturbation sample + if random_variable_type[variable] == 'gauss': + alpha = gauss(0, 1) / 0.7979 + # mean_abs_error = 0.7979 * sigma + + print(f'Random gaussian variable = {alpha}') + + # add the error to the variable with bounds to some physical constraints + df_modified = perturb_bound( + df_modified, + perturbation=base_errors[0] * alpha, + variable=variable, + validation_time=storm_VT, + ) + elif random_variable_type[variable] == 'range': + alpha = random() + + print(f'Random number in [0,1) = {alpha}') + + # subtract the error from the variable with physical constraint bounds + df_modified = perturb_bound( + df_modified, + perturbation=-(base_errors[0] * (1.0 - alpha) + + base_errors[1] * alpha), + variable=variable, + ) + + if variable == vmax_variable: + # In case of Vmax need to change the central pressure + # incongruence with it (obeying Holland B relationship) + df_modified[pc_var] = compute_pc_from_Vmax( + df_modified, + B=holland_B, + ) + + # reset the dataframe + best_track._df = df_modified + + # write out the modified fort.22 + best_track.write( + output_directory / f'{variable}_{perturbation_index}.22', + overwrite=True, + ) + + +################################################################ +## Sub functions and dictionaries... +################################################################ +# get the validation time of storm in hours +def compute_VT_hours(best_track: BestTrackForcing) -> float: + return (best_track.datetime - best_track.start_date) / \ + timedelta(hours=1) + + +# the initial value of the input variable var (Vmax or Rmax) +def compute_initial(best_track: BestTrackForcing, var: str) -> float: + return best_track.df[var].iloc[0] + + +# some constants +rho_air = 1.15 # density of air [kg/m3] +Pb = 1013.0 # background pressure [mbar] +kts2ms = 0.514444444 # kts to m/s +mbar2pa = 100 # mbar to Pa +pa2mbar = 0.01 # Pa to mbar +nm2sm = 1.150781 # nautical miles to statute miles +sm2nm = 0.868976 # statute miles to nautical miles +e1 = exp(1.0) # e +# variable names +pc_var = 'central_pressure' +pb_var = 'background_pressure' +vmax_variable = 'max_sustained_wind_speed' +rmw_var = 'radius_of_maximum_winds' + + +# Compute Holland B at each time snap +def compute_Holland_B(best_track: BestTrackForcing) -> float: + df_test = best_track.df + Vmax = df_test[vmax_variable] * kts2ms + DelP = (df_test[pb_var] - df_test[pc_var]) * mbar2pa + B = Vmax * Vmax * rho_air * e1 / DelP + return B + + +# Compute central pressure from Vmax based on Holland B +def compute_pc_from_Vmax(dataframe: DataFrame, B: float) -> float: + Vmax = dataframe[vmax_variable] * kts2ms + DelP = Vmax * Vmax * rho_air * e1 / B + pc = dataframe[pb_var] - DelP * pa2mbar + return pc + + +# random variable types (Gaussian or just a range) +random_variable_type = { + 'max_sustained_wind_speed': 'gauss', + 'radius_of_maximum_winds': 'range', + 'cross_track': 'gauss', + 'along_track': 'gauss', +} +# physical bounds of different variables +lower_bound = { + 'max_sustained_wind_speed': 25, # [kt] + 'radius_of_maximum_winds': 5, # [nm] + 'cross_track': -inf, + 'along_track': -inf, +} +upper_bound = { + 'max_sustained_wind_speed': 165, # [kt] + 'radius_of_maximum_winds': 200, # [nm] + 'cross_track': +inf, + 'along_track': +inf, +} + + +# perturbing the variable with physical bounds +def perturb_bound( + dataframe: DataFrame, + perturbation: float, + variable: str, + validation_time: float = None, +): + if variable == 'along_track': + dataframe = interpolate_along_track( + dataframe, + VT=validation_time.values, + along_track_errors=perturbation, + ) + elif variable == 'cross_track': + dataframe = offset_track( + dataframe, + VT=validation_time.values, + cross_track_errors=perturbation, + ) + else: + test_list = dataframe[variable] + perturbation + LB = lower_bound[variable] + UB = upper_bound[variable] + bounded_result = [min(UB, max(ele, LB)) for ele in test_list] + dataframe[variable] = bounded_result + return dataframe + + +# Category for Vmax based intensity +def intensity_class(vmax: float) -> str: + if vmax < 50: + return '<50kt' # weak + elif vmax > 95: + return '>95kt' # strong + else: + return '50-95kt' # medium + + +# Category for Rmax based size +def size_class(rmw_nm: float) -> str: + # convert from nautical miles to statute miles + rmw_sm = rmw_nm * nm2sm + if rmw_sm < 15: + return '<15sm' # very small + elif rmw_sm < 25: + return '15-25sm' # small + elif rmw_sm < 35: + return '25-35sm' # medium + elif rmw_sm < 45: + return '35-45sm' # large + else: + return '>45sm' # very large + + +# Index of absolute errors (forecast times [hrs)] +VT = [0, 12, 24, 36, 48, 72, 96, 120] # no 60-hr data +VTR = [0, 12, 24, 36, 48, 60, 72, 96, 120] # has 60-hr data (for Rmax) +# Mean absolute Vmax errors based on initial intensity +Vmax_weak_errors = DataFrame( + data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], + index=VT, + columns=['mean error [kt]'], +) +Vmax_medium_errors = DataFrame( + data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], + index=VT, + columns=['mean error [kt]'], +) +Vmax_strong_errors = DataFrame( + data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], + index=VT, + columns=['mean error [kt]'], +) +# RMW errors bound based on initial size +RMW_vsmall_errors = DataFrame( + data=sm2nm * transpose( + [ + [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, + -46.80, -52.68], + [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], + ] + ), + index=VTR, + columns=['minimum error [nm]', 'maximum error [nm]'], +) +RMW_small_errors = DataFrame( + data=sm2nm * transpose( + [ + [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, + -24.24, -28.30], + [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], + ] + ), + index=VTR, + columns=['minimum error [nm]', 'maximum error [nm]'], +) +RMW_medium_errors = DataFrame( + data=sm2nm * transpose( + [ + [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, + -7.40], + [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, + 16.70], + ] + ), + index=VTR, + columns=['minimum error [nm]', 'maximum error [nm]'], +) +RMW_large_errors = DataFrame( + data=sm2nm * transpose( + [ + [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, + 2.59], + [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, + 28.30], + ] + ), + index=VTR, + columns=['minimum error [nm]', 'maximum error [nm]'], +) +RMW_vlarge_errors = DataFrame( + data=sm2nm * transpose( + [ + [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, + 7.19], + [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, + 35.93], + ] + ), + index=VTR, + columns=['minimum error [nm]', 'maximum error [nm]'], +) +# Mean absolute cross-track errors based on initial intensity +ct_weak_errors = DataFrame( + data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], + index=VT, + columns=['mean error [nm]'], +) +ct_medium_errors = DataFrame( + data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], + index=VT, + columns=['mean error [nm]'], +) +ct_strong_errors = DataFrame( + data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], + index=VT, + columns=['mean error [nm]'], +) +# Mean absolute along-track errors based on initial intensity +at_weak_errors = DataFrame( + data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], + index=VT, + columns=['mean error [nm]'], +) +at_medium_errors = DataFrame( + data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], + index=VT, + columns=['mean error [nm]'], +) +at_strong_errors = DataFrame( + data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], + index=VT, + columns=['mean error [nm]'], +) +# Dictionary of historical forecast errors by variable +forecast_errors = { + 'max_sustained_wind_speed': { + '<50kt': Vmax_weak_errors, + '50-95kt': Vmax_medium_errors, + '>95kt': Vmax_strong_errors, + }, + 'radius_of_maximum_winds': { + '<15sm': RMW_vsmall_errors, + '15-25sm': RMW_small_errors, + '25-35sm': RMW_medium_errors, + '35-45sm': RMW_large_errors, + '>45sm': RMW_vlarge_errors, + }, + 'cross_track': { + '<50kt': ct_weak_errors, + '50-95kt': ct_medium_errors, + '>95kt': ct_strong_errors, + }, + 'along_track': { + '<50kt': at_weak_errors, + '50-95kt': at_medium_errors, + '>95kt': at_strong_errors, + }, +} + + +def utm_proj_from_lon(lon_mean: float) -> Proj: + """ + utm_from_lon - UTM zone for a longitude + Not right for some polar regions (Norway, Svalbard, Antartica) + :param lon_mean: longitude + + :usage x_utm,y_utm = myProj(lon, lat , inverse=False) + :usage lon, lat = myProj(xutm, yutm, inverse=True) + """ + + zone = floor((lon_mean + 180) / 6) + 1 + # print("Zone is " + str(zone)) + + return Proj( + f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs' + ) + + +def interpolate_along_track( + df_, + VT: [float], + along_track_errors: [float], +) -> DataFrame: + """ + interpolate_along_track(df_,VT,along_track_errros) + Offsets points by a given error/distance by interpolating along the track + + :param df_: ATCF dataframe containing track info + :param VT: the forecast validation times [hours] + :param along_track_errors: along-track errors for each forecast time (VT) + :return: updated ATCF dataframe with different longitude latitude locations based on interpolated errors along track + """ + + # Parameters + interp_pts = 5 # maximum number of pts along line for each interpolation + nm2m = 1852 # nautical miles to meters + + # Get the coordinates of the track + track_coords = df_[['longitude', 'latitude']].values.tolist() + + # Extrapolating the track for negative errors at beginning and positive errors at end of track + for vt_index in range(0, len(VT)): + if VT[vt_index] == 0 and VT[vt_index + 1] > 0: + # append point to the beginning for going in negative direction + p1 = track_coords[vt_index] + p2 = track_coords[vt_index + 1] + ps = [ + p1[0] - interp_pts * (p2[0] - p1[0]), + p1[1] - interp_pts * (p2[1] - p1[1]), + ] + if VT[vt_index] == VT[-1] and VT[vt_index - 1] < VT[-1]: + # append point to the end going in positive direction + p1 = track_coords[vt_index - 1] + p2 = track_coords[vt_index] + pe = [ + p1[0] + interp_pts * (p2[0] - p1[0]), + p1[1] + interp_pts * (p2[1] - p1[1]), + ] + + track_coords.insert(0, ps) + track_coords.append(pe) + + # adding pseudo-VT times to the ends + VT = insert(VT, 0, VT[0] - 6) + VT = append(VT, VT[-1] + 6) + + # print(track_coords) + # print(VT) + # print(along_track_errors) + + # loop over all coordinates + lon_new = list() + lat_new = list() + for track_coord_index in range(1, len(track_coords) - 1): + # get the utm projection for middle longitude + myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) + along_error = along_track_errors[track_coord_index - 1] * nm2m + along_sign = int(sign(along_error)) + + pts = list() + ind = track_coord_index + while len(pts) < interp_pts: + if ind < 0 or ind > len(track_coords) - 1: + break # reached end of line + if ind == track_coord_index or VT[ind] != VT[ + ind - along_sign]: + # get the x,y utm coordinate for this line string + x_utm, y_utm = myProj( + track_coords[ind][0], track_coords[ind][1], + inverse=False + ) + pts.append((x_utm, y_utm)) + ind = ind + along_sign + + # make the temporary line segment + line_segment = LineString([ + pts[pp] for pp in range(0, len(pts)) + ]) + + # interpolate a distance "along_error" along the line + pnew = line_segment.interpolate(abs(along_error)) + + # get back lat-lon + lon, lat = myProj( + pnew.coords[0][0], + pnew.coords[0][1], + inverse=True, + ) + + # print(track_coords[idx-1:idx+2]) + # print(along_error/111e3) + # print(new_coords]) + + lon_new.append(lon) + lat_new.append(lat) + + # print([lon_new, lat_new]) + + df_['longitude'] = lon_new + df_['latitude'] = lat_new + + return df_ + + +def get_offset( + x1: float, + y1: float, + x2: float, + y2: float, + d: float, +) -> (float, float): + """ + get_offset(x1,y1,x2,y2,d) + - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d + """ + if x1 == x2: + dx = d + dy = 0 + elif y1 == y2: + dy = d + dx = 0 + else: + # if z is the distance to your parallel curve, + # then your delta-x and delta-y calculations are: + # z**2 = x**2 + y**2 + # y = pslope * x + # z**2 = x**2 + (pslope * x)**2 + # z**2 = x**2 + pslope**2 * x**2 + # z**2 = (1 + pslope**2) * x**2 + # z**2 / (1 + pslope**2) = x**2 + # z / (1 + pslope**2)**0.5 = x + + # tangential slope approximation + slope = (y2 - y1) / (x2 - x1) + + # normal slope + pslope = -1 / slope # (might be 1/slope depending on direction of travel) + psign = ((pslope > 0) == (x1 > x2)) * 2 - 1 + + dx = psign * d / sqrt(1 + pslope ** 2) + dy = pslope * dx + + return dx, dy + + +def offset_track( + df_, + VT: [float], + cross_track_errors: [float], +) -> DataFrame: + """ + offset_track(df_,VT,cross_track_errors) + - Offsets points by a given perpendicular error/distance from the original track + + :param df_: ATCF dataframe containing track info + :param VT: the forecast validation times [hours] + :param cross_track_errors: cross-track errors [nm] for each forecast time (VT) + :return: updated ATCF dataframe with different longitude latitude locations based on perpendicular offsets set by the cross_track_errors + """ + + # Parameters + nm2m = 1852 # nautical miles to meters + + # Get the coordinates of the track + track_coords = df_[['longitude', 'latitude']].values.tolist() + + # loop over all coordinates + lon_new = list() + lat_new = list() + for track_coord_index in range(0, len(track_coords)): + # get the current cross_track_error + cross_error = cross_track_errors[track_coord_index] * nm2m + + # get the utm projection for the reference coordinate + myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) + + # get the location of the original reference coordinate + x_ref, y_ref = myProj( + track_coords[track_coord_index][0], + track_coords[track_coord_index][1], + inverse=False, + ) + + # get the index of the previous forecasted coordinate + idx_p = track_coord_index - 1 + while idx_p >= 0: + if VT[idx_p] < VT[track_coord_index]: + break + idx_p = idx_p - 1 + if idx_p < 0: # beginning of track + idx_p = track_coord_index + + # get previous projected coordinate + x_p, y_p = myProj( + track_coords[idx_p][0], + track_coords[idx_p][1], + inverse=False, + ) + + # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate + dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) + + # get the index of the next forecasted coordinate + idx_n = track_coord_index + 1 + while idx_n < len(track_coords): + if VT[idx_n] > VT[track_coord_index]: + break + idx_n = idx_n + 1 + if idx_n == len(track_coords): # end of track + idx_n = track_coord_index + + # get previous projected coordinate + x_n, y_n = myProj( + track_coords[idx_n][0], + track_coords[idx_n][1], + inverse=False, + ) + + # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate + dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) + + # get the perpendicular offset based on the average of the forward and backward piecewise track lines adjusted so that the distance matches the actual cross_error + dx = 0.5 * (dx_p + dx_n) + dy = 0.5 * (dy_p + dy_n) + alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) + + # compute the next point and retrieve back the lat-lon geographic coordinate + lon, lat = myProj( + x_ref + alpha * dx, + y_ref + alpha * dy, + inverse=True, + ) + lon_new.append(lon) + lat_new.append(lat) + + df_['longitude'] = lon_new + df_['latitude'] = lat_new + + return df_ + + +if __name__ == '__main__': + ################################## + # Example calls from command line for 2018 Hurricane Florence: + # - python3 make_storm_ensemble.py 3 al062018 2018-09-11-06 2018-09-17-06 + # - python3 make_storm_ensemble.py 5 Florence2018 2018-09-11-06 + ################################## + + # Implement argument parsing + argument_parser = ArgumentParser() + argument_parser.add_argument('number_of_perturbations', + help='number of perturbations') + argument_parser.add_argument('storm_code', help='storm name/code') + argument_parser.add_argument('start_date', nargs='?', + help='start date') + argument_parser.add_argument('end_date', nargs='?', help='end date') + arguments = argument_parser.parse_args() + + # Parse number of perturbations + num = arguments.number_of_perturbations + if num is not None: + num = int(num) + + # Parse storm code + stormcode = arguments.storm_code + + # Parse the start and end dates, e.g., YYYY-MM-DD-HH + start_date = arguments.start_date + if start_date is not None: + start_date = parse_date(start_date) + end_date = arguments.end_date + if end_date is not None: + end_date = parse_date(end_date) + + # hardcoding variable list for now + variables = [ + 'max_sustained_wind_speed', + 'radius_of_maximum_winds', + 'along_track', + 'cross_track', + ] + + # Enter function + main(num, variables, stormcode, start_date, end_date) From 6a1734d7b30dfa08dd5eff49080d30e0f5249df2 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Tue, 8 Jun 2021 20:52:32 +0000 Subject: [PATCH 02/29] Fix code style issues with oitnb --- .../perturbation/make_storm_ensemble.py | 160 ++++++------------ 1 file changed, 48 insertions(+), 112 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 1629171f..fc041b91 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -50,12 +50,12 @@ def main( - number_of_perturbations: int, - variable_list: [str], - storm_code: str, - start_date: datetime, - end_date: datetime, - output_directory: PathLike = None, + number_of_perturbations: int, + variable_list: [str], + storm_code: str, + start_date: datetime, + end_date: datetime, + output_directory: PathLike = None, ): """ Write perturbed tracks to `fort.22` @@ -74,16 +74,11 @@ def main( output_directory = Path(output_directory) # getting best track - best_track = BestTrackForcing( - storm_code, - start_date=start_date, - end_date=end_date, - ) + best_track = BestTrackForcing(storm_code, start_date=start_date, end_date=end_date,) # write out original fort.22 best_track.write( - output_directory / 'original.22', - overwrite=True, + output_directory / 'original.22', overwrite=True, ) # Computing Holland B and validation times from BT @@ -91,9 +86,7 @@ def main( storm_VT = compute_VT_hours(best_track) # Get the initial intensity and size - storm_strength = intensity_class( - compute_initial(best_track, vmax_variable), - ) + storm_strength = intensity_class(compute_initial(best_track, vmax_variable),) storm_size = size_class(compute_initial(best_track, rmw_var)) print(f'Initial storm strength: {storm_strength}') @@ -120,10 +113,7 @@ def main( xp = forecast_errors[variable][storm_classification].index yp = forecast_errors[variable][storm_classification].values - base_errors = [ - interp(storm_VT, xp, yp[:, ncol]) - for ncol in range(len(yp[0])) - ] + base_errors = [interp(storm_VT, xp, yp[:, ncol]) for ncol in range(len(yp[0]))] # print(base_errors) @@ -153,26 +143,21 @@ def main( # subtract the error from the variable with physical constraint bounds df_modified = perturb_bound( df_modified, - perturbation=-(base_errors[0] * (1.0 - alpha) + - base_errors[1] * alpha), + perturbation=-(base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha), variable=variable, ) if variable == vmax_variable: # In case of Vmax need to change the central pressure # incongruence with it (obeying Holland B relationship) - df_modified[pc_var] = compute_pc_from_Vmax( - df_modified, - B=holland_B, - ) + df_modified[pc_var] = compute_pc_from_Vmax(df_modified, B=holland_B,) # reset the dataframe best_track._df = df_modified # write out the modified fort.22 best_track.write( - output_directory / f'{variable}_{perturbation_index}.22', - overwrite=True, + output_directory / f'{variable}_{perturbation_index}.22', overwrite=True, ) @@ -181,8 +166,7 @@ def main( ################################################################ # get the validation time of storm in hours def compute_VT_hours(best_track: BestTrackForcing) -> float: - return (best_track.datetime - best_track.start_date) / \ - timedelta(hours=1) + return (best_track.datetime - best_track.start_date) / timedelta(hours=1) # the initial value of the input variable var (Vmax or Rmax) @@ -247,22 +231,15 @@ def compute_pc_from_Vmax(dataframe: DataFrame, B: float) -> float: # perturbing the variable with physical bounds def perturb_bound( - dataframe: DataFrame, - perturbation: float, - variable: str, - validation_time: float = None, + dataframe: DataFrame, perturbation: float, variable: str, validation_time: float = None, ): if variable == 'along_track': dataframe = interpolate_along_track( - dataframe, - VT=validation_time.values, - along_track_errors=perturbation, + dataframe, VT=validation_time.values, along_track_errors=perturbation, ) elif variable == 'cross_track': dataframe = offset_track( - dataframe, - VT=validation_time.values, - cross_track_errors=perturbation, + dataframe, VT=validation_time.values, cross_track_errors=perturbation, ) else: test_list = dataframe[variable] + perturbation @@ -320,10 +297,10 @@ def size_class(rmw_nm: float) -> str: ) # RMW errors bound based on initial size RMW_vsmall_errors = DataFrame( - data=sm2nm * transpose( + data=sm2nm + * transpose( [ - [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, - -46.80, -52.68], + [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, -46.80, -52.68], [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], ] ), @@ -331,10 +308,10 @@ def size_class(rmw_nm: float) -> str: columns=['minimum error [nm]', 'maximum error [nm]'], ) RMW_small_errors = DataFrame( - data=sm2nm * transpose( + data=sm2nm + * transpose( [ - [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, - -24.24, -28.30], + [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, -24.24, -28.30], [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], ] ), @@ -342,36 +319,33 @@ def size_class(rmw_nm: float) -> str: columns=['minimum error [nm]', 'maximum error [nm]'], ) RMW_medium_errors = DataFrame( - data=sm2nm * transpose( + data=sm2nm + * transpose( [ - [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, - -7.40], - [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, - 16.70], + [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], + [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], ] ), index=VTR, columns=['minimum error [nm]', 'maximum error [nm]'], ) RMW_large_errors = DataFrame( - data=sm2nm * transpose( + data=sm2nm + * transpose( [ - [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, - 2.59], - [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, - 28.30], + [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], + [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], ] ), index=VTR, columns=['minimum error [nm]', 'maximum error [nm]'], ) RMW_vlarge_errors = DataFrame( - data=sm2nm * transpose( + data=sm2nm + * transpose( [ - [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, - 7.19], - [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, - 35.93], + [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], + [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], ] ), index=VTR, @@ -449,16 +423,10 @@ def utm_proj_from_lon(lon_mean: float) -> Proj: zone = floor((lon_mean + 180) / 6) + 1 # print("Zone is " + str(zone)) - return Proj( - f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs' - ) + return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') -def interpolate_along_track( - df_, - VT: [float], - along_track_errors: [float], -) -> DataFrame: +def interpolate_along_track(df_, VT: [float], along_track_errors: [float],) -> DataFrame: """ interpolate_along_track(df_,VT,along_track_errros) Offsets points by a given error/distance by interpolating along the track @@ -520,30 +488,22 @@ def interpolate_along_track( while len(pts) < interp_pts: if ind < 0 or ind > len(track_coords) - 1: break # reached end of line - if ind == track_coord_index or VT[ind] != VT[ - ind - along_sign]: + if ind == track_coord_index or VT[ind] != VT[ind - along_sign]: # get the x,y utm coordinate for this line string x_utm, y_utm = myProj( - track_coords[ind][0], track_coords[ind][1], - inverse=False + track_coords[ind][0], track_coords[ind][1], inverse=False ) pts.append((x_utm, y_utm)) ind = ind + along_sign # make the temporary line segment - line_segment = LineString([ - pts[pp] for pp in range(0, len(pts)) - ]) + line_segment = LineString([pts[pp] for pp in range(0, len(pts))]) # interpolate a distance "along_error" along the line pnew = line_segment.interpolate(abs(along_error)) # get back lat-lon - lon, lat = myProj( - pnew.coords[0][0], - pnew.coords[0][1], - inverse=True, - ) + lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) # print(track_coords[idx-1:idx+2]) # print(along_error/111e3) @@ -560,13 +520,7 @@ def interpolate_along_track( return df_ -def get_offset( - x1: float, - y1: float, - x2: float, - y2: float, - d: float, -) -> (float, float): +def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): """ get_offset(x1,y1,x2,y2,d) - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d @@ -601,11 +555,7 @@ def get_offset( return dx, dy -def offset_track( - df_, - VT: [float], - cross_track_errors: [float], -) -> DataFrame: +def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: """ offset_track(df_,VT,cross_track_errors) - Offsets points by a given perpendicular error/distance from the original track @@ -649,11 +599,7 @@ def offset_track( idx_p = track_coord_index # get previous projected coordinate - x_p, y_p = myProj( - track_coords[idx_p][0], - track_coords[idx_p][1], - inverse=False, - ) + x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False,) # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) @@ -668,11 +614,7 @@ def offset_track( idx_n = track_coord_index # get previous projected coordinate - x_n, y_n = myProj( - track_coords[idx_n][0], - track_coords[idx_n][1], - inverse=False, - ) + x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False,) # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) @@ -683,11 +625,7 @@ def offset_track( alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) # compute the next point and retrieve back the lat-lon geographic coordinate - lon, lat = myProj( - x_ref + alpha * dx, - y_ref + alpha * dy, - inverse=True, - ) + lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True,) lon_new.append(lon) lat_new.append(lat) @@ -706,11 +644,9 @@ def offset_track( # Implement argument parsing argument_parser = ArgumentParser() - argument_parser.add_argument('number_of_perturbations', - help='number of perturbations') + argument_parser.add_argument('number_of_perturbations', help='number of perturbations') argument_parser.add_argument('storm_code', help='storm name/code') - argument_parser.add_argument('start_date', nargs='?', - help='start date') + argument_parser.add_argument('start_date', nargs='?', help='start date') argument_parser.add_argument('end_date', nargs='?', help='end date') arguments = argument_parser.parse_args() From d052e5a66db8c86dc75c136dd69daa9282c264a7 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Wed, 9 Jun 2021 08:46:22 -0400 Subject: [PATCH 03/29] write perturber class --- .../perturbation/make_storm_ensemble.py | 343 +++++++++++------- 1 file changed, 205 insertions(+), 138 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index fc041b91..09b07a77 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -33,6 +33,7 @@ Zach Burnett, NOS/NOAA Saeed Moghimi, NOS/NOAA """ + from argparse import ArgumentParser from copy import deepcopy from datetime import datetime, timedelta @@ -49,116 +50,195 @@ from shapely.geometry import LineString -def main( - number_of_perturbations: int, - variable_list: [str], - storm_code: str, - start_date: datetime, - end_date: datetime, - output_directory: PathLike = None, -): - """ - Write perturbed tracks to `fort.22` - - :param number_of_perturbations: number of perturbations to create - :param variable_list: list of variable names, any combination of `["max_sustained_wind_speed", "radius_of_maximum_winds", "along_track", "cross_track"]` - :param storm_code: NHC storm code, for instance `al062018` - :param start_date: start time of ensemble - :param end_date: end time of ensemble - :param output_directory: directory to which to write - """ - - if output_directory is None: - output_directory = Path.cwd() - elif not isinstance(output_directory, Path): - output_directory = Path(output_directory) - - # getting best track - best_track = BestTrackForcing(storm_code, start_date=start_date, end_date=end_date,) - - # write out original fort.22 - best_track.write( - output_directory / 'original.22', overwrite=True, - ) - - # Computing Holland B and validation times from BT - holland_B = compute_Holland_B(best_track) - storm_VT = compute_VT_hours(best_track) - - # Get the initial intensity and size - storm_strength = intensity_class(compute_initial(best_track, vmax_variable),) - storm_size = size_class(compute_initial(best_track, rmw_var)) - - print(f'Initial storm strength: {storm_strength}') - print(f'Initial storm size: {storm_size}') - - # extracting original dataframe - df_original = best_track.df - - # modifying the central pressure while subsequently changing - # Vmax using the same Holland B parameter, - # writing each to a new fort.22 - for variable in variable_list: - print(f'writing perturbations for "{variable}"') - # print(min(df_original[var])) - # print(max(df_original[var])) - - # Make the random pertubations based on the historical forecast errors - # Interpolate from the given VT to the storm_VT - # print(forecast_errors[var][Initial_Vmax]) - if variable == 'radius_of_maximum_winds': - storm_classification = storm_size - else: - storm_classification = storm_strength - - xp = forecast_errors[variable][storm_classification].index - yp = forecast_errors[variable][storm_classification].values - base_errors = [interp(storm_VT, xp, yp[:, ncol]) for ncol in range(len(yp[0]))] - - # print(base_errors) - - for perturbation_index in range(1, number_of_perturbations + 1): - # make a deepcopy to preserve the original dataframe - df_modified = deepcopy(df_original) - - # get the random perturbation sample - if random_variable_type[variable] == 'gauss': - alpha = gauss(0, 1) / 0.7979 - # mean_abs_error = 0.7979 * sigma - - print(f'Random gaussian variable = {alpha}') - - # add the error to the variable with bounds to some physical constraints - df_modified = perturb_bound( - df_modified, - perturbation=base_errors[0] * alpha, - variable=variable, - validation_time=storm_VT, +class BestTrackPerturber: + def __init__( + self, + storm: str, + nws: int = None, + interval: timedelta = None, + start_date: datetime = None, + end_date: datetime = None, + ): + """ + build storm perturber + + :param storm: NHC storm code, for instance `al062018` + :param nws: wind stress parameter + :param interval: time interval + :param start_date: start time of ensemble + :param end_date: end time of ensemble + """ + + self.storm = storm + self.nws = nws + self.interval = interval + self.start_date = start_date + self.end_date = end_date + + self.__forcing = None + self.__previous_configuration = None + + @property + def storm(self) -> str: + return self.forcing.storm_id + + @storm.setter + def storm(self, storm: str): + self.__storm = storm + + @property + def nws(self) -> int: + return self.__nws + + @nws.setter + def nws(self, nws: int): + self.__nws = nws + + @property + def interval(self) -> timedelta: + return self.__interval + + @interval.setter + def interval(self, interval: timedelta): + if not isinstance(interval, timedelta): + self.__interval = timedelta(seconds=interval) + self.__interval = interval + + @property + def start_date(self) -> datetime: + return self.__start_date + + @start_date.setter + def start_date(self, start_date: datetime): + if not isinstance(start_date, datetime): + start_date = parse_date(start_date) + self.__start_date = start_date + + @property + def end_date(self) -> datetime: + return self.__end_date + + @end_date.setter + def end_date(self, end_date: datetime): + if not isinstance(end_date, datetime): + end_date = parse_date(end_date) + self.__end_date = end_date + + @property + def forcing(self) -> BestTrackForcing: + configuration = { + 'storm': self.storm, + 'nws': self.nws, + 'interval_seconds': self.interval / timedelta(seconds=1), + 'start_date': self.start_date, + 'end_date': self.end_date, + } + + if configuration != self.__previous_configuration: + self.__forcing = BestTrackForcing(**configuration) + self.__previous_configuration = configuration + + return self.__forcing + + def write( + self, number_of_perturbations: int, variable_list: [str], directory: PathLike = None + ): + """ + :param number_of_perturbations: number of perturbations to create + :param variable_list: list of variable names, any combination of `["max_sustained_wind_speed", "radius_of_maximum_winds", "along_track", "cross_track"]` + :param directory: directory to which to write + """ + + if number_of_perturbations is not None: + number_of_perturbations = int(number_of_perturbations) + if directory is None: + directory = Path.cwd() + elif not isinstance(directory, Path): + directory = Path(directory) + + # write out original fort.22 + self.forcing.write(directory / 'original.22', overwrite=True) + + # Computing Holland B and validation times from BT + holland_B = compute_Holland_B(self.forcing) + storm_VT = compute_VT_hours(self.forcing) + + # Get the initial intensity and size + storm_strength = intensity_class(compute_initial(self.forcing, vmax_variable), ) + storm_size = size_class(compute_initial(self.forcing, rmw_var)) + + print(f'Initial storm strength: {storm_strength}') + print(f'Initial storm size: {storm_size}') + + # extracting original dataframe + df_original = self.forcing.df + + # modifying the central pressure while subsequently changing + # Vmax using the same Holland B parameter, + # writing each to a new fort.22 + for variable in variable_list: + print(f'writing perturbations for "{variable}"') + # print(min(df_original[var])) + # print(max(df_original[var])) + + # Make the random pertubations based on the historical forecast errors + # Interpolate from the given VT to the storm_VT + # print(forecast_errors[var][Initial_Vmax]) + if variable == 'radius_of_maximum_winds': + storm_classification = storm_size + else: + storm_classification = storm_strength + + xp = forecast_errors[variable][storm_classification].index + yp = forecast_errors[variable][storm_classification].values + base_errors = [interp(storm_VT, xp, yp[:, ncol]) for ncol in range(len(yp[0]))] + + # print(base_errors) + + for perturbation_index in range(1, number_of_perturbations + 1): + # make a deepcopy to preserve the original dataframe + df_modified = deepcopy(df_original) + + # get the random perturbation sample + if random_variable_type[variable] == 'gauss': + alpha = gauss(0, 1) / 0.7979 + # mean_abs_error = 0.7979 * sigma + + print(f'Random gaussian variable = {alpha}') + + # add the error to the variable with bounds to some physical constraints + df_modified = perturb_bound( + df_modified, + perturbation=base_errors[0] * alpha, + variable=variable, + validation_time=storm_VT, + ) + elif random_variable_type[variable] == 'range': + alpha = random() + + print(f'Random number in [0,1) = {alpha}') + + # subtract the error from the variable with physical constraint bounds + df_modified = perturb_bound( + df_modified, + perturbation=-( + base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha + ), + variable=variable, + ) + + if variable == vmax_variable: + # In case of Vmax need to change the central pressure + # incongruence with it (obeying Holland B relationship) + df_modified[pc_var] = compute_pc_from_Vmax(df_modified, B=holland_B, ) + + # reset the dataframe + self.forcing._df = df_modified + + # write out the modified fort.22 + self.forcing.write( + directory / f'{variable}_{perturbation_index}.22', overwrite=True, ) - elif random_variable_type[variable] == 'range': - alpha = random() - - print(f'Random number in [0,1) = {alpha}') - - # subtract the error from the variable with physical constraint bounds - df_modified = perturb_bound( - df_modified, - perturbation=-(base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha), - variable=variable, - ) - - if variable == vmax_variable: - # In case of Vmax need to change the central pressure - # incongruence with it (obeying Holland B relationship) - df_modified[pc_var] = compute_pc_from_Vmax(df_modified, B=holland_B,) - - # reset the dataframe - best_track._df = df_modified - - # write out the modified fort.22 - best_track.write( - output_directory / f'{variable}_{perturbation_index}.22', overwrite=True, - ) ################################################################ @@ -298,7 +378,7 @@ def size_class(rmw_nm: float) -> str: # RMW errors bound based on initial size RMW_vsmall_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, -46.80, -52.68], [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], @@ -309,7 +389,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_small_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, -24.24, -28.30], [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], @@ -320,7 +400,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_medium_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], @@ -331,7 +411,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_large_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], @@ -342,7 +422,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_vlarge_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], @@ -426,7 +506,7 @@ def utm_proj_from_lon(lon_mean: float) -> Proj: return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') -def interpolate_along_track(df_, VT: [float], along_track_errors: [float],) -> DataFrame: +def interpolate_along_track(df_, VT: [float], along_track_errors: [float], ) -> DataFrame: """ interpolate_along_track(df_,VT,along_track_errros) Offsets points by a given error/distance by interpolating along the track @@ -503,7 +583,7 @@ def interpolate_along_track(df_, VT: [float], along_track_errors: [float],) -> D pnew = line_segment.interpolate(abs(along_error)) # get back lat-lon - lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) + lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True, ) # print(track_coords[idx-1:idx+2]) # print(along_error/111e3) @@ -520,7 +600,7 @@ def interpolate_along_track(df_, VT: [float], along_track_errors: [float],) -> D return df_ -def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): +def get_offset(x1: float, y1: float, x2: float, y2: float, d: float, ) -> (float, float): """ get_offset(x1,y1,x2,y2,d) - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d @@ -555,7 +635,7 @@ def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, return dx, dy -def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: +def offset_track(df_, VT: [float], cross_track_errors: [float], ) -> DataFrame: """ offset_track(df_,VT,cross_track_errors) - Offsets points by a given perpendicular error/distance from the original track @@ -599,7 +679,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: idx_p = track_coord_index # get previous projected coordinate - x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False,) + x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False, ) # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) @@ -614,7 +694,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: idx_n = track_coord_index # get previous projected coordinate - x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False,) + x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False, ) # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) @@ -625,7 +705,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) # compute the next point and retrieve back the lat-lon geographic coordinate - lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True,) + lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True, ) lon_new.append(lon) lat_new.append(lat) @@ -650,22 +730,6 @@ def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: argument_parser.add_argument('end_date', nargs='?', help='end date') arguments = argument_parser.parse_args() - # Parse number of perturbations - num = arguments.number_of_perturbations - if num is not None: - num = int(num) - - # Parse storm code - stormcode = arguments.storm_code - - # Parse the start and end dates, e.g., YYYY-MM-DD-HH - start_date = arguments.start_date - if start_date is not None: - start_date = parse_date(start_date) - end_date = arguments.end_date - if end_date is not None: - end_date = parse_date(end_date) - # hardcoding variable list for now variables = [ 'max_sustained_wind_speed', @@ -675,4 +739,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: ] # Enter function - main(num, variables, stormcode, start_date, end_date) + perturber = BestTrackPerturber( + arguments.storm_code, start_date=arguments.start_date, end_date=arguments.end_date + ) + perturber.write(arguments.number_of_perturbations, variables) From 8c9f5b196d661a88fabe740f82cdafdac37e1fbe Mon Sep 17 00:00:00 2001 From: Lint Action Date: Wed, 9 Jun 2021 12:48:43 +0000 Subject: [PATCH 04/29] Fix code style issues with oitnb --- .../perturbation/make_storm_ensemble.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 09b07a77..ee5510e7 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -164,7 +164,7 @@ def write( storm_VT = compute_VT_hours(self.forcing) # Get the initial intensity and size - storm_strength = intensity_class(compute_initial(self.forcing, vmax_variable), ) + storm_strength = intensity_class(compute_initial(self.forcing, vmax_variable),) storm_size = size_class(compute_initial(self.forcing, rmw_var)) print(f'Initial storm strength: {storm_strength}') @@ -230,7 +230,7 @@ def write( if variable == vmax_variable: # In case of Vmax need to change the central pressure # incongruence with it (obeying Holland B relationship) - df_modified[pc_var] = compute_pc_from_Vmax(df_modified, B=holland_B, ) + df_modified[pc_var] = compute_pc_from_Vmax(df_modified, B=holland_B,) # reset the dataframe self.forcing._df = df_modified @@ -378,7 +378,7 @@ def size_class(rmw_nm: float) -> str: # RMW errors bound based on initial size RMW_vsmall_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, -46.80, -52.68], [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], @@ -389,7 +389,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_small_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, -24.24, -28.30], [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], @@ -400,7 +400,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_medium_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], @@ -411,7 +411,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_large_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], @@ -422,7 +422,7 @@ def size_class(rmw_nm: float) -> str: ) RMW_vlarge_errors = DataFrame( data=sm2nm - * transpose( + * transpose( [ [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], @@ -506,7 +506,7 @@ def utm_proj_from_lon(lon_mean: float) -> Proj: return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') -def interpolate_along_track(df_, VT: [float], along_track_errors: [float], ) -> DataFrame: +def interpolate_along_track(df_, VT: [float], along_track_errors: [float],) -> DataFrame: """ interpolate_along_track(df_,VT,along_track_errros) Offsets points by a given error/distance by interpolating along the track @@ -583,7 +583,7 @@ def interpolate_along_track(df_, VT: [float], along_track_errors: [float], ) -> pnew = line_segment.interpolate(abs(along_error)) # get back lat-lon - lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True, ) + lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) # print(track_coords[idx-1:idx+2]) # print(along_error/111e3) @@ -600,7 +600,7 @@ def interpolate_along_track(df_, VT: [float], along_track_errors: [float], ) -> return df_ -def get_offset(x1: float, y1: float, x2: float, y2: float, d: float, ) -> (float, float): +def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): """ get_offset(x1,y1,x2,y2,d) - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d @@ -635,7 +635,7 @@ def get_offset(x1: float, y1: float, x2: float, y2: float, d: float, ) -> (float return dx, dy -def offset_track(df_, VT: [float], cross_track_errors: [float], ) -> DataFrame: +def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: """ offset_track(df_,VT,cross_track_errors) - Offsets points by a given perpendicular error/distance from the original track @@ -679,7 +679,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float], ) -> DataFrame: idx_p = track_coord_index # get previous projected coordinate - x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False, ) + x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False,) # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) @@ -694,7 +694,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float], ) -> DataFrame: idx_n = track_coord_index # get previous projected coordinate - x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False, ) + x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False,) # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) @@ -705,7 +705,7 @@ def offset_track(df_, VT: [float], cross_track_errors: [float], ) -> DataFrame: alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) # compute the next point and retrieve back the lat-lon geographic coordinate - lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True, ) + lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True,) lon_new.append(lon) lat_new.append(lat) From 3df8b0d7ddf6e5ed21b84fbd10c85de9136a35ef Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Wed, 9 Jun 2021 10:46:44 -0400 Subject: [PATCH 05/29] store variable information in classes --- .../perturbation/make_storm_ensemble.py | 922 +++++++++--------- 1 file changed, 471 insertions(+), 451 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index ee5510e7..9d667d48 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -34,9 +34,11 @@ Saeed Moghimi, NOS/NOAA """ +from abc import ABC from argparse import ArgumentParser from copy import deepcopy from datetime import datetime, timedelta +from enum import Enum from math import exp, inf, sqrt from os import PathLike from pathlib import Path @@ -49,6 +51,181 @@ from pyproj import Proj from shapely.geometry import LineString +AIR_DENSITY = 1.15 # [kg/m3] + +UNIT_CONVERSIONS = { + 'knot': {'meter_per_second': 0.514444444}, + 'millibar': {'pascal': 100}, + 'pascal': {'millibar': 0.01}, + 'nautical_mile': {'statute_mile': 1.150781, 'meter': 1852}, + 'statute_mile': {'nautical_mile': 0.868976}, +} + +E1 = exp(1.0) # e + +# Index of absolute errors (forecast times [hrs)] +ERROR_INDICES_NO_60H = [0, 12, 24, 36, 48, 72, 96, 120] # no 60-hr data +ERROR_INDICES_60HR = [0, 12, 24, 36, 48, 60, 72, 96, 120] # has 60-hr data (for Rmax) + + +class RandomType(Enum): + GAUSSIAN = 'gaussian' + LINEAR = 'linear' + + +class BestTrackPerturbedVariable(ABC): + name: str + random_type: RandomType = None + lower_bound: float = None + upper_bound: float = None + historical_forecast_errors: {str: float} = None + default: float = None # [mbar] + + +class CentralPressure(BestTrackPerturbedVariable): + name = 'central_pressure' + + +class BackgroundPressure(BestTrackPerturbedVariable): + name = 'background_pressure' + default = 1013.0 + + +class MaximumSustainedWindSpeed(BestTrackPerturbedVariable): + name = 'max_sustained_wind_speed' + random_type = RandomType.GAUSSIAN + lower_bound = 25 # [kt] + upper_bound = 165 # [kt] + historical_forecast_errors = { + '<50kt': DataFrame( + data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], + index=ERROR_INDICES_NO_60H, + columns=['mean error [kt]'], + ), + '50-95kt': DataFrame( + data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], + index=ERROR_INDICES_NO_60H, + columns=['mean error [kt]'], + ), + '>95kt': DataFrame( + data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], + index=ERROR_INDICES_NO_60H, + columns=['mean error [kt]'], + ), + } + + +class RadiusOfMaximumWinds(BestTrackPerturbedVariable): + name = 'radius_of_maximum_winds' + random_type = RandomType.LINEAR + lower_bound = 5 # [nm] + upper_bound = 200 # [nm] + historical_forecast_errors = { + '<15sm': DataFrame( + data=transpose( + [ + [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, -46.80, -52.68], + [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], + ] + ) + * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], + index=ERROR_INDICES_60HR, + columns=['minimum error [nm]', 'maximum error [nm]'], + ), + '15-25sm': DataFrame( + data=transpose( + [ + [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, -24.24, -28.30], + [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], + ] + ) + * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], + index=ERROR_INDICES_60HR, + columns=['minimum error [nm]', 'maximum error [nm]'], + ), + '25-35sm': DataFrame( + data=transpose( + [ + [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], + [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], + ] + ) + * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], + index=ERROR_INDICES_60HR, + columns=['minimum error [nm]', 'maximum error [nm]'], + ), + '35-45sm': DataFrame( + data=transpose( + [ + [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], + [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], + ] + ) + * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], + index=ERROR_INDICES_60HR, + columns=['minimum error [nm]', 'maximum error [nm]'], + ), + '>45sm': DataFrame( + data=transpose( + [ + [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], + [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], + ] + ) + * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], + index=ERROR_INDICES_60HR, + columns=['minimum error [nm]', 'maximum error [nm]'], + ), + } + + +class CrossTrack(BestTrackPerturbedVariable): + name = 'cross_track' + random_type = RandomType.GAUSSIAN + lower_bound = -inf + upper_bound = +inf + historical_forecast_errors = { + '<50kt': DataFrame( + data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], + index=ERROR_INDICES_NO_60H, + columns=['mean error [nm]'], + ), + '50-95kt': DataFrame( + data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], + index=ERROR_INDICES_NO_60H, + columns=['mean error [nm]'], + ), + '>95kt': DataFrame( + data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], + index=ERROR_INDICES_NO_60H, + columns=['mean error [nm]'], + ), + } + + +class AlongTrack(BestTrackPerturbedVariable): + name = 'along_track' + random_type = RandomType.GAUSSIAN + lower_bound = -inf + upper_bound = +inf + historical_forecast_errors = { + '<50kt': DataFrame( + data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], + index=ERROR_INDICES_NO_60H, + columns=['mean error [nm]'], + ), + '50-95kt': DataFrame( + data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], + index=ERROR_INDICES_NO_60H, + columns=['mean error [nm]'], + ), + '>95kt': DataFrame( + data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], + index=ERROR_INDICES_NO_60H, + columns=['mean error [nm]'], + ), + } + class BestTrackPerturber: def __init__( @@ -80,7 +257,7 @@ def __init__( @property def storm(self) -> str: - return self.forcing.storm_id + return self.__storm @storm.setter def storm(self, storm: str): @@ -100,7 +277,7 @@ def interval(self) -> timedelta: @interval.setter def interval(self, interval: timedelta): - if not isinstance(interval, timedelta): + if interval is not None and not isinstance(interval, timedelta): self.__interval = timedelta(seconds=interval) self.__interval = interval @@ -110,7 +287,7 @@ def start_date(self) -> datetime: @start_date.setter def start_date(self, start_date: datetime): - if not isinstance(start_date, datetime): + if start_date is not None and not isinstance(start_date, datetime): start_date = parse_date(start_date) self.__start_date = start_date @@ -120,16 +297,20 @@ def end_date(self) -> datetime: @end_date.setter def end_date(self, end_date: datetime): - if not isinstance(end_date, datetime): + if end_date is not None and not isinstance(end_date, datetime): end_date = parse_date(end_date) self.__end_date = end_date @property def forcing(self) -> BestTrackForcing: + interval = self.interval + if interval is not None: + interval = interval / timedelta(seconds=1) + configuration = { 'storm': self.storm, 'nws': self.nws, - 'interval_seconds': self.interval / timedelta(seconds=1), + 'interval_seconds': interval, 'start_date': self.start_date, 'end_date': self.end_date, } @@ -138,14 +319,19 @@ def forcing(self) -> BestTrackForcing: self.__forcing = BestTrackForcing(**configuration) self.__previous_configuration = configuration + self.__storm = self.__forcing.storm_id + return self.__forcing def write( - self, number_of_perturbations: int, variable_list: [str], directory: PathLike = None + self, + number_of_perturbations: int, + variables: [BestTrackPerturbedVariable], + directory: PathLike = None, ): """ :param number_of_perturbations: number of perturbations to create - :param variable_list: list of variable names, any combination of `["max_sustained_wind_speed", "radius_of_maximum_winds", "along_track", "cross_track"]` + :param variables: list of variable names, any combination of `["max_sustained_wind_speed", "radius_of_maximum_winds", "along_track", "cross_track"]` :param directory: directory to which to write """ @@ -159,13 +345,11 @@ def write( # write out original fort.22 self.forcing.write(directory / 'original.22', overwrite=True) - # Computing Holland B and validation times from BT - holland_B = compute_Holland_B(self.forcing) - storm_VT = compute_VT_hours(self.forcing) - # Get the initial intensity and size - storm_strength = intensity_class(compute_initial(self.forcing, vmax_variable),) - storm_size = size_class(compute_initial(self.forcing, rmw_var)) + storm_strength = self.vmax_intensity_class( + self.compute_initial(MaximumSustainedWindSpeed.name), + ) + storm_size = self.rmax_size_class(self.compute_initial(RadiusOfMaximumWinds.name)) print(f'Initial storm strength: {storm_strength}') print(f'Initial storm size: {storm_size}') @@ -176,22 +360,25 @@ def write( # modifying the central pressure while subsequently changing # Vmax using the same Holland B parameter, # writing each to a new fort.22 - for variable in variable_list: - print(f'writing perturbations for "{variable}"') + for variable in variables: + print(f'writing perturbations for "{variable.name}"') # print(min(df_original[var])) # print(max(df_original[var])) # Make the random pertubations based on the historical forecast errors # Interpolate from the given VT to the storm_VT # print(forecast_errors[var][Initial_Vmax]) - if variable == 'radius_of_maximum_winds': + if issubclass(variable, RadiusOfMaximumWinds): storm_classification = storm_size else: storm_classification = storm_strength - xp = forecast_errors[variable][storm_classification].index - yp = forecast_errors[variable][storm_classification].values - base_errors = [interp(storm_VT, xp, yp[:, ncol]) for ncol in range(len(yp[0]))] + xp = variable.historical_forecast_errors[storm_classification].index + yp = variable.historical_forecast_errors[storm_classification].values + base_errors = [ + interp(self.validation_time / timedelta(hours=1), xp, yp[:, ncol]) + for ncol in range(len(yp[0])) + ] # print(base_errors) @@ -200,26 +387,23 @@ def write( df_modified = deepcopy(df_original) # get the random perturbation sample - if random_variable_type[variable] == 'gauss': + if variable.random_type == RandomType.GAUSSIAN: alpha = gauss(0, 1) / 0.7979 # mean_abs_error = 0.7979 * sigma print(f'Random gaussian variable = {alpha}') # add the error to the variable with bounds to some physical constraints - df_modified = perturb_bound( - df_modified, - perturbation=base_errors[0] * alpha, - variable=variable, - validation_time=storm_VT, + df_modified = self.perturb_bound( + df_modified, perturbation=base_errors[0] * alpha, variable=variable, ) - elif random_variable_type[variable] == 'range': + elif variable.random_type == RandomType.LINEAR: alpha = random() print(f'Random number in [0,1) = {alpha}') # subtract the error from the variable with physical constraint bounds - df_modified = perturb_bound( + df_modified = self.perturb_bound( df_modified, perturbation=-( base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha @@ -227,377 +411,289 @@ def write( variable=variable, ) - if variable == vmax_variable: + if issubclass(variable, MaximumSustainedWindSpeed): # In case of Vmax need to change the central pressure # incongruence with it (obeying Holland B relationship) - df_modified[pc_var] = compute_pc_from_Vmax(df_modified, B=holland_B,) + df_modified[CentralPressure.name] = self.compute_pc_from_Vmax(df_modified) # reset the dataframe self.forcing._df = df_modified # write out the modified fort.22 self.forcing.write( - directory / f'{variable}_{perturbation_index}.22', overwrite=True, + directory / f'{variable.name}_{perturbation_index}.22', overwrite=True, ) + @property + def validation_time(self) -> timedelta: + """ get the validation time of storm """ + return self.forcing.datetime - self.forcing.start_date -################################################################ -## Sub functions and dictionaries... -################################################################ -# get the validation time of storm in hours -def compute_VT_hours(best_track: BestTrackForcing) -> float: - return (best_track.datetime - best_track.start_date) / timedelta(hours=1) - - -# the initial value of the input variable var (Vmax or Rmax) -def compute_initial(best_track: BestTrackForcing, var: str) -> float: - return best_track.df[var].iloc[0] - - -# some constants -rho_air = 1.15 # density of air [kg/m3] -Pb = 1013.0 # background pressure [mbar] -kts2ms = 0.514444444 # kts to m/s -mbar2pa = 100 # mbar to Pa -pa2mbar = 0.01 # Pa to mbar -nm2sm = 1.150781 # nautical miles to statute miles -sm2nm = 0.868976 # statute miles to nautical miles -e1 = exp(1.0) # e -# variable names -pc_var = 'central_pressure' -pb_var = 'background_pressure' -vmax_variable = 'max_sustained_wind_speed' -rmw_var = 'radius_of_maximum_winds' - - -# Compute Holland B at each time snap -def compute_Holland_B(best_track: BestTrackForcing) -> float: - df_test = best_track.df - Vmax = df_test[vmax_variable] * kts2ms - DelP = (df_test[pb_var] - df_test[pc_var]) * mbar2pa - B = Vmax * Vmax * rho_air * e1 / DelP - return B - - -# Compute central pressure from Vmax based on Holland B -def compute_pc_from_Vmax(dataframe: DataFrame, B: float) -> float: - Vmax = dataframe[vmax_variable] * kts2ms - DelP = Vmax * Vmax * rho_air * e1 / B - pc = dataframe[pb_var] - DelP * pa2mbar - return pc - - -# random variable types (Gaussian or just a range) -random_variable_type = { - 'max_sustained_wind_speed': 'gauss', - 'radius_of_maximum_winds': 'range', - 'cross_track': 'gauss', - 'along_track': 'gauss', -} -# physical bounds of different variables -lower_bound = { - 'max_sustained_wind_speed': 25, # [kt] - 'radius_of_maximum_winds': 5, # [nm] - 'cross_track': -inf, - 'along_track': -inf, -} -upper_bound = { - 'max_sustained_wind_speed': 165, # [kt] - 'radius_of_maximum_winds': 200, # [nm] - 'cross_track': +inf, - 'along_track': +inf, -} - + def compute_initial(self, var: str) -> float: + """ the initial value of the input variable var (Vmax or Rmax) """ + return self.forcing.df[var].iloc[0] -# perturbing the variable with physical bounds -def perturb_bound( - dataframe: DataFrame, perturbation: float, variable: str, validation_time: float = None, -): - if variable == 'along_track': - dataframe = interpolate_along_track( - dataframe, VT=validation_time.values, along_track_errors=perturbation, + @property + def holland_B(self) -> float: + """ Compute Holland B at each time snap """ + df_test = self.forcing.df + Vmax = ( + df_test[MaximumSustainedWindSpeed.name] + * UNIT_CONVERSIONS['knot']['meter_per_second'] ) - elif variable == 'cross_track': - dataframe = offset_track( - dataframe, VT=validation_time.values, cross_track_errors=perturbation, + DelP = ( + df_test[BackgroundPressure.name] - df_test[CentralPressure.name] + ) * UNIT_CONVERSIONS['millibar']['pascal'] + B = Vmax * Vmax * AIR_DENSITY * E1 / DelP + return B + + def compute_pc_from_Vmax(self, dataframe: DataFrame) -> float: + """ Compute central pressure from Vmax based on Holland B """ + Vmax = ( + dataframe[MaximumSustainedWindSpeed.name] + * UNIT_CONVERSIONS['knot']['meter_per_second'] ) - else: - test_list = dataframe[variable] + perturbation - LB = lower_bound[variable] - UB = upper_bound[variable] - bounded_result = [min(UB, max(ele, LB)) for ele in test_list] - dataframe[variable] = bounded_result - return dataframe - - -# Category for Vmax based intensity -def intensity_class(vmax: float) -> str: - if vmax < 50: - return '<50kt' # weak - elif vmax > 95: - return '>95kt' # strong - else: - return '50-95kt' # medium - - -# Category for Rmax based size -def size_class(rmw_nm: float) -> str: - # convert from nautical miles to statute miles - rmw_sm = rmw_nm * nm2sm - if rmw_sm < 15: - return '<15sm' # very small - elif rmw_sm < 25: - return '15-25sm' # small - elif rmw_sm < 35: - return '25-35sm' # medium - elif rmw_sm < 45: - return '35-45sm' # large - else: - return '>45sm' # very large + DelP = Vmax * Vmax * AIR_DENSITY * E1 / self.holland_B + pc = dataframe[BackgroundPressure.name] - DelP * UNIT_CONVERSIONS['pascal']['millibar'] + return pc + def perturb_bound( + self, + dataframe: DataFrame, + perturbation: [float], + variable: BestTrackPerturbedVariable, + ): + """ perturbing the variable with physical bounds """ + if issubclass(variable, AlongTrack): + dataframe = self.interpolate_along_track( + dataframe, along_track_errors=perturbation + ) + elif issubclass(variable, CrossTrack): + dataframe = self.offset_track(dataframe, cross_track_errors=perturbation) + else: + test_list = dataframe[variable.name] + perturbation + bounded_result = [ + min(variable.upper_bound, max(ele, variable.lower_bound)) for ele in test_list + ] + dataframe[variable.name] = bounded_result + return dataframe -# Index of absolute errors (forecast times [hrs)] -VT = [0, 12, 24, 36, 48, 72, 96, 120] # no 60-hr data -VTR = [0, 12, 24, 36, 48, 60, 72, 96, 120] # has 60-hr data (for Rmax) -# Mean absolute Vmax errors based on initial intensity -Vmax_weak_errors = DataFrame( - data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], - index=VT, - columns=['mean error [kt]'], -) -Vmax_medium_errors = DataFrame( - data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], - index=VT, - columns=['mean error [kt]'], -) -Vmax_strong_errors = DataFrame( - data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], - index=VT, - columns=['mean error [kt]'], -) -# RMW errors bound based on initial size -RMW_vsmall_errors = DataFrame( - data=sm2nm - * transpose( - [ - [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, -46.80, -52.68], - [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], - ] - ), - index=VTR, - columns=['minimum error [nm]', 'maximum error [nm]'], -) -RMW_small_errors = DataFrame( - data=sm2nm - * transpose( - [ - [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, -24.24, -28.30], - [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], - ] - ), - index=VTR, - columns=['minimum error [nm]', 'maximum error [nm]'], -) -RMW_medium_errors = DataFrame( - data=sm2nm - * transpose( - [ - [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], - [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], - ] - ), - index=VTR, - columns=['minimum error [nm]', 'maximum error [nm]'], -) -RMW_large_errors = DataFrame( - data=sm2nm - * transpose( - [ - [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], - [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], - ] - ), - index=VTR, - columns=['minimum error [nm]', 'maximum error [nm]'], -) -RMW_vlarge_errors = DataFrame( - data=sm2nm - * transpose( - [ - [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], - [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], - ] - ), - index=VTR, - columns=['minimum error [nm]', 'maximum error [nm]'], -) -# Mean absolute cross-track errors based on initial intensity -ct_weak_errors = DataFrame( - data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], - index=VT, - columns=['mean error [nm]'], -) -ct_medium_errors = DataFrame( - data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], - index=VT, - columns=['mean error [nm]'], -) -ct_strong_errors = DataFrame( - data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], - index=VT, - columns=['mean error [nm]'], -) -# Mean absolute along-track errors based on initial intensity -at_weak_errors = DataFrame( - data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], - index=VT, - columns=['mean error [nm]'], -) -at_medium_errors = DataFrame( - data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], - index=VT, - columns=['mean error [nm]'], -) -at_strong_errors = DataFrame( - data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], - index=VT, - columns=['mean error [nm]'], -) -# Dictionary of historical forecast errors by variable -forecast_errors = { - 'max_sustained_wind_speed': { - '<50kt': Vmax_weak_errors, - '50-95kt': Vmax_medium_errors, - '>95kt': Vmax_strong_errors, - }, - 'radius_of_maximum_winds': { - '<15sm': RMW_vsmall_errors, - '15-25sm': RMW_small_errors, - '25-35sm': RMW_medium_errors, - '35-45sm': RMW_large_errors, - '>45sm': RMW_vlarge_errors, - }, - 'cross_track': { - '<50kt': ct_weak_errors, - '50-95kt': ct_medium_errors, - '>95kt': ct_strong_errors, - }, - 'along_track': { - '<50kt': at_weak_errors, - '50-95kt': at_medium_errors, - '>95kt': at_strong_errors, - }, -} + def interpolate_along_track(self, dataframe, along_track_errors: [float]) -> DataFrame: + """ + interpolate_along_track(df_,VT,along_track_errros) + Offsets points by a given error/distance by interpolating along the track + :param dataframe: ATCF dataframe containing track info + :param along_track_errors: along-track errors for each forecast time (VT) + :return: updated ATCF dataframe with different longitude latitude locations based on interpolated errors along track + """ -def utm_proj_from_lon(lon_mean: float) -> Proj: - """ - utm_from_lon - UTM zone for a longitude - Not right for some polar regions (Norway, Svalbard, Antartica) - :param lon_mean: longitude + interp_pts = 5 # maximum number of pts along line for each interpolation + + # Get the coordinates of the track + track_coords = dataframe[['longitude', 'latitude']].values.tolist() + + VT = (self.validation_time / timedelta(hours=1)).values + + # Extrapolating the track for negative errors at beginning and positive errors at end of track + for vt_index in range(0, len(VT)): + if VT[vt_index] == 0 and VT[vt_index + 1] > 0: + # append point to the beginning for going in negative direction + p1 = track_coords[vt_index] + p2 = track_coords[vt_index + 1] + ps = [ + p1[0] - interp_pts * (p2[0] - p1[0]), + p1[1] - interp_pts * (p2[1] - p1[1]), + ] + if VT[vt_index] == VT[-1] and VT[vt_index - 1] < VT[-1]: + # append point to the end going in positive direction + p1 = track_coords[vt_index - 1] + p2 = track_coords[vt_index] + pe = [ + p1[0] + interp_pts * (p2[0] - p1[0]), + p1[1] + interp_pts * (p2[1] - p1[1]), + ] + + track_coords.insert(0, ps) + track_coords.append(pe) + + # adding pseudo-VT times to the ends + VT = insert(VT, 0, VT[0] - 6) + VT = append(VT, VT[-1] + 6) + + # print(track_coords) + # print(VT) + # print(along_track_errors) + + # loop over all coordinates + lon_new = list() + lat_new = list() + for track_coord_index in range(1, len(track_coords) - 1): + # get the utm projection for middle longitude + myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) + along_error = ( + along_track_errors[track_coord_index - 1] + * UNIT_CONVERSIONS['nautical_mile']['meter'] + ) + along_sign = int(sign(along_error)) + + pts = list() + ind = track_coord_index + while len(pts) < interp_pts: + if ind < 0 or ind > len(track_coords) - 1: + break # reached end of line + if ind == track_coord_index or VT[ind] != VT[ind - along_sign]: + # get the x,y utm coordinate for this line string + x_utm, y_utm = myProj( + track_coords[ind][0], track_coords[ind][1], inverse=False + ) + pts.append((x_utm, y_utm)) + ind = ind + along_sign - :usage x_utm,y_utm = myProj(lon, lat , inverse=False) - :usage lon, lat = myProj(xutm, yutm, inverse=True) - """ + # make the temporary line segment + line_segment = LineString([pts[pp] for pp in range(0, len(pts))]) - zone = floor((lon_mean + 180) / 6) + 1 - # print("Zone is " + str(zone)) + # interpolate a distance "along_error" along the line + pnew = line_segment.interpolate(abs(along_error)) - return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') + # get back lat-lon + lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) + # print(track_coords[idx-1:idx+2]) + # print(along_error/111e3) + # print(new_coords]) -def interpolate_along_track(df_, VT: [float], along_track_errors: [float],) -> DataFrame: - """ - interpolate_along_track(df_,VT,along_track_errros) - Offsets points by a given error/distance by interpolating along the track + lon_new.append(lon) + lat_new.append(lat) - :param df_: ATCF dataframe containing track info - :param VT: the forecast validation times [hours] - :param along_track_errors: along-track errors for each forecast time (VT) - :return: updated ATCF dataframe with different longitude latitude locations based on interpolated errors along track - """ + # print([lon_new, lat_new]) - # Parameters - interp_pts = 5 # maximum number of pts along line for each interpolation - nm2m = 1852 # nautical miles to meters - - # Get the coordinates of the track - track_coords = df_[['longitude', 'latitude']].values.tolist() - - # Extrapolating the track for negative errors at beginning and positive errors at end of track - for vt_index in range(0, len(VT)): - if VT[vt_index] == 0 and VT[vt_index + 1] > 0: - # append point to the beginning for going in negative direction - p1 = track_coords[vt_index] - p2 = track_coords[vt_index + 1] - ps = [ - p1[0] - interp_pts * (p2[0] - p1[0]), - p1[1] - interp_pts * (p2[1] - p1[1]), - ] - if VT[vt_index] == VT[-1] and VT[vt_index - 1] < VT[-1]: - # append point to the end going in positive direction - p1 = track_coords[vt_index - 1] - p2 = track_coords[vt_index] - pe = [ - p1[0] + interp_pts * (p2[0] - p1[0]), - p1[1] + interp_pts * (p2[1] - p1[1]), - ] + dataframe['longitude'] = lon_new + dataframe['latitude'] = lat_new - track_coords.insert(0, ps) - track_coords.append(pe) - - # adding pseudo-VT times to the ends - VT = insert(VT, 0, VT[0] - 6) - VT = append(VT, VT[-1] + 6) - - # print(track_coords) - # print(VT) - # print(along_track_errors) - - # loop over all coordinates - lon_new = list() - lat_new = list() - for track_coord_index in range(1, len(track_coords) - 1): - # get the utm projection for middle longitude - myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) - along_error = along_track_errors[track_coord_index - 1] * nm2m - along_sign = int(sign(along_error)) - - pts = list() - ind = track_coord_index - while len(pts) < interp_pts: - if ind < 0 or ind > len(track_coords) - 1: - break # reached end of line - if ind == track_coord_index or VT[ind] != VT[ind - along_sign]: - # get the x,y utm coordinate for this line string - x_utm, y_utm = myProj( - track_coords[ind][0], track_coords[ind][1], inverse=False - ) - pts.append((x_utm, y_utm)) - ind = ind + along_sign + return dataframe - # make the temporary line segment - line_segment = LineString([pts[pp] for pp in range(0, len(pts))]) + def offset_track(self, dataframe, cross_track_errors: [float]) -> DataFrame: + """ + offset_track(df_,VT,cross_track_errors) + - Offsets points by a given perpendicular error/distance from the original track - # interpolate a distance "along_error" along the line - pnew = line_segment.interpolate(abs(along_error)) + :param dataframe: ATCF dataframe containing track info + :param cross_track_errors: cross-track errors [nm] for each forecast time (VT) + :return: updated ATCF dataframe with different longitude latitude locations based on perpendicular offsets set by the cross_track_errors + """ - # get back lat-lon - lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) + # Get the coordinates of the track + track_coords = dataframe[['longitude', 'latitude']].values.tolist() + + VT = (self.validation_time / timedelta(hours=1)).values + + # loop over all coordinates + lon_new = list() + lat_new = list() + for track_coord_index in range(0, len(track_coords)): + # get the current cross_track_error + cross_error = ( + cross_track_errors[track_coord_index] + * UNIT_CONVERSIONS['nautical_mile']['meter'] + ) + + # get the utm projection for the reference coordinate + myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) + + # get the location of the original reference coordinate + x_ref, y_ref = myProj( + track_coords[track_coord_index][0], + track_coords[track_coord_index][1], + inverse=False, + ) + + # get the index of the previous forecasted coordinate + idx_p = track_coord_index - 1 + while idx_p >= 0: + if VT[idx_p] < VT[track_coord_index]: + break + idx_p = idx_p - 1 + if idx_p < 0: # beginning of track + idx_p = track_coord_index + + # get previous projected coordinate + x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False,) + + # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate + dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) + + # get the index of the next forecasted coordinate + idx_n = track_coord_index + 1 + while idx_n < len(track_coords): + if VT[idx_n] > VT[track_coord_index]: + break + idx_n = idx_n + 1 + if idx_n == len(track_coords): # end of track + idx_n = track_coord_index + + # get previous projected coordinate + x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False,) + + # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate + dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) + + # get the perpendicular offset based on the average of the forward and backward piecewise track lines adjusted so that the distance matches the actual cross_error + dx = 0.5 * (dx_p + dx_n) + dy = 0.5 * (dy_p + dy_n) + alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) + + # compute the next point and retrieve back the lat-lon geographic coordinate + lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True,) + lon_new.append(lon) + lat_new.append(lat) + + dataframe['longitude'] = lon_new + dataframe['latitude'] = lat_new + + return dataframe + + @staticmethod + def vmax_intensity_class(vmax: float) -> str: + """ Category for Vmax based intensity """ + if vmax < 50: + return '<50kt' # weak + elif vmax > 95: + return '>95kt' # strong + else: + return '50-95kt' # medium + + @staticmethod + def rmax_size_class(rmax: float) -> str: + """ Category for Rmax based size """ + # convert from nautical miles to statute miles + rmw_sm = rmax * UNIT_CONVERSIONS['nautical_mile']['statute_mile'] + if rmw_sm < 15: + return '<15sm' # very small + elif rmw_sm < 25: + return '15-25sm' # small + elif rmw_sm < 35: + return '25-35sm' # medium + elif rmw_sm < 45: + return '35-45sm' # large + else: + return '>45sm' # very large - # print(track_coords[idx-1:idx+2]) - # print(along_error/111e3) - # print(new_coords]) - lon_new.append(lon) - lat_new.append(lat) +def utm_proj_from_lon(lon_mean: float) -> Proj: + """ + utm_from_lon - UTM zone for a longitude + Not right for some polar regions (Norway, Svalbard, Antartica) + :param lon_mean: longitude - # print([lon_new, lat_new]) + :usage x_utm,y_utm = myProj(lon, lat , inverse=False) + :usage lon, lat = myProj(xutm, yutm, inverse=True) + """ - df_['longitude'] = lon_new - df_['latitude'] = lat_new + zone = floor((lon_mean + 180) / 6) + 1 + # print("Zone is " + str(zone)) - return df_ + return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): @@ -635,86 +731,6 @@ def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, return dx, dy -def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: - """ - offset_track(df_,VT,cross_track_errors) - - Offsets points by a given perpendicular error/distance from the original track - - :param df_: ATCF dataframe containing track info - :param VT: the forecast validation times [hours] - :param cross_track_errors: cross-track errors [nm] for each forecast time (VT) - :return: updated ATCF dataframe with different longitude latitude locations based on perpendicular offsets set by the cross_track_errors - """ - - # Parameters - nm2m = 1852 # nautical miles to meters - - # Get the coordinates of the track - track_coords = df_[['longitude', 'latitude']].values.tolist() - - # loop over all coordinates - lon_new = list() - lat_new = list() - for track_coord_index in range(0, len(track_coords)): - # get the current cross_track_error - cross_error = cross_track_errors[track_coord_index] * nm2m - - # get the utm projection for the reference coordinate - myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) - - # get the location of the original reference coordinate - x_ref, y_ref = myProj( - track_coords[track_coord_index][0], - track_coords[track_coord_index][1], - inverse=False, - ) - - # get the index of the previous forecasted coordinate - idx_p = track_coord_index - 1 - while idx_p >= 0: - if VT[idx_p] < VT[track_coord_index]: - break - idx_p = idx_p - 1 - if idx_p < 0: # beginning of track - idx_p = track_coord_index - - # get previous projected coordinate - x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False,) - - # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate - dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) - - # get the index of the next forecasted coordinate - idx_n = track_coord_index + 1 - while idx_n < len(track_coords): - if VT[idx_n] > VT[track_coord_index]: - break - idx_n = idx_n + 1 - if idx_n == len(track_coords): # end of track - idx_n = track_coord_index - - # get previous projected coordinate - x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False,) - - # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate - dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) - - # get the perpendicular offset based on the average of the forward and backward piecewise track lines adjusted so that the distance matches the actual cross_error - dx = 0.5 * (dx_p + dx_n) - dy = 0.5 * (dy_p + dy_n) - alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) - - # compute the next point and retrieve back the lat-lon geographic coordinate - lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True,) - lon_new.append(lon) - lat_new.append(lat) - - df_['longitude'] = lon_new - df_['latitude'] = lat_new - - return df_ - - if __name__ == '__main__': ################################## # Example calls from command line for 2018 Hurricane Florence: @@ -732,14 +748,18 @@ def offset_track(df_, VT: [float], cross_track_errors: [float],) -> DataFrame: # hardcoding variable list for now variables = [ - 'max_sustained_wind_speed', - 'radius_of_maximum_winds', - 'along_track', - 'cross_track', + MaximumSustainedWindSpeed, + RadiusOfMaximumWinds, + AlongTrack, + CrossTrack, ] - # Enter function perturber = BestTrackPerturber( - arguments.storm_code, start_date=arguments.start_date, end_date=arguments.end_date + storm=arguments.storm_code, + start_date=arguments.start_date, + end_date=arguments.end_date, + ) + + perturber.write( + number_of_perturbations=arguments.number_of_perturbations, variables=variables, ) - perturber.write(arguments.number_of_perturbations, variables) From ccbddeac81c7b66a8d30d2ef0e2cd37d5b0f28d7 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Wed, 9 Jun 2021 11:07:22 -0400 Subject: [PATCH 06/29] add random test (ignore until stochastic) --- .github/workflows/tests.yml | 2 +- tests/__init__.py | 47 ++++++++++++ .../test_besttrack_ensemble/along_track_1.22 | 70 ++++++++++++++++++ .../test_besttrack_ensemble/along_track_2.22 | 70 ++++++++++++++++++ .../test_besttrack_ensemble/along_track_3.22 | 70 ++++++++++++++++++ .../test_besttrack_ensemble/cross_track_1.22 | 70 ++++++++++++++++++ .../test_besttrack_ensemble/cross_track_2.22 | 70 ++++++++++++++++++ .../test_besttrack_ensemble/cross_track_3.22 | 70 ++++++++++++++++++ .../max_sustained_wind_speed_1.22 | 70 ++++++++++++++++++ .../max_sustained_wind_speed_2.22 | 70 ++++++++++++++++++ .../max_sustained_wind_speed_3.22 | 70 ++++++++++++++++++ .../test_besttrack_ensemble/original.22 | 70 ++++++++++++++++++ .../radius_of_maximum_winds_1.22 | 70 ++++++++++++++++++ .../radius_of_maximum_winds_2.22 | 70 ++++++++++++++++++ .../radius_of_maximum_winds_3.22 | 70 ++++++++++++++++++ .../test_parse_adcirc_output}/fort.14 | 0 .../test_parse_adcirc_output}/fort.15 | 0 .../test_parse_adcirc_output}/fort.16 | 0 .../test_parse_adcirc_output}/fort.33 | 0 .../test_parse_adcirc_output}/fort.63.nc | Bin .../test_parse_adcirc_output}/fort.64.nc | Bin .../test_parse_adcirc_output}/fort.67.nc | Bin .../test_parse_adcirc_output}/fort.68.nc | Bin .../test_parse_adcirc_output}/maxele.63.nc | Bin .../test_parse_adcirc_output}/maxvel.63.nc | Bin tests/test_base.py | 2 - tests/test_besttrack_ensemble.py | 33 +++++++++ tests/test_parser.py | 20 ++--- 28 files changed, 1002 insertions(+), 12 deletions(-) create mode 100644 tests/__init__.py create mode 100644 tests/data/reference/test_besttrack_ensemble/along_track_1.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/along_track_2.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/along_track_3.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/cross_track_1.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/cross_track_2.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/cross_track_3.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/original.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 create mode 100644 tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.14 (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.15 (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.16 (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.33 (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.63.nc (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.64.nc (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.67.nc (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/fort.68.nc (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/maxele.63.nc (100%) rename tests/data/{Shinnecock_Inlet_NetCDF_output => reference/test_parse_adcirc_output}/maxvel.63.nc (100%) delete mode 100644 tests/test_base.py create mode 100644 tests/test_besttrack_ensemble.py diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 29ed72f5..6b6ad53a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,7 +41,7 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Run tests with coverage - run: pytest --cov=ensembleperturbation --numprocesses auto --ignore=tests/test_parser.py + run: pytest --cov=ensembleperturbation --numprocesses auto --ignore=tests/test_besttrack_ensemble.py - name: Upload coverage to Codecov if: matrix.python-version == 3.9 uses: codecov/codecov-action@v1 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..0bf751ce --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,47 @@ +from difflib import Differ +from os import PathLike +from pathlib import Path + +DATA_DIRECTORY = Path(__file__).parent / 'data' + + +def check_reference_directory( + test_directory: PathLike, reference_directory: PathLike, skip_lines: {str: [int]} = None +): + if not isinstance(test_directory, Path): + test_directory = Path(test_directory) + if not isinstance(reference_directory, Path): + reference_directory = Path(reference_directory) + if skip_lines is None: + skip_lines = {} + + for reference_filename in reference_directory.iterdir(): + if reference_filename.is_dir(): + check_reference_directory( + test_directory / reference_filename.name, reference_filename, skip_lines + ) + else: + test_filename = test_directory / reference_filename.name + + with open(test_filename) as test_file, open(reference_filename) as reference_file: + test_lines = list(test_file.readlines()) + reference_lines = list(reference_file.readlines()) + + diff = '\n'.join(Differ().compare(test_lines, reference_lines)) + message = f'"{test_filename}" != "{reference_filename}"\n{diff}' + + assert len(test_lines) == len(reference_lines), message + + lines_to_skip = set() + for file_mask, line_indices in skip_lines.items(): + if file_mask in str(test_filename) or re.match( + file_mask, str(test_filename) + ): + lines_to_skip.update( + line_index % len(test_lines) for line_index in line_indices + ) + + for line_index in sorted(lines_to_skip, reverse=True): + del test_lines[line_index], reference_lines[line_index] + + assert '\n'.join(test_lines) == '\n'.join(reference_lines), message diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 new file mode 100644 index 00000000..41528ed5 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 278N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 278N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 278N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 286N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 286N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 286N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 293N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 293N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 293N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 303N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 303N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 303N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 314N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 314N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 314N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 330N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 330N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 330N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 335N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 335N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 335N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 339N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 339N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 339N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 800W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 806W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 813W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 340N, 820W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 349N, 821W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 363N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 377N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 387N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 394N, 806W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 412N, 769W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 421N, 734W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 new file mode 100644 index 00000000..2d6f3170 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 278N, 679W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 278N, 679W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 278N, 679W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 286N, 693W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 286N, 693W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 286N, 693W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 293N, 705W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 293N, 705W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 293N, 705W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 303N, 717W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 303N, 717W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 303N, 717W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 314N, 730W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 314N, 730W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 314N, 730W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 330N, 749W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 330N, 749W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 330N, 749W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 335N, 758W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 335N, 758W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 335N, 758W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 339N, 763W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 339N, 763W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 339N, 763W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 793W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 793W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 800W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 806W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 813W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 340N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 348N, 821W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 362N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 376N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 386N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 394N, 806W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 412N, 769W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 421N, 734W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 new file mode 100644 index 00000000..c7dd8bb5 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 619W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 619W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 619W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 634W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 634W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 634W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 266N, 650W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 266N, 650W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 266N, 650W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 273N, 667W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 273N, 667W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 273N, 667W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 281N, 685W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 281N, 685W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 281N, 685W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 289N, 699W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 289N, 699W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 289N, 699W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 297N, 711W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 297N, 711W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 297N, 711W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 307N, 723W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 307N, 723W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 307N, 723W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 318N, 736W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 318N, 736W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 318N, 736W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 327N, 746W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 327N, 746W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 327N, 746W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 333N, 756W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 333N, 756W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 333N, 756W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 339N, 764W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 339N, 764W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 339N, 764W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 341N, 771W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 771W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 771W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 341N, 778W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 778W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 778W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 340N, 783W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 340N, 783W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 340N, 783W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 339N, 785W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 339N, 785W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 339N, 785W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 338N, 789W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 338N, 789W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 338N, 789W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 336N, 793W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 336N, 793W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 336N, 799W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 336N, 799W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 801W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 801W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 804W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 804W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 808W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 814W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 339N, 819W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 346N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 355N, 823W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 369N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 383N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 390N, 814W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 397N, 799W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 414N, 761W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 424N, 726W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 new file mode 100644 index 00000000..4b9ca1d1 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 820W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 387N, 819W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 421N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 new file mode 100644 index 00000000..f648e81c --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 266N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 266N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 266N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 273N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 273N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 273N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 280N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 280N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 280N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 288N, 693W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 288N, 693W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 288N, 693W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 295N, 705W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 295N, 705W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 295N, 705W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 305N, 717W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 305N, 717W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 305N, 717W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 316N, 730W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 316N, 730W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 316N, 730W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 325N, 740W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 325N, 740W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 325N, 740W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 332N, 749W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 332N, 749W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 332N, 749W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 337N, 758W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 337N, 758W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 337N, 758W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 341N, 763W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 763W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 763W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 344N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 344N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 344N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 344N, 779W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 344N, 779W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 344N, 779W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 342N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 342N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 342N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 341N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 341N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 338N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 338N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 338N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 338N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 338N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 338N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 338N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 338N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 338N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 818W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 819W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 823W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 377N, 819W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 386N, 817W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 393N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 411N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 420N, 730W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 new file mode 100644 index 00000000..8665326a --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 255N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 264N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 264N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 264N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 271N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 271N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 271N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 278N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 278N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 278N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 286N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 286N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 286N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 293N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 293N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 293N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 303N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 303N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 303N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 314N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 314N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 314N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 323N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 323N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 323N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 330N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 330N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 330N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 335N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 335N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 335N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 339N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 339N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 339N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 341N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 341N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 341N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 340N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 339N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 338N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 338N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 336N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 336N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 335N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 335N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 335N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 335N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 335N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 335N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 335N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 340N, 822W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 349N, 823W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 823W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 734W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 new file mode 100644 index 00000000..f45fbbbf --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 118, 941, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 118, 941, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 118, 941, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 120, 944, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 120, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 120, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 133, 939, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 133, 939, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 133, 939, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 140, 925, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 140, 925, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 140, 925, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 132, 929, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 132, 929, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 132, 929, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 128, 930, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 128, 930, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 128, 930, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 129, 929, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 129, 929, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 129, 929, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 123, 933, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 123, 933, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 123, 933, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 118, 941, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 118, 941, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 118, 941, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 113, 940, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 113, 940, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 113, 940, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 108, 937, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 108, 937, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 108, 937, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 103, 934, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 103, 934, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 103, 934, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 104, 932, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 104, 932, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 104, 932, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 99, 931, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 99, 931, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 99, 931, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 94, 935, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 94, 935, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 94, 935, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 94, 937, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 94, 937, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 94, 937, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 79, 949, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 79, 949, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 79, 949, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 74, 960, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 74, 960, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 69, 971, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 69, 971, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 69, 980, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 69, 980, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 64, 987, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 64, 987, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 59, 987, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 54, 988, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 49, 992, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 44, 998, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 39, 999, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 39, 1001, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 39, 1001, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 39, 1001, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 39, 1001, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 39, 999, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 39, 996, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 new file mode 100644 index 00000000..514c90b2 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 111, 948, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 111, 948, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 111, 948, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 108, 957, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 108, 957, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 108, 957, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 115, 957, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 115, 957, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 115, 957, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 118, 950, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 118, 950, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 118, 950, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 105, 958, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 105, 958, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 105, 958, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 99, 962, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 99, 962, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 99, 962, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 98, 963, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 98, 963, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 98, 963, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 94, 966, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 94, 966, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 94, 966, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 89, 971, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 89, 971, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 89, 971, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 84, 971, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 84, 971, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 84, 971, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 78, 972, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 78, 972, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 78, 972, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 73, 973, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 73, 973, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 73, 973, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 73, 973, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 73, 973, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 73, 973, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 68, 974, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 68, 974, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 68, 974, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 63, 977, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 63, 977, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 63, 977, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 63, 978, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 63, 978, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 63, 978, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 48, 989, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 48, 989, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 48, 989, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 43, 995, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 43, 995, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 38, 1000, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 38, 1000, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 38, 1003, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 38, 1003, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 33, 1006, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 33, 1006, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 28, 1007, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 25, 1008, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 25, 1007, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 new file mode 100644 index 00000000..02d33ded --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 113, 947, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 113, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 113, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 111, 955, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 111, 955, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 111, 955, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 118, 953, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 118, 953, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 118, 953, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 122, 946, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 122, 946, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 122, 946, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 110, 953, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 110, 953, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 110, 953, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 105, 956, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 105, 956, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 105, 956, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 104, 957, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 104, 957, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 104, 957, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 99, 960, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 99, 960, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 99, 960, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 95, 965, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 95, 965, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 95, 965, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 89, 966, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 89, 966, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 89, 966, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 84, 966, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 84, 966, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 84, 966, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 79, 966, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 79, 966, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 79, 966, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 79, 966, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 79, 966, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 79, 966, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 74, 967, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 74, 967, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 74, 967, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 69, 970, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 69, 970, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 69, 970, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 69, 971, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 69, 971, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 69, 971, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 54, 982, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 54, 982, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 54, 982, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 49, 990, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 49, 990, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 44, 996, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 44, 996, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 44, 1000, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 44, 1000, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 39, 1003, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 39, 1003, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 34, 1005, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 29, 1006, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 25, 1007, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/original.22 b/tests/data/reference/test_besttrack_ensemble/original.22 new file mode 100644 index 00000000..683530fb --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/original.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 new file mode 100644 index 00000000..c7b02739 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 17, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 17, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 17, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 20, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 20, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 20, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 16, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 16, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 16, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 17, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 17, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 17, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 22, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 22, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 22, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 22, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 22, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 22, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 24, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 24, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 24, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 30, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 30, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 30, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 32, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 32, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 32, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 34, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 34, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 34, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 35, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 35, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 35, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 37, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 37, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 37, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 38, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 38, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 38, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 44, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 44, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 44, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 44, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 44, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 44, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 50, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 50, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 50, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 51, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 51, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 72, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 72, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 84, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 84, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 135, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 135, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 136, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 136, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 166, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 166, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 176, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 186, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 186, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 186, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 186, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 196, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 new file mode 100644 index 00000000..74084a8c --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 11, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 11, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 11, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 11, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 11, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 11, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 16, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 16, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 16, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 16, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 16, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 16, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 17, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 17, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 17, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 22, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 22, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 22, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 23, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 23, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 23, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 25, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 25, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 25, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 26, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 26, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 26, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 27, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 27, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 27, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 28, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 28, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 28, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 33, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 33, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 33, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 33, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 33, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 33, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 39, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 39, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 39, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 40, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 40, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 61, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 61, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 72, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 72, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 123, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 123, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 125, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 125, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 155, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 155, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 165, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 175, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 175, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 175, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 175, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 185, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 195, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 new file mode 100644 index 00000000..72b1bbd6 --- /dev/null +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 @@ -0,0 +1,70 @@ +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 18, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 18, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 18, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 21, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 21, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 21, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 17, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 17, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 17, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 19, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 19, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 19, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 24, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 24, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 24, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 24, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 24, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 24, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 26, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 26, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 26, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 32, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 32, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 32, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 34, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 34, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 34, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 36, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 36, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 36, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 38, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 38, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 38, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 40, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 40, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 40, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 41, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 41, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 41, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 47, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 47, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 47, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 47, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 47, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 47, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 53, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 53, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 53, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 55, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 55, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 76, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 76, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 87, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 87, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 138, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 138, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 140, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 140, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 170, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 170, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 180, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 190, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 190, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 190, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 190, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.14 b/tests/data/reference/test_parse_adcirc_output/fort.14 similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.14 rename to tests/data/reference/test_parse_adcirc_output/fort.14 diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.15 b/tests/data/reference/test_parse_adcirc_output/fort.15 similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.15 rename to tests/data/reference/test_parse_adcirc_output/fort.15 diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.16 b/tests/data/reference/test_parse_adcirc_output/fort.16 similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.16 rename to tests/data/reference/test_parse_adcirc_output/fort.16 diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.33 b/tests/data/reference/test_parse_adcirc_output/fort.33 similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.33 rename to tests/data/reference/test_parse_adcirc_output/fort.33 diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.63.nc b/tests/data/reference/test_parse_adcirc_output/fort.63.nc similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.63.nc rename to tests/data/reference/test_parse_adcirc_output/fort.63.nc diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.64.nc b/tests/data/reference/test_parse_adcirc_output/fort.64.nc similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.64.nc rename to tests/data/reference/test_parse_adcirc_output/fort.64.nc diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.67.nc b/tests/data/reference/test_parse_adcirc_output/fort.67.nc similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.67.nc rename to tests/data/reference/test_parse_adcirc_output/fort.67.nc diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/fort.68.nc b/tests/data/reference/test_parse_adcirc_output/fort.68.nc similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/fort.68.nc rename to tests/data/reference/test_parse_adcirc_output/fort.68.nc diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/maxele.63.nc b/tests/data/reference/test_parse_adcirc_output/maxele.63.nc similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/maxele.63.nc rename to tests/data/reference/test_parse_adcirc_output/maxele.63.nc diff --git a/tests/data/Shinnecock_Inlet_NetCDF_output/maxvel.63.nc b/tests/data/reference/test_parse_adcirc_output/maxvel.63.nc similarity index 100% rename from tests/data/Shinnecock_Inlet_NetCDF_output/maxvel.63.nc rename to tests/data/reference/test_parse_adcirc_output/maxvel.63.nc diff --git a/tests/test_base.py b/tests/test_base.py deleted file mode 100644 index 1796bf92..00000000 --- a/tests/test_base.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_base(): - assert True diff --git a/tests/test_besttrack_ensemble.py b/tests/test_besttrack_ensemble.py new file mode 100644 index 00000000..7ab9a160 --- /dev/null +++ b/tests/test_besttrack_ensemble.py @@ -0,0 +1,33 @@ +from ensembleperturbation.perturbation.make_storm_ensemble import AlongTrack, BestTrackPerturber, CrossTrack, \ + MaximumSustainedWindSpeed, \ + RadiusOfMaximumWinds +from tests import DATA_DIRECTORY, check_reference_directory + + +def test_besttrack_ensemble(): + output_directory = DATA_DIRECTORY / 'output' / 'test_besttrack_ensemble' + reference_directory = DATA_DIRECTORY / 'reference' / 'test_besttrack_ensemble' + + if not output_directory.exists(): + output_directory.mkdir(parents=True, exist_ok=True) + + # hardcoding variable list for now + variables = [ + MaximumSustainedWindSpeed, + RadiusOfMaximumWinds, + AlongTrack, + CrossTrack, + ] + + perturber = BestTrackPerturber( + storm='al062018', + start_date='20180911', + end_date=None, + ) + + perturber.write( + number_of_perturbations=3, variables=variables, + directory=output_directory, + ) + + check_reference_directory(output_directory, reference_directory) diff --git a/tests/test_parser.py b/tests/test_parser.py index 9f984e7c..c962ea05 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -1,14 +1,16 @@ -from pathlib import Path +import re -from ensembleperturbation.parsing.adcirc import ( - ADCIRC_OUTPUT_DATA_VARIABLES, - parse_adcirc_output, -) - -ADCIRC_OUTPUT_DIRECTORY = Path(__file__).parent / 'data/Shinnecock_Inlet_NetCDF_output' +from ensembleperturbation.parsing.adcirc import parse_adcirc_output +from tests import DATA_DIRECTORY def test_parse_adcirc_output(): - output_data = parse_adcirc_output(ADCIRC_OUTPUT_DIRECTORY) - for data_variable in ADCIRC_OUTPUT_DATA_VARIABLES: + reference_directory = DATA_DIRECTORY / 'reference' / 'test_parse_adcirc_output' + output_filenames = [ + filename.name for filename in reference_directory.iterdir() + if re.match('\.6(0-9)?\.nc', str(filename)) + ] + + output_data = parse_adcirc_output(reference_directory) + for data_variable in output_filenames: assert data_variable in output_data From c9b4b2a8b2f1e2df025a40ed28d81a05e531fee5 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Wed, 9 Jun 2021 15:08:31 +0000 Subject: [PATCH 07/29] Fix code style issues with oitnb --- tests/test_besttrack_ensemble.py | 21 ++++++++++----------- tests/test_parser.py | 3 ++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/test_besttrack_ensemble.py b/tests/test_besttrack_ensemble.py index 7ab9a160..4b111b5c 100644 --- a/tests/test_besttrack_ensemble.py +++ b/tests/test_besttrack_ensemble.py @@ -1,7 +1,11 @@ -from ensembleperturbation.perturbation.make_storm_ensemble import AlongTrack, BestTrackPerturber, CrossTrack, \ - MaximumSustainedWindSpeed, \ - RadiusOfMaximumWinds -from tests import DATA_DIRECTORY, check_reference_directory +from ensembleperturbation.perturbation.make_storm_ensemble import ( + AlongTrack, + BestTrackPerturber, + CrossTrack, + MaximumSustainedWindSpeed, + RadiusOfMaximumWinds, +) +from tests import check_reference_directory, DATA_DIRECTORY def test_besttrack_ensemble(): @@ -19,15 +23,10 @@ def test_besttrack_ensemble(): CrossTrack, ] - perturber = BestTrackPerturber( - storm='al062018', - start_date='20180911', - end_date=None, - ) + perturber = BestTrackPerturber(storm='al062018', start_date='20180911', end_date=None,) perturber.write( - number_of_perturbations=3, variables=variables, - directory=output_directory, + number_of_perturbations=3, variables=variables, directory=output_directory, ) check_reference_directory(output_directory, reference_directory) diff --git a/tests/test_parser.py b/tests/test_parser.py index c962ea05..2625dc7b 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -7,7 +7,8 @@ def test_parse_adcirc_output(): reference_directory = DATA_DIRECTORY / 'reference' / 'test_parse_adcirc_output' output_filenames = [ - filename.name for filename in reference_directory.iterdir() + filename.name + for filename in reference_directory.iterdir() if re.match('\.6(0-9)?\.nc', str(filename)) ] From 28b0c4387adcae475d297d4ba581e4e6ad76fd93 Mon Sep 17 00:00:00 2001 From: Zachary Burnett Date: Thu, 10 Jun 2021 11:51:02 -0400 Subject: [PATCH 08/29] use `pint` for unit conversion and storage (#22) * use `pint` for unit conversion and storage * move perturbations into class implementations --- .../perturbation/make_storm_ensemble.py | 1015 ++++++++++------- setup.py | 2 + tests/__init__.py | 1 + 3 files changed, 621 insertions(+), 397 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 9d667d48..51175030 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -36,30 +36,28 @@ from abc import ABC from argparse import ArgumentParser -from copy import deepcopy from datetime import datetime, timedelta from enum import Enum from math import exp, inf, sqrt from os import PathLike from pathlib import Path from random import gauss, random +from typing import Union from adcircpy.forcing.winds.best_track import BestTrackForcing from dateutil.parser import parse as parse_date -from numpy import append, floor, insert, interp, sign, transpose -from pandas import DataFrame +import numpy +from numpy import append, floor, insert, interp, sign +from pandas import DataFrame, Series +import pint +from pint_pandas import PintType from pyproj import Proj from shapely.geometry import LineString -AIR_DENSITY = 1.15 # [kg/m3] +units = pint.UnitRegistry() +PintType.ureg = units -UNIT_CONVERSIONS = { - 'knot': {'meter_per_second': 0.514444444}, - 'millibar': {'pascal': 100}, - 'pascal': {'millibar': 0.01}, - 'nautical_mile': {'statute_mile': 1.150781, 'meter': 1852}, - 'statute_mile': {'nautical_mile': 0.868976}, -} +AIR_DENSITY = 1.15 * units.kilogram / units.meters ** 3 E1 = exp(1.0) # e @@ -68,18 +66,150 @@ ERROR_INDICES_60HR = [0, 12, 24, 36, 48, 60, 72, 96, 120] # has 60-hr data (for Rmax) -class RandomType(Enum): +class PerturbationType(Enum): GAUSSIAN = 'gaussian' LINEAR = 'linear' class BestTrackPerturbedVariable(ABC): name: str - random_type: RandomType = None - lower_bound: float = None - upper_bound: float = None - historical_forecast_errors: {str: float} = None - default: float = None # [mbar] + perturbation_type: PerturbationType + + def __init__( + self, + lower_bound: float = None, + upper_bound: float = None, + historical_forecast_errors: {str: DataFrame} = None, + default: float = None, + unit: pint.Unit = None, + ): + self.__unit = None + self.__lower_bound = None + self.__upper_bound = None + self.__historical_forecast_errors = None + self.__default = None + + self.unit = unit + + self.lower_bound = lower_bound + self.upper_bound = upper_bound + self.historical_forecast_errors = historical_forecast_errors + self.default = default + + @property + def unit(self) -> pint.Unit: + return self.__unit + + @unit.setter + def unit(self, unit: Union[str, pint.Unit]): + if not isinstance(unit, pint.Unit): + if unit is None: + unit = '' + unit = units.Unit(unit) + self.__unit = unit + + @property + def lower_bound(self) -> pint.Quantity: + if self.__lower_bound.units != self.unit: + self.__lower_bound.ito(self.unit) + return self.__lower_bound + + @lower_bound.setter + def lower_bound(self, lower_bound: float): + if isinstance(lower_bound, pint.Quantity): + if lower_bound.units != self.unit: + lower_bound = lower_bound.to(self.unit) + elif lower_bound is not None: + lower_bound *= self.unit + self.__lower_bound = lower_bound + + @property + def upper_bound(self) -> pint.Quantity: + if self.__upper_bound.units != self.unit: + self.__upper_bound.ito(self.unit) + return self.__upper_bound + + @upper_bound.setter + def upper_bound(self, upper_bound: float): + if isinstance(upper_bound, pint.Quantity): + if upper_bound.units != self.unit: + upper_bound = upper_bound.to(self.unit) + elif upper_bound is not None: + upper_bound *= self.unit + self.__upper_bound = upper_bound + + @property + def historical_forecast_errors(self) -> {str: DataFrame}: + for classification, dataframe in self.__historical_forecast_errors.items(): + for column in dataframe: + pint_type = PintType(self.unit) + if ( + not isinstance(dataframe[column].dtype, PintType) + or dataframe[column].dtype != pint_type + ): + if ( + isinstance(dataframe[column].dtype, PintType) + and dataframe[column].dtype != pint_type + ): + dataframe[column].pint.ito(self.unit) + dataframe[column].astype(pint_type, copy=False) + return self.__historical_forecast_errors + + @historical_forecast_errors.setter + def historical_forecast_errors(self, historical_forecast_errors: {str: DataFrame}): + for classification, dataframe in historical_forecast_errors.items(): + for column in dataframe: + pint_type = PintType(self.unit) + if ( + not isinstance(dataframe[column].dtype, PintType) + or dataframe[column].dtype != pint_type + ): + if ( + isinstance(dataframe[column].dtype, PintType) + and dataframe[column].dtype != pint_type + ): + dataframe[column].pint.ito(self.unit) + dataframe[column].astype(pint_type, copy=False) + self.__historical_forecast_errors = historical_forecast_errors + + @property + def default(self) -> pint.Quantity: + if self.__default is not None and self.__default.units != self.unit: + self.__default.ito(self.unit) + return self.__default + + @default.setter + def default(self, default: float): + if isinstance(default, pint.Quantity): + if default.units != self.unit: + default = default.to(self.unit) + elif default is not None: + default *= self.unit + self.__default = default + + def perturb( + self, + besttrack_dataframe: DataFrame, + values: [float], + times: [datetime], + ) -> DataFrame: + """ + perturb the variable within physical bounds + + :param besttrack_dataframe: ATCF dataframe containing track info + :param values: values for each forecast time (VT) + :param times: forecast times (VT) + :return: updated ATCF dataframe with perturbed values + """ + + all_values = besttrack_dataframe[self.name].values + values + bounded_result = [min(self.upper_bound, max(value, self.lower_bound)).magnitude for value in all_values] * self.unit + besttrack_dataframe[self.name] = bounded_result + + return besttrack_dataframe + + def __repr__(self) -> str: + return f'{self.__class__.__name__}(lower_bound={repr(self.lower_bound)}, upper_bound={repr(self.upper_bound)}, historical_forecast_errors={repr(self.historical_forecast_errors)}, default={repr(self.default)}, unit={repr(self.unit)})' class CentralPressure(BestTrackPerturbedVariable): @@ -88,143 +218,404 @@ class CentralPressure(BestTrackPerturbedVariable): class BackgroundPressure(BestTrackPerturbedVariable): name = 'background_pressure' - default = 1013.0 + + def __init__(self): + super().__init__( + default=1013.0, unit=units.millibar, + ) class MaximumSustainedWindSpeed(BestTrackPerturbedVariable): name = 'max_sustained_wind_speed' - random_type = RandomType.GAUSSIAN - lower_bound = 25 # [kt] - upper_bound = 165 # [kt] - historical_forecast_errors = { - '<50kt': DataFrame( - data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], - index=ERROR_INDICES_NO_60H, - columns=['mean error [kt]'], - ), - '50-95kt': DataFrame( - data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], - index=ERROR_INDICES_NO_60H, - columns=['mean error [kt]'], - ), - '>95kt': DataFrame( - data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], - index=ERROR_INDICES_NO_60H, - columns=['mean error [kt]'], - ), - } + perturbation_type = PerturbationType.GAUSSIAN + + def __init__(self): + super().__init__( + lower_bound=25, + upper_bound=165, + historical_forecast_errors={ + '<50kt': DataFrame( + {'mean error [kt]': [1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91]}, + index=ERROR_INDICES_NO_60H, + ), + '50-95kt': DataFrame( + {'mean error [kt]': [2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62]}, + index=ERROR_INDICES_NO_60H, + ), + '>95kt': DataFrame( + { + 'mean error [kt]': [ + 2.80, + 7.94, + 11.53, + 13.27, + 12.66, + 13.41, + 13.46, + 13.55, + ] + }, + index=ERROR_INDICES_NO_60H, + ), + }, + unit=units.knot, + ) class RadiusOfMaximumWinds(BestTrackPerturbedVariable): name = 'radius_of_maximum_winds' - random_type = RandomType.LINEAR - lower_bound = 5 # [nm] - upper_bound = 200 # [nm] - historical_forecast_errors = { - '<15sm': DataFrame( - data=transpose( - [ - [0.0, -13.82, -19.67, -21.37, -26.31, -32.71, -39.12, -46.80, -52.68], - [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], - ] - ) - * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], - index=ERROR_INDICES_60HR, - columns=['minimum error [nm]', 'maximum error [nm]'], - ), - '15-25sm': DataFrame( - data=transpose( - [ - [0.0, -10.47, -14.54, -20.35, -23.88, -21.78, -19.68, -24.24, -28.30], - [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], - ] + perturbation_type = PerturbationType.LINEAR + + def __init__(self): + super().__init__( + lower_bound=5, + upper_bound=200, + historical_forecast_errors={ + '<15sm': DataFrame( + { + 'minimum error [nm]': Series( + [ + 0.0, + -13.82, + -19.67, + -21.37, + -26.31, + -32.71, + -39.12, + -46.80, + -52.68, + ], + dtype=PintType(units.us_statute_mile), + ), + 'maximum error [nm]': Series( + [0.0, 1.27, 0.22, 1.02, 0.00, -2.59, -5.18, -7.15, -12.91], + dtype=PintType(units.us_statute_mile), + ), + }, + index=ERROR_INDICES_60HR, + ), + '15-25sm': DataFrame( + { + 'minimum error [nm]': Series( + [ + 0.0, + -10.47, + -14.54, + -20.35, + -23.88, + -21.78, + -19.68, + -24.24, + -28.30, + ], + dtype=PintType(units.us_statute_mile), + ), + 'maximum error [nm]': Series( + [0.0, 4.17, 6.70, 6.13, 6.54, 6.93, 7.32, 9.33, 8.03], + dtype=PintType(units.us_statute_mile), + ), + }, + index=ERROR_INDICES_60HR, + ), + '25-35sm': DataFrame( + { + 'minimum error [nm]': Series( + [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], + dtype=PintType(units.us_statute_mile), + ), + 'maximum error [nm]': Series( + [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], + dtype=PintType(units.us_statute_mile), + ), + }, + index=ERROR_INDICES_60HR, + ), + '35-45sm': DataFrame( + { + 'minimum error [nm]': Series( + [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], + index=ERROR_INDICES_60HR, + dtype=PintType(units.us_statute_mile), + ), + 'maximum error [nm]': Series( + [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], + index=ERROR_INDICES_60HR, + dtype=PintType(units.us_statute_mile), + ), + }, + ), + '>45sm': DataFrame( + { + 'minimum error [nm]': Series( + [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], + dtype=PintType(units.us_statute_mile), + ), + 'maximum error [nm]': Series( + [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], + dtype=PintType(units.us_statute_mile), + ), + }, + index=ERROR_INDICES_60HR, + ), + }, + unit=units.nautical_mile, + ) + + +class CrossTrack(BestTrackPerturbedVariable): + name = 'cross_track' + perturbation_type = PerturbationType.GAUSSIAN + + def __init__(self): + super().__init__( + lower_bound=-inf, + upper_bound=+inf, + historical_forecast_errors={ + '<50kt': DataFrame( + {'mean error [nm]': [1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91]}, + index=ERROR_INDICES_NO_60H, + ), + '50-95kt': DataFrame( + {'mean error [nm]': [2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62]}, + index=ERROR_INDICES_NO_60H, + ), + '>95kt': DataFrame( + { + 'mean error [nm]': [ + 2.80, + 7.94, + 11.53, + 13.27, + 12.66, + 13.41, + 13.46, + 13.55, + ] + }, + index=ERROR_INDICES_NO_60H, + ), + }, + unit=units.nautical_mile, + ) + + def perturb( + self, + besttrack_dataframe: DataFrame, + values: [float], + times: [datetime], + ) -> DataFrame: + """ + offset_track(df_,VT,cross_track_errors) + - Offsets points by a given perpendicular error/distance from the original track + + :param besttrack_dataframe: ATCF dataframe containing track info + :param values: cross-track errors [nm] for each forecast time (VT) + :param times: forecast times (VT) + :return: updated ATCF dataframe with different longitude latitude locations based on perpendicular offsets set by the cross_track_errors + """ + + # Get the coordinates of the track + track_coords = besttrack_dataframe[['longitude', 'latitude']].values.tolist() + + times = (times / timedelta(hours=1)).values * units.hours + + # loop over all coordinates + lon_new = list() + lat_new = list() + for track_coord_index in range(0, len(track_coords)): + # get the current cross_track_error + cross_track_error = values[track_coord_index].to(units.meter) + + # get the utm projection for the reference coordinate + utm_projection = utm_proj_from_lon(track_coords[track_coord_index][0]) + + # get the location of the original reference coordinate + x_ref, y_ref = ( + utm_projection( + track_coords[track_coord_index][0], + track_coords[track_coord_index][1], + inverse=False, + ) + * units.meter ) - * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], - index=ERROR_INDICES_60HR, - columns=['minimum error [nm]', 'maximum error [nm]'], - ), - '25-35sm': DataFrame( - data=transpose( - [ - [0.0, -8.57, -13.41, -10.87, -9.26, -9.34, -9.42, -7.41, -7.40], - [0.0, 8.21, 10.62, 13.93, 15.62, 16.04, 16.46, 16.51, 16.70], - ] + + # get the index of the previous forecasted coordinate + idx_p = track_coord_index - 1 + while idx_p >= 0: + if times[idx_p] < times[track_coord_index]: + break + idx_p = idx_p - 1 + if idx_p < 0: # beginning of track + idx_p = track_coord_index + + # get previous projected coordinate + x_p, y_p = ( + utm_projection(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False) + * units.meter ) - * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], - index=ERROR_INDICES_60HR, - columns=['minimum error [nm]', 'maximum error [nm]'], - ), - '35-45sm': DataFrame( - data=transpose( - [ - [0.0, -10.66, -7.64, -5.68, -3.25, -1.72, -0.19, 3.65, 2.59], - [0.0, 14.77, 17.85, 22.07, 27.60, 27.08, 26.56, 26.80, 28.30], - ] + + # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate + dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_track_error) + + # get the index of the next forecasted coordinate + idx_n = track_coord_index + 1 + while idx_n < len(track_coords): + if times[idx_n] > times[track_coord_index]: + break + idx_n = idx_n + 1 + if idx_n == len(track_coords): # end of track + idx_n = track_coord_index + + # get previous projected coordinate + x_n, y_n = ( + utm_projection(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False) + * units.meter ) - * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], - index=ERROR_INDICES_60HR, - columns=['minimum error [nm]', 'maximum error [nm]'], - ), - '>45sm': DataFrame( - data=transpose( - [ - [0.0, -15.36, -10.37, 3.14, 12.10, 12.21, 12.33, 6.66, 7.19], - [0.0, 21.43, 29.96, 37.22, 39.27, 39.10, 38.93, 34.40, 35.93], - ] + + # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate + dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_track_error) + + # get the perpendicular offset based on the average of the forward and backward piecewise track lines adjusted so that the distance matches the actual cross_error + dx = 0.5 * (dx_p + dx_n) + dy = 0.5 * (dy_p + dy_n) + alpha = (abs(cross_track_error) / numpy.sqrt(dx ** 2 + dy ** 2)).magnitude + + # compute the next point and retrieve back the lat-lon geographic coordinate + lon, lat = utm_projection( + (x_ref + alpha * dx).magnitude, (y_ref + alpha * dy).magnitude, inverse=True ) - * UNIT_CONVERSIONS['statute_mile']['nautical_mile'], - index=ERROR_INDICES_60HR, - columns=['minimum error [nm]', 'maximum error [nm]'], - ), - } + lon_new.append(lon) + lat_new.append(lat) + besttrack_dataframe['longitude'] = lon_new + besttrack_dataframe['latitude'] = lat_new -class CrossTrack(BestTrackPerturbedVariable): - name = 'cross_track' - random_type = RandomType.GAUSSIAN - lower_bound = -inf - upper_bound = +inf - historical_forecast_errors = { - '<50kt': DataFrame( - data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], - index=ERROR_INDICES_NO_60H, - columns=['mean error [nm]'], - ), - '50-95kt': DataFrame( - data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], - index=ERROR_INDICES_NO_60H, - columns=['mean error [nm]'], - ), - '>95kt': DataFrame( - data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], - index=ERROR_INDICES_NO_60H, - columns=['mean error [nm]'], - ), - } + return besttrack_dataframe class AlongTrack(BestTrackPerturbedVariable): name = 'along_track' - random_type = RandomType.GAUSSIAN - lower_bound = -inf - upper_bound = +inf - historical_forecast_errors = { - '<50kt': DataFrame( - data=[1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91], - index=ERROR_INDICES_NO_60H, - columns=['mean error [nm]'], - ), - '50-95kt': DataFrame( - data=[2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62], - index=ERROR_INDICES_NO_60H, - columns=['mean error [nm]'], - ), - '>95kt': DataFrame( - data=[2.80, 7.94, 11.53, 13.27, 12.66, 13.41, 13.46, 13.55], - index=ERROR_INDICES_NO_60H, - columns=['mean error [nm]'], - ), - } + perturbation_type = PerturbationType.GAUSSIAN + + def __init__(self): + super().__init__( + lower_bound=-inf, + upper_bound=+inf, + historical_forecast_errors={ + '<50kt': DataFrame( + {'mean error [nm]': [1.45, 4.01, 6.17, 8.42, 10.46, 14.28, 18.26, 19.91]}, + index=ERROR_INDICES_NO_60H, + ), + '50-95kt': DataFrame( + {'mean error [nm]': [2.26, 5.75, 8.54, 9.97, 11.28, 13.11, 13.46, 12.62]}, + index=ERROR_INDICES_NO_60H, + ), + '>95kt': DataFrame( + { + 'mean error [nm]': [ + 2.80, + 7.94, + 11.53, + 13.27, + 12.66, + 13.41, + 13.46, + 13.55, + ] + }, + index=ERROR_INDICES_NO_60H, + ), + }, + unit=units.nautical_mile, + ) + + def perturb( + self, + besttrack_dataframe: DataFrame, + values: [float], + times: [datetime], + ) -> DataFrame: + """ + interpolate_along_track(df_,VT,along_track_errros) + Offsets points by a given error/distance by interpolating along the track + + :param besttrack_dataframe: ATCF dataframe containing track info + :param values: along-track errors for each forecast time (VT) + :param times: forecast timed (VT) + :return: updated ATCF dataframe with different longitude latitude locations based on interpolated errors along track + """ + + max_interpolated_points = 5 # maximum number of pts along line for each interpolation + + # Get the coordinates of the track + along_track_coordinates = besttrack_dataframe[['longitude', 'latitude']].values.tolist() + + times = (times / timedelta(hours=1)).values + + # Extrapolating the track for negative errors at beginning and positive errors at end of track + for vt_index in range(0, len(times)): + if times[vt_index] == 0 and times[vt_index + 1] > 0: + # append point to the beginning for going in negative direction + p1 = along_track_coordinates[vt_index] + p2 = along_track_coordinates[vt_index + 1] + ps = [ + p1[0] - max_interpolated_points * (p2[0] - p1[0]), + p1[1] - max_interpolated_points * (p2[1] - p1[1]), + ] + if times[vt_index] == times[-1] and times[vt_index - 1] < times[-1]: + # append point to the end going in positive direction + p1 = along_track_coordinates[vt_index - 1] + p2 = along_track_coordinates[vt_index] + pe = [ + p1[0] + max_interpolated_points * (p2[0] - p1[0]), + p1[1] + max_interpolated_points * (p2[1] - p1[1]), + ] + + along_track_coordinates.insert(0, ps) + along_track_coordinates.append(pe) + + # adding pseudo-VT times to the ends + times = insert(times, 0, times[0] - 6) + times = append(times, times[-1] + 6) + + # loop over all coordinates + lon_new = list() + lat_new = list() + for track_coord_index in range(1, len(along_track_coordinates) - 1): + # get the utm projection for middle longitude + utm_projection = utm_proj_from_lon(along_track_coordinates[track_coord_index][0]) + along_error = values[track_coord_index - 1].to(units.meter) + along_sign = int(sign(along_error)) + + pts = list() + ind = track_coord_index + while len(pts) < max_interpolated_points: + if ind < 0 or ind > len(along_track_coordinates) - 1: + break # reached end of line + if ind == track_coord_index or times[ind] != times[ind - along_sign]: + # get the x,y utm coordinate for this line string + x_utm, y_utm = utm_projection( + along_track_coordinates[ind][0], along_track_coordinates[ind][1], inverse=False + ) + pts.append((x_utm, y_utm)) + ind = ind + along_sign + + # make the temporary line segment + line_segment = LineString([pts[pp] for pp in range(0, len(pts))]) + + # interpolate a distance "along_error" along the line + pnew = line_segment.interpolate(abs(along_error.magnitude)) + + # get back lat-lon + lon, lat = utm_projection(pnew.coords[0][0], pnew.coords[0][1], inverse=True, ) + + lon_new.append(lon) + lat_new.append(lat) + + besttrack_dataframe['longitude'] = lon_new + besttrack_dataframe['latitude'] = lat_new + + return besttrack_dataframe class BestTrackPerturber: @@ -346,10 +737,10 @@ def write( self.forcing.write(directory / 'original.22', overwrite=True) # Get the initial intensity and size - storm_strength = self.vmax_intensity_class( + storm_strength = storm_intensity_class( self.compute_initial(MaximumSustainedWindSpeed.name), ) - storm_size = self.rmax_size_class(self.compute_initial(RadiusOfMaximumWinds.name)) + storm_size = storm_size_class(self.compute_initial(RadiusOfMaximumWinds.name)) print(f'Initial storm strength: {storm_strength}') print(f'Initial storm size: {storm_size}') @@ -357,65 +748,83 @@ def write( # extracting original dataframe df_original = self.forcing.df - # modifying the central pressure while subsequently changing - # Vmax using the same Holland B parameter, - # writing each to a new fort.22 + # add units to data frame + df_original = df_original.astype({ + variable.name: PintType(variable.unit) + for variable in variables if variable.name in df_original + }, copy=False) + + # for each variable, perturb the values and write each to a new `fort.22` for variable in variables: print(f'writing perturbations for "{variable.name}"') - # print(min(df_original[var])) - # print(max(df_original[var])) - # Make the random pertubations based on the historical forecast errors # Interpolate from the given VT to the storm_VT - # print(forecast_errors[var][Initial_Vmax]) - if issubclass(variable, RadiusOfMaximumWinds): + if isinstance(variable, RadiusOfMaximumWinds): storm_classification = storm_size else: storm_classification = storm_strength - xp = variable.historical_forecast_errors[storm_classification].index - yp = variable.historical_forecast_errors[storm_classification].values + historical_forecast_errors = variable.historical_forecast_errors[ + storm_classification + ] + for column in historical_forecast_errors: + if isinstance(historical_forecast_errors[column].dtype, PintType): + historical_forecast_errors[column] = historical_forecast_errors[ + column + ].pint.magnitude + + xp = historical_forecast_errors.index + yp = historical_forecast_errors.values base_errors = [ interp(self.validation_time / timedelta(hours=1), xp, yp[:, ncol]) for ncol in range(len(yp[0])) ] - # print(base_errors) - for perturbation_index in range(1, number_of_perturbations + 1): # make a deepcopy to preserve the original dataframe - df_modified = deepcopy(df_original) + df_modified = df_original.copy(deep=True) + df_modified = df_modified.astype({ + variable.name: PintType(variable.unit) + for variable in variables if variable.name in df_original + }, copy=False) # get the random perturbation sample - if variable.random_type == RandomType.GAUSSIAN: + if variable.perturbation_type == PerturbationType.GAUSSIAN: alpha = gauss(0, 1) / 0.7979 - # mean_abs_error = 0.7979 * sigma print(f'Random gaussian variable = {alpha}') + perturbation = base_errors[0] * alpha + if variable.unit is not None and variable.unit != units.dimensionless: + perturbation *= variable.unit # add the error to the variable with bounds to some physical constraints - df_modified = self.perturb_bound( - df_modified, perturbation=base_errors[0] * alpha, variable=variable, + df_modified = variable.perturb( + df_modified, values=perturbation, times=self.validation_time, ) - elif variable.random_type == RandomType.LINEAR: + elif variable.perturbation_type == PerturbationType.LINEAR: alpha = random() print(f'Random number in [0,1) = {alpha}') + perturbation = -(base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha) + if variable.unit is not None and variable.unit != units.dimensionless: + perturbation *= variable.unit # subtract the error from the variable with physical constraint bounds - df_modified = self.perturb_bound( + df_modified = variable.perturb( df_modified, - perturbation=-( - base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha - ), - variable=variable, + values=perturbation, + times=self.validation_time, ) - if issubclass(variable, MaximumSustainedWindSpeed): - # In case of Vmax need to change the central pressure - # incongruence with it (obeying Holland B relationship) + if isinstance(variable, MaximumSustainedWindSpeed): + # In case of Vmax need to change the central pressure incongruence with it (obeying Holland B relationship) df_modified[CentralPressure.name] = self.compute_pc_from_Vmax(df_modified) + # remove units from data frame + for column in df_modified: + if isinstance(df_modified[column].dtype, PintType): + df_modified[column] = df_modified[column].pint.magnitude + # reset the dataframe self.forcing._df = df_modified @@ -436,248 +845,60 @@ def compute_initial(self, var: str) -> float: @property def holland_B(self) -> float: """ Compute Holland B at each time snap """ - df_test = self.forcing.df - Vmax = ( - df_test[MaximumSustainedWindSpeed.name] - * UNIT_CONVERSIONS['knot']['meter_per_second'] - ) - DelP = ( - df_test[BackgroundPressure.name] - df_test[CentralPressure.name] - ) * UNIT_CONVERSIONS['millibar']['pascal'] + dataframe = self.forcing.df + Vmax = dataframe[MaximumSustainedWindSpeed.name] + DelP = dataframe[BackgroundPressure.name] - dataframe[CentralPressure.name] B = Vmax * Vmax * AIR_DENSITY * E1 / DelP return B def compute_pc_from_Vmax(self, dataframe: DataFrame) -> float: """ Compute central pressure from Vmax based on Holland B """ - Vmax = ( - dataframe[MaximumSustainedWindSpeed.name] - * UNIT_CONVERSIONS['knot']['meter_per_second'] - ) - DelP = Vmax * Vmax * AIR_DENSITY * E1 / self.holland_B - pc = dataframe[BackgroundPressure.name] - DelP * UNIT_CONVERSIONS['pascal']['millibar'] + Vmax = dataframe[MaximumSustainedWindSpeed.name] + DelP = Vmax ** 2 * AIR_DENSITY * E1 / self.holland_B + pc = dataframe[BackgroundPressure.name] - DelP return pc - def perturb_bound( - self, - dataframe: DataFrame, - perturbation: [float], - variable: BestTrackPerturbedVariable, - ): - """ perturbing the variable with physical bounds """ - if issubclass(variable, AlongTrack): - dataframe = self.interpolate_along_track( - dataframe, along_track_errors=perturbation - ) - elif issubclass(variable, CrossTrack): - dataframe = self.offset_track(dataframe, cross_track_errors=perturbation) - else: - test_list = dataframe[variable.name] + perturbation - bounded_result = [ - min(variable.upper_bound, max(ele, variable.lower_bound)) for ele in test_list - ] - dataframe[variable.name] = bounded_result - return dataframe - - def interpolate_along_track(self, dataframe, along_track_errors: [float]) -> DataFrame: - """ - interpolate_along_track(df_,VT,along_track_errros) - Offsets points by a given error/distance by interpolating along the track - - :param dataframe: ATCF dataframe containing track info - :param along_track_errors: along-track errors for each forecast time (VT) - :return: updated ATCF dataframe with different longitude latitude locations based on interpolated errors along track - """ - - interp_pts = 5 # maximum number of pts along line for each interpolation - - # Get the coordinates of the track - track_coords = dataframe[['longitude', 'latitude']].values.tolist() - - VT = (self.validation_time / timedelta(hours=1)).values - - # Extrapolating the track for negative errors at beginning and positive errors at end of track - for vt_index in range(0, len(VT)): - if VT[vt_index] == 0 and VT[vt_index + 1] > 0: - # append point to the beginning for going in negative direction - p1 = track_coords[vt_index] - p2 = track_coords[vt_index + 1] - ps = [ - p1[0] - interp_pts * (p2[0] - p1[0]), - p1[1] - interp_pts * (p2[1] - p1[1]), - ] - if VT[vt_index] == VT[-1] and VT[vt_index - 1] < VT[-1]: - # append point to the end going in positive direction - p1 = track_coords[vt_index - 1] - p2 = track_coords[vt_index] - pe = [ - p1[0] + interp_pts * (p2[0] - p1[0]), - p1[1] + interp_pts * (p2[1] - p1[1]), - ] - - track_coords.insert(0, ps) - track_coords.append(pe) - - # adding pseudo-VT times to the ends - VT = insert(VT, 0, VT[0] - 6) - VT = append(VT, VT[-1] + 6) - - # print(track_coords) - # print(VT) - # print(along_track_errors) - - # loop over all coordinates - lon_new = list() - lat_new = list() - for track_coord_index in range(1, len(track_coords) - 1): - # get the utm projection for middle longitude - myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) - along_error = ( - along_track_errors[track_coord_index - 1] - * UNIT_CONVERSIONS['nautical_mile']['meter'] - ) - along_sign = int(sign(along_error)) - - pts = list() - ind = track_coord_index - while len(pts) < interp_pts: - if ind < 0 or ind > len(track_coords) - 1: - break # reached end of line - if ind == track_coord_index or VT[ind] != VT[ind - along_sign]: - # get the x,y utm coordinate for this line string - x_utm, y_utm = myProj( - track_coords[ind][0], track_coords[ind][1], inverse=False - ) - pts.append((x_utm, y_utm)) - ind = ind + along_sign - - # make the temporary line segment - line_segment = LineString([pts[pp] for pp in range(0, len(pts))]) - - # interpolate a distance "along_error" along the line - pnew = line_segment.interpolate(abs(along_error)) - - # get back lat-lon - lon, lat = myProj(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) - - # print(track_coords[idx-1:idx+2]) - # print(along_error/111e3) - # print(new_coords]) - - lon_new.append(lon) - lat_new.append(lat) - - # print([lon_new, lat_new]) - - dataframe['longitude'] = lon_new - dataframe['latitude'] = lat_new - - return dataframe - - def offset_track(self, dataframe, cross_track_errors: [float]) -> DataFrame: - """ - offset_track(df_,VT,cross_track_errors) - - Offsets points by a given perpendicular error/distance from the original track - - :param dataframe: ATCF dataframe containing track info - :param cross_track_errors: cross-track errors [nm] for each forecast time (VT) - :return: updated ATCF dataframe with different longitude latitude locations based on perpendicular offsets set by the cross_track_errors - """ - - # Get the coordinates of the track - track_coords = dataframe[['longitude', 'latitude']].values.tolist() - - VT = (self.validation_time / timedelta(hours=1)).values - - # loop over all coordinates - lon_new = list() - lat_new = list() - for track_coord_index in range(0, len(track_coords)): - # get the current cross_track_error - cross_error = ( - cross_track_errors[track_coord_index] - * UNIT_CONVERSIONS['nautical_mile']['meter'] - ) - - # get the utm projection for the reference coordinate - myProj = utm_proj_from_lon(track_coords[track_coord_index][0]) - - # get the location of the original reference coordinate - x_ref, y_ref = myProj( - track_coords[track_coord_index][0], - track_coords[track_coord_index][1], - inverse=False, - ) - # get the index of the previous forecasted coordinate - idx_p = track_coord_index - 1 - while idx_p >= 0: - if VT[idx_p] < VT[track_coord_index]: - break - idx_p = idx_p - 1 - if idx_p < 0: # beginning of track - idx_p = track_coord_index - - # get previous projected coordinate - x_p, y_p = myProj(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False,) +def storm_intensity_class(max_sustained_wind_speed: float) -> str: + """ + Category for Vmax based intensity - # get the perpendicular offset based on the line connecting from the previous coordinate to the current coordinate - dx_p, dy_p = get_offset(x_p, y_p, x_ref, y_ref, cross_error) + :param max_sustained_wind_speed: maximum sustained wind speed, in knots + :return: intensity classification + """ - # get the index of the next forecasted coordinate - idx_n = track_coord_index + 1 - while idx_n < len(track_coords): - if VT[idx_n] > VT[track_coord_index]: - break - idx_n = idx_n + 1 - if idx_n == len(track_coords): # end of track - idx_n = track_coord_index + if not isinstance(max_sustained_wind_speed, pint.Quantity): + max_sustained_wind_speed *= units.knot - # get previous projected coordinate - x_n, y_n = myProj(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False,) + if max_sustained_wind_speed < 50 * units.knot: + return '<50kt' # weak + elif max_sustained_wind_speed <= 95 * units.knot: + return '50-95kt' # medium + else: + return '>95kt' # strong - # get the perpendicular offset based on the line connecting from the current coordinate to the next coordinate - dx_n, dy_n = get_offset(x_ref, y_ref, x_n, y_n, cross_error) - # get the perpendicular offset based on the average of the forward and backward piecewise track lines adjusted so that the distance matches the actual cross_error - dx = 0.5 * (dx_p + dx_n) - dy = 0.5 * (dy_p + dy_n) - alpha = abs(cross_error) / sqrt(dx ** 2 + dy ** 2) +def storm_size_class(radius_of_maximum_winds: float) -> str: + """ + Category for Rmax based size - # compute the next point and retrieve back the lat-lon geographic coordinate - lon, lat = myProj(x_ref + alpha * dx, y_ref + alpha * dy, inverse=True,) - lon_new.append(lon) - lat_new.append(lat) + :param radius_of_maximum_winds: radius of maximum winds, in nautical miles + :return: size classification + """ - dataframe['longitude'] = lon_new - dataframe['latitude'] = lat_new - - return dataframe - - @staticmethod - def vmax_intensity_class(vmax: float) -> str: - """ Category for Vmax based intensity """ - if vmax < 50: - return '<50kt' # weak - elif vmax > 95: - return '>95kt' # strong - else: - return '50-95kt' # medium - - @staticmethod - def rmax_size_class(rmax: float) -> str: - """ Category for Rmax based size """ - # convert from nautical miles to statute miles - rmw_sm = rmax * UNIT_CONVERSIONS['nautical_mile']['statute_mile'] - if rmw_sm < 15: - return '<15sm' # very small - elif rmw_sm < 25: - return '15-25sm' # small - elif rmw_sm < 35: - return '25-35sm' # medium - elif rmw_sm < 45: - return '35-45sm' # large - else: - return '>45sm' # very large + if not isinstance(radius_of_maximum_winds, pint.Quantity): + radius_of_maximum_winds *= units.nautical_mile + + if radius_of_maximum_winds < 15 * units.us_statute_mile: + return '<15sm' # very small + elif radius_of_maximum_winds < 25 * units.us_statute_mile: + return '15-25sm' # small + elif radius_of_maximum_winds < 35 * units.us_statute_mile: + return '25-35sm' # medium + elif radius_of_maximum_winds <= 45 * units.us_statute_mile: + return '35-45sm' # large + else: + return '>45sm' # very large def utm_proj_from_lon(lon_mean: float) -> Proj: @@ -691,16 +912,16 @@ def utm_proj_from_lon(lon_mean: float) -> Proj: """ zone = floor((lon_mean + 180) / 6) + 1 - # print("Zone is " + str(zone)) return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') -def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): +def get_offset(x1: float, y1: float, x2: float, y2: float, d: float, ) -> (float, float): """ get_offset(x1,y1,x2,y2,d) - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d """ + if x1 == x2: dx = d dy = 0 @@ -748,10 +969,10 @@ def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, # hardcoding variable list for now variables = [ - MaximumSustainedWindSpeed, - RadiusOfMaximumWinds, - AlongTrack, - CrossTrack, + MaximumSustainedWindSpeed(), + RadiusOfMaximumWinds(), + AlongTrack(), + CrossTrack(), ] perturber = BestTrackPerturber( diff --git a/setup.py b/setup.py index c4f3aafe..ba02895b 100644 --- a/setup.py +++ b/setup.py @@ -89,6 +89,8 @@ 'netcdf4', 'numpy', 'pandas', + 'pint', + 'pint-pandas', 'pyproj>=2.6', 'requests', 'requests_futures', diff --git a/tests/__init__.py b/tests/__init__.py index 0bf751ce..a502459b 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,6 +1,7 @@ from difflib import Differ from os import PathLike from pathlib import Path +import re DATA_DIRECTORY = Path(__file__).parent / 'data' From 46f0321bbf2ce9360fffc1590a3ca9aa3ea19022 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Thu, 10 Jun 2021 15:52:01 +0000 Subject: [PATCH 09/29] Fix code style issues with oitnb --- .../perturbation/make_storm_ensemble.py | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 51175030..accbe594 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -188,10 +188,7 @@ def default(self, default: float): self.__default = default def perturb( - self, - besttrack_dataframe: DataFrame, - values: [float], - times: [datetime], + self, besttrack_dataframe: DataFrame, values: [float], times: [datetime], ) -> DataFrame: """ perturb the variable within physical bounds @@ -203,7 +200,10 @@ def perturb( """ all_values = besttrack_dataframe[self.name].values + values - bounded_result = [min(self.upper_bound, max(value, self.lower_bound)).magnitude for value in all_values] * self.unit + bounded_result = [ + min(self.upper_bound, max(value, self.lower_bound)).magnitude + for value in all_values + ] * self.unit besttrack_dataframe[self.name] = bounded_result return besttrack_dataframe @@ -399,10 +399,7 @@ def __init__(self): ) def perturb( - self, - besttrack_dataframe: DataFrame, - values: [float], - times: [datetime], + self, besttrack_dataframe: DataFrame, values: [float], times: [datetime], ) -> DataFrame: """ offset_track(df_,VT,cross_track_errors) @@ -530,10 +527,7 @@ def __init__(self): ) def perturb( - self, - besttrack_dataframe: DataFrame, - values: [float], - times: [datetime], + self, besttrack_dataframe: DataFrame, values: [float], times: [datetime], ) -> DataFrame: """ interpolate_along_track(df_,VT,along_track_errros) @@ -548,7 +542,9 @@ def perturb( max_interpolated_points = 5 # maximum number of pts along line for each interpolation # Get the coordinates of the track - along_track_coordinates = besttrack_dataframe[['longitude', 'latitude']].values.tolist() + along_track_coordinates = besttrack_dataframe[ + ['longitude', 'latitude'] + ].values.tolist() times = (times / timedelta(hours=1)).values @@ -595,7 +591,9 @@ def perturb( if ind == track_coord_index or times[ind] != times[ind - along_sign]: # get the x,y utm coordinate for this line string x_utm, y_utm = utm_projection( - along_track_coordinates[ind][0], along_track_coordinates[ind][1], inverse=False + along_track_coordinates[ind][0], + along_track_coordinates[ind][1], + inverse=False, ) pts.append((x_utm, y_utm)) ind = ind + along_sign @@ -607,7 +605,7 @@ def perturb( pnew = line_segment.interpolate(abs(along_error.magnitude)) # get back lat-lon - lon, lat = utm_projection(pnew.coords[0][0], pnew.coords[0][1], inverse=True, ) + lon, lat = utm_projection(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) lon_new.append(lon) lat_new.append(lat) @@ -749,10 +747,14 @@ def write( df_original = self.forcing.df # add units to data frame - df_original = df_original.astype({ - variable.name: PintType(variable.unit) - for variable in variables if variable.name in df_original - }, copy=False) + df_original = df_original.astype( + { + variable.name: PintType(variable.unit) + for variable in variables + if variable.name in df_original + }, + copy=False, + ) # for each variable, perturb the values and write each to a new `fort.22` for variable in variables: @@ -783,10 +785,14 @@ def write( for perturbation_index in range(1, number_of_perturbations + 1): # make a deepcopy to preserve the original dataframe df_modified = df_original.copy(deep=True) - df_modified = df_modified.astype({ - variable.name: PintType(variable.unit) - for variable in variables if variable.name in df_original - }, copy=False) + df_modified = df_modified.astype( + { + variable.name: PintType(variable.unit) + for variable in variables + if variable.name in df_original + }, + copy=False, + ) # get the random perturbation sample if variable.perturbation_type == PerturbationType.GAUSSIAN: @@ -811,9 +817,7 @@ def write( # subtract the error from the variable with physical constraint bounds df_modified = variable.perturb( - df_modified, - values=perturbation, - times=self.validation_time, + df_modified, values=perturbation, times=self.validation_time, ) if isinstance(variable, MaximumSustainedWindSpeed): @@ -916,7 +920,7 @@ def utm_proj_from_lon(lon_mean: float) -> Proj: return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') -def get_offset(x1: float, y1: float, x2: float, y2: float, d: float, ) -> (float, float): +def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): """ get_offset(x1,y1,x2,y2,d) - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d From 6cdbdf1aea0546b5ffc04b5dc04cee10e6dc178a Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Thu, 10 Jun 2021 13:46:42 -0400 Subject: [PATCH 10/29] rename validation time property --- ensembleperturbation/perturbation/make_storm_ensemble.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index accbe594..c99d7ded 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -778,7 +778,7 @@ def write( xp = historical_forecast_errors.index yp = historical_forecast_errors.values base_errors = [ - interp(self.validation_time / timedelta(hours=1), xp, yp[:, ncol]) + interp(self.validation_times / timedelta(hours=1), xp, yp[:, ncol]) for ncol in range(len(yp[0])) ] @@ -805,7 +805,7 @@ def write( # add the error to the variable with bounds to some physical constraints df_modified = variable.perturb( - df_modified, values=perturbation, times=self.validation_time, + df_modified, values=perturbation, times=self.validation_times, ) elif variable.perturbation_type == PerturbationType.LINEAR: alpha = random() @@ -817,7 +817,7 @@ def write( # subtract the error from the variable with physical constraint bounds df_modified = variable.perturb( - df_modified, values=perturbation, times=self.validation_time, + df_modified, values=perturbation, times=self.validation_times, ) if isinstance(variable, MaximumSustainedWindSpeed): @@ -838,7 +838,7 @@ def write( ) @property - def validation_time(self) -> timedelta: + def validation_times(self) -> [timedelta]: """ get the validation time of storm """ return self.forcing.datetime - self.forcing.start_date From d1aaf38a5c0f49e2cdc797275c7117a969ef7c96 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Thu, 10 Jun 2021 14:01:40 -0400 Subject: [PATCH 11/29] re-enable test with deterministic run --- .github/workflows/tests.yml | 2 +- .../perturbation/make_storm_ensemble.py | 24 ++- .../test_besttrack_ensemble/along_track_1.22 | 140 +++++++++--------- .../test_besttrack_ensemble/along_track_2.22 | 140 +++++++++--------- .../test_besttrack_ensemble/along_track_3.22 | 140 +++++++++--------- .../test_besttrack_ensemble/cross_track_1.22 | 58 ++++---- .../test_besttrack_ensemble/cross_track_2.22 | 128 ++++++++-------- .../test_besttrack_ensemble/cross_track_3.22 | 140 +++++++++--------- .../max_sustained_wind_speed_1.22 | 140 +++++++++--------- .../max_sustained_wind_speed_2.22 | 140 +++++++++--------- .../max_sustained_wind_speed_3.22 | 140 +++++++++--------- .../radius_of_maximum_winds_1.22 | 132 ++++++++--------- .../radius_of_maximum_winds_2.22 | 134 ++++++++--------- .../radius_of_maximum_winds_3.22 | 130 ++++++++-------- tests/test_besttrack_ensemble.py | 2 +- 15 files changed, 799 insertions(+), 791 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6b6ad53a..dc15150c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,7 +41,7 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Run tests with coverage - run: pytest --cov=ensembleperturbation --numprocesses auto --ignore=tests/test_besttrack_ensemble.py + run: pytest --cov=ensembleperturbation --numprocesses auto - name: Upload coverage to Codecov if: matrix.python-version == 3.9 uses: codecov/codecov-action@v1 diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index c99d7ded..fea804e5 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -200,11 +200,10 @@ def perturb( """ all_values = besttrack_dataframe[self.name].values + values - bounded_result = [ + besttrack_dataframe[self.name] = [ min(self.upper_bound, max(value, self.lower_bound)).magnitude for value in all_values ] * self.unit - besttrack_dataframe[self.name] = bounded_result return besttrack_dataframe @@ -717,15 +716,22 @@ def write( number_of_perturbations: int, variables: [BestTrackPerturbedVariable], directory: PathLike = None, + alpha: float = None, ): """ :param number_of_perturbations: number of perturbations to create :param variables: list of variable names, any combination of `["max_sustained_wind_speed", "radius_of_maximum_winds", "along_track", "cross_track"]` :param directory: directory to which to write + :param alpha: value between [0, 1) with which to multiply error for perturbation; leave None for random """ if number_of_perturbations is not None: number_of_perturbations = int(number_of_perturbations) + + for index, variable in enumerate(variables): + if isinstance(variable, type): + variables[index] = variable() + if directory is None: directory = Path.cwd() elif not isinstance(directory, Path): @@ -796,7 +802,8 @@ def write( # get the random perturbation sample if variable.perturbation_type == PerturbationType.GAUSSIAN: - alpha = gauss(0, 1) / 0.7979 + if alpha is None: + alpha = gauss(0, 1) / 0.7979 print(f'Random gaussian variable = {alpha}') perturbation = base_errors[0] * alpha @@ -808,7 +815,8 @@ def write( df_modified, values=perturbation, times=self.validation_times, ) elif variable.perturbation_type == PerturbationType.LINEAR: - alpha = random() + if alpha is None: + alpha = random() print(f'Random number in [0,1) = {alpha}') perturbation = -(base_errors[0] * (1.0 - alpha) + base_errors[1] * alpha) @@ -973,10 +981,10 @@ def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, # hardcoding variable list for now variables = [ - MaximumSustainedWindSpeed(), - RadiusOfMaximumWinds(), - AlongTrack(), - CrossTrack(), + MaximumSustainedWindSpeed, + RadiusOfMaximumWinds, + AlongTrack, + CrossTrack, ] perturber = BestTrackPerturber( diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 index 41528ed5..9219ad44 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 278N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 278N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 278N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 286N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 286N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 286N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 293N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 293N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 293N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 303N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 303N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 303N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 314N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 314N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 314N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 330N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 330N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 330N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 335N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 335N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 335N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 339N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 339N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 339N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 800W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 806W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 813W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 340N, 820W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 349N, 821W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 363N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 377N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 387N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 394N, 806W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 412N, 769W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 421N, 734W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 803W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 809W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 816W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 342N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 351N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 365N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 379N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 index 2d6f3170..9219ad44 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 264N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 271N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 278N, 679W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 278N, 679W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 278N, 679W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 286N, 693W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 286N, 693W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 286N, 693W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 293N, 705W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 293N, 705W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 293N, 705W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 303N, 717W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 303N, 717W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 303N, 717W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 314N, 730W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 314N, 730W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 314N, 730W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 323N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 330N, 749W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 330N, 749W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 330N, 749W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 335N, 758W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 335N, 758W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 335N, 758W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 339N, 763W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 339N, 763W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 339N, 763W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 770W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 776W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 782W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 786W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 791W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 793W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 793W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 796W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 800W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 806W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 813W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 340N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 348N, 821W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 362N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 376N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 386N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 394N, 806W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 412N, 769W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 421N, 734W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 803W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 809W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 816W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 342N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 351N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 365N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 379N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 index c7dd8bb5..9219ad44 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 619W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 619W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 619W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 634W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 634W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 634W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 266N, 650W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 266N, 650W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 266N, 650W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 273N, 667W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 273N, 667W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 273N, 667W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 281N, 685W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 281N, 685W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 281N, 685W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 289N, 699W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 289N, 699W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 289N, 699W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 297N, 711W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 297N, 711W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 297N, 711W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 307N, 723W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 307N, 723W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 307N, 723W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 318N, 736W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 318N, 736W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 318N, 736W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 327N, 746W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 327N, 746W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 327N, 746W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 333N, 756W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 333N, 756W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 333N, 756W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 339N, 764W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 339N, 764W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 339N, 764W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 341N, 771W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 771W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 771W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 341N, 778W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 778W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 778W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 340N, 783W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 340N, 783W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 340N, 783W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 339N, 785W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 339N, 785W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 339N, 785W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 338N, 789W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 338N, 789W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 338N, 789W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 336N, 793W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 336N, 793W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 336N, 799W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 336N, 799W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 801W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 801W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 804W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 804W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 808W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 814W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 339N, 819W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 346N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 355N, 823W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 369N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 383N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 390N, 814W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 397N, 799W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 414N, 761W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 424N, 726W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 803W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 809W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 816W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 342N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 351N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 365N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 379N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 index 4b9ca1d1..f4d8ea08 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 @@ -34,37 +34,37 @@ AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 820W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 337N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 337N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 337N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 387N, 819W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091718, , BEST, 162, 387N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 421N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091812, , BEST, 180, 421N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 index f648e81c..f4d8ea08 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 @@ -4,67 +4,67 @@ AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 266N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 266N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 266N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 273N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 273N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 273N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 280N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 280N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 280N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 288N, 693W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 288N, 693W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 288N, 693W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 295N, 705W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 295N, 705W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 295N, 705W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 305N, 717W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 305N, 717W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 305N, 717W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 316N, 730W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 316N, 730W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 316N, 730W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 325N, 740W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 325N, 740W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 325N, 740W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 332N, 749W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 332N, 749W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 332N, 749W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 337N, 758W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 337N, 758W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 337N, 758W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 341N, 763W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 763W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 763W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 344N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 344N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 344N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 344N, 779W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 344N, 779W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 344N, 779W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 342N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 342N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 342N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 341N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 341N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 338N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 338N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 338N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 338N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 338N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 338N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 338N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 338N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 338N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 818W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 819W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 823W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 377N, 819W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 386N, 817W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 393N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 411N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 420N, 730W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 337N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 337N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 337N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 387N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 421N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 index 8665326a..f4d8ea08 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 255N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 264N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 264N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 264N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 271N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 271N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 271N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 278N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 278N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 278N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 286N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 286N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 286N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 293N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 293N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 293N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 303N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 303N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 303N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 314N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 314N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 314N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 323N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 323N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 323N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 330N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 330N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 330N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 335N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 335N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 335N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 339N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 339N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 339N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 341N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 341N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 341N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 340N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 339N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 338N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 338N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 336N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 336N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 335N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 335N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 335N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 335N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 335N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 335N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 335N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 340N, 822W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 349N, 823W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 823W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 734W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 337N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 337N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 337N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 387N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 421N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 index f45fbbbf..d4123729 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 118, 941, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 118, 941, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 118, 941, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 120, 944, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 120, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 120, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 133, 939, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 133, 939, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 133, 939, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 140, 925, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 140, 925, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 140, 925, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 132, 929, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 132, 929, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 132, 929, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 128, 930, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 128, 930, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 128, 930, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 129, 929, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 129, 929, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 129, 929, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 123, 933, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 123, 933, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 123, 933, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 118, 941, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 118, 941, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 118, 941, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 113, 940, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 113, 940, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 113, 940, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 108, 937, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 108, 937, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 108, 937, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 103, 934, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 103, 934, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 103, 934, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 104, 932, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 104, 932, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 104, 932, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 99, 931, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 99, 931, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 99, 931, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 94, 935, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 94, 935, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 94, 935, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 94, 937, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 94, 937, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 94, 937, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 79, 949, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 79, 949, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 79, 949, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 74, 960, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 74, 960, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 69, 971, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 69, 971, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 69, 980, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 69, 980, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 64, 987, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 64, 987, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 59, 987, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 54, 988, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 49, 992, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 44, 998, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 39, 999, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 39, 1001, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 39, 1001, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 39, 1001, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 39, 1001, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 39, 999, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 39, 996, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 52, 993, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 47, 994, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 42, 997, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 37, 1002, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 32, 1003, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 32, 1005, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 32, 1003, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 32, 1002, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 index 514c90b2..d4123729 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 111, 948, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 111, 948, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 111, 948, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 108, 957, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 108, 957, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 108, 957, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 115, 957, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 115, 957, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 115, 957, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 118, 950, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 118, 950, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 118, 950, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 105, 958, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 105, 958, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 105, 958, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 99, 962, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 99, 962, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 99, 962, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 98, 963, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 98, 963, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 98, 963, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 94, 966, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 94, 966, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 94, 966, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 89, 971, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 89, 971, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 89, 971, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 84, 971, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 84, 971, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 84, 971, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 78, 972, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 78, 972, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 78, 972, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 73, 973, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 73, 973, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 73, 973, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 73, 973, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 73, 973, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 73, 973, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 68, 974, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 68, 974, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 68, 974, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 63, 977, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 63, 977, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 63, 977, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 63, 978, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 63, 978, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 63, 978, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 48, 989, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 48, 989, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 48, 989, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 43, 995, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 43, 995, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 38, 1000, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 38, 1000, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 38, 1003, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 38, 1003, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 33, 1006, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 33, 1006, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 28, 1007, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 25, 1008, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 25, 1007, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 52, 993, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 47, 994, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 42, 997, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 37, 1002, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 32, 1003, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 32, 1005, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 32, 1003, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 32, 1002, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 index 02d33ded..d4123729 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 113, 947, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 113, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 113, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 111, 955, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 111, 955, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 111, 955, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 118, 953, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 118, 953, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 118, 953, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 122, 946, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 122, 946, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 122, 946, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 110, 953, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 110, 953, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 110, 953, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 105, 956, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 105, 956, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 105, 956, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 104, 957, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 104, 957, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 104, 957, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 99, 960, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 99, 960, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 99, 960, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 95, 965, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 95, 965, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 95, 965, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 89, 966, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 89, 966, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 89, 966, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 84, 966, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 84, 966, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 84, 966, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 79, 966, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 79, 966, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 79, 966, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 79, 966, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 79, 966, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 79, 966, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 74, 967, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 74, 967, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 74, 967, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 69, 970, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 69, 970, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 69, 970, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 69, 971, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 69, 971, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 69, 971, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 54, 982, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 54, 982, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 54, 982, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 49, 990, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 49, 990, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 44, 996, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 44, 996, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 44, 1000, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 44, 1000, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 39, 1003, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 39, 1003, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 34, 1005, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 29, 1006, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 25, 1007, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 52, 993, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 47, 994, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 42, 997, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 37, 1002, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 32, 1003, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 32, 1005, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 32, 1003, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 32, 1002, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 index c7b02739..cc28cf91 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 @@ -1,70 +1,70 @@ AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 17, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 17, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 17, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 20, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 20, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 20, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 16, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 16, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 16, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 17, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 17, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 17, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 22, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 22, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 22, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 22, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 22, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 22, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 24, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 24, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 24, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 30, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 30, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 30, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 32, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 32, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 32, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 34, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 34, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 34, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 35, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 35, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 35, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 37, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 37, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 37, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 38, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 38, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 38, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 44, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 44, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 44, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 44, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 44, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 44, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 50, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 50, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 50, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 51, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 51, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 72, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 72, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 84, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 84, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 135, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 135, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 136, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 136, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 166, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 166, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 176, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 186, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 186, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 186, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 186, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 196, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 200, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 200, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 200, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 200, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 200, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 200, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 index 74084a8c..cc28cf91 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 @@ -1,70 +1,70 @@ AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 11, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 11, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 11, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 11, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 11, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 11, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 16, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 16, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 16, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 16, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 16, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 16, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 17, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 17, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 17, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 22, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 22, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 22, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 23, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 23, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 23, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 25, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 25, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 25, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 26, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 26, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 26, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 27, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 27, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 27, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 28, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 28, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 28, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 33, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 33, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 33, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 33, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 33, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 33, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 39, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 39, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 39, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 40, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 40, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 61, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 61, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 72, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 72, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 123, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 123, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 125, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 125, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 155, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 155, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 165, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 175, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 175, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 175, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 175, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 185, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 195, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 200, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 200, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 200, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 200, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 200, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 200, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 index 72b1bbd6..cc28cf91 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 @@ -1,70 +1,70 @@ AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 18, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 18, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 18, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 21, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 21, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 21, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 17, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 17, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 17, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 19, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 19, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 19, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 24, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 24, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 24, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 24, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 24, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 24, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 26, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 26, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 26, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 32, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 32, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 32, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 34, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 34, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 34, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 36, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 36, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 36, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 38, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 38, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 38, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 40, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 40, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 40, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 41, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 41, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 41, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 47, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 47, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 47, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 47, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 47, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 47, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 53, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 53, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 53, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 55, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 55, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 76, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 76, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 87, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 87, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 138, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 138, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 140, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 140, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 170, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 170, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 180, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 190, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 190, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 190, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 190, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 200, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 200, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 200, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 200, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 200, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 200, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 58, 34, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/test_besttrack_ensemble.py b/tests/test_besttrack_ensemble.py index 4b111b5c..07e5fe15 100644 --- a/tests/test_besttrack_ensemble.py +++ b/tests/test_besttrack_ensemble.py @@ -26,7 +26,7 @@ def test_besttrack_ensemble(): perturber = BestTrackPerturber(storm='al062018', start_date='20180911', end_date=None,) perturber.write( - number_of_perturbations=3, variables=variables, directory=output_directory, + number_of_perturbations=3, variables=variables, directory=output_directory, alpha=0.5, ) check_reference_directory(output_directory, reference_directory) From c1114242d4020a1833924cd8473e1d765b7dbd64 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Thu, 10 Jun 2021 14:03:33 -0400 Subject: [PATCH 12/29] add windows to tests --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dc15150c..145914e3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: true matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-latest, windows-latest ] python-version: [ 3.8, 3.9 ] steps: - name: Checkout repository From 0dd6e81c3c14bc15c46398e13e0853900cf306a6 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Thu, 10 Jun 2021 14:03:56 -0400 Subject: [PATCH 13/29] remove environment.yml --- environment.yml | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 environment.yml diff --git a/environment.yml b/environment.yml deleted file mode 100644 index e501e950..00000000 --- a/environment.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: ensemble_perturbation -dependencies: - - bs4 - - fiona - - geopandas - - matplotlib - - netcdf4 - - numpy - - pandas - - pip - - pyproj>=2.6 - - python==3.7.9 - - requests - - shapely - - pip: - - adcircpy>=1.0.16 - - dunamai - - flake8 - - pytest - - pytest-cov - - requests_futures From d1772e0fcd2532f29d928868176747b791ce176e Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Fri, 11 Jun 2021 11:07:35 -0400 Subject: [PATCH 14/29] use CRS and transformer from `pyproj` --- .../perturbation/make_storm_ensemble.py | 185 ++++++++++-------- 1 file changed, 104 insertions(+), 81 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index fea804e5..72d2ca76 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -47,11 +47,12 @@ from adcircpy.forcing.winds.best_track import BestTrackForcing from dateutil.parser import parse as parse_date import numpy -from numpy import append, floor, insert, interp, sign +from numpy import floor, interp, sign from pandas import DataFrame, Series import pint from pint_pandas import PintType -from pyproj import Proj +from pyproj import CRS, Transformer +from pyproj.enums import TransformDirection from shapely.geometry import LineString units = pint.UnitRegistry() @@ -413,24 +414,23 @@ def perturb( # Get the coordinates of the track track_coords = besttrack_dataframe[['longitude', 'latitude']].values.tolist() + # get the utm projection for the reference coordinate + utm_crs = utm_crs_from_longitude(numpy.mean(track_coords[0])) + wgs84 = CRS.from_epsg(4326) + transformer = Transformer.from_crs(wgs84, utm_crs) + times = (times / timedelta(hours=1)).values * units.hours # loop over all coordinates - lon_new = list() - lat_new = list() + new_coordinates = [] for track_coord_index in range(0, len(track_coords)): # get the current cross_track_error cross_track_error = values[track_coord_index].to(units.meter) - # get the utm projection for the reference coordinate - utm_projection = utm_proj_from_lon(track_coords[track_coord_index][0]) - # get the location of the original reference coordinate x_ref, y_ref = ( - utm_projection( - track_coords[track_coord_index][0], - track_coords[track_coord_index][1], - inverse=False, + transformer.transform( + track_coords[track_coord_index][0], track_coords[track_coord_index][1], ) * units.meter ) @@ -446,7 +446,7 @@ def perturb( # get previous projected coordinate x_p, y_p = ( - utm_projection(track_coords[idx_p][0], track_coords[idx_p][1], inverse=False) + transformer.transform(track_coords[idx_p][0], track_coords[idx_p][1],) * units.meter ) @@ -464,7 +464,7 @@ def perturb( # get previous projected coordinate x_n, y_n = ( - utm_projection(track_coords[idx_n][0], track_coords[idx_n][1], inverse=False) + transformer.transform(track_coords[idx_n][0], track_coords[idx_n][1],) * units.meter ) @@ -477,14 +477,24 @@ def perturb( alpha = (abs(cross_track_error) / numpy.sqrt(dx ** 2 + dy ** 2)).magnitude # compute the next point and retrieve back the lat-lon geographic coordinate - lon, lat = utm_projection( - (x_ref + alpha * dx).magnitude, (y_ref + alpha * dy).magnitude, inverse=True + new_coordinates.append( + transformer.transform( + (x_ref + alpha * dx).magnitude, + (y_ref + alpha * dy).magnitude, + direction=TransformDirection.INVERSE, + ) ) - lon_new.append(lon) - lat_new.append(lat) - besttrack_dataframe['longitude'] = lon_new - besttrack_dataframe['latitude'] = lat_new + degree = PintType(units.degree) + besttrack_dataframe['longitude'], besttrack_dataframe['latitude'] = zip( + *new_coordinates + ) + besttrack_dataframe['longitude'] = besttrack_dataframe['longitude'].astype( + degree, copy=False + ) + besttrack_dataframe['latitude'] = besttrack_dataframe['latitude'].astype( + degree, copy=False + ) return besttrack_dataframe @@ -541,76 +551,92 @@ def perturb( max_interpolated_points = 5 # maximum number of pts along line for each interpolation # Get the coordinates of the track - along_track_coordinates = besttrack_dataframe[ - ['longitude', 'latitude'] - ].values.tolist() + coordinates = besttrack_dataframe[['longitude', 'latitude']].values - times = (times / timedelta(hours=1)).values + # get the utm projection for the reference coordinate + utm_crs = utm_crs_from_longitude(numpy.mean(coordinates[:, 0])) + wgs84 = CRS.from_epsg(4326) + transformer = Transformer.from_crs(wgs84, utm_crs) + + hours = (times / timedelta(hours=1)).values + + unique_points, unique_indices = numpy.unique(coordinates, axis=0, return_index=True) + unique_points = unique_points[numpy.argsort(unique_indices)] + unique_times, unique_indices = numpy.unique(hours, axis=0, return_index=True) + unique_times = unique_times[numpy.argsort(unique_indices)] # Extrapolating the track for negative errors at beginning and positive errors at end of track - for vt_index in range(0, len(times)): - if times[vt_index] == 0 and times[vt_index + 1] > 0: - # append point to the beginning for going in negative direction - p1 = along_track_coordinates[vt_index] - p2 = along_track_coordinates[vt_index + 1] - ps = [ - p1[0] - max_interpolated_points * (p2[0] - p1[0]), - p1[1] - max_interpolated_points * (p2[1] - p1[1]), - ] - if times[vt_index] == times[-1] and times[vt_index - 1] < times[-1]: - # append point to the end going in positive direction - p1 = along_track_coordinates[vt_index - 1] - p2 = along_track_coordinates[vt_index] - pe = [ - p1[0] + max_interpolated_points * (p2[0] - p1[0]), - p1[1] + max_interpolated_points * (p2[1] - p1[1]), - ] - - along_track_coordinates.insert(0, ps) - along_track_coordinates.append(pe) + previous_diffs = numpy.flip( + numpy.repeat( + [unique_points[1] - unique_points[0]], max_interpolated_points, axis=0 + ) + * numpy.expand_dims(numpy.arange(1, max_interpolated_points + 1), axis=1) + ) + after_diffs = numpy.repeat( + [unique_points[-1] - unique_points[-2]], max_interpolated_points, axis=0 + ) * numpy.expand_dims(numpy.arange(1, max_interpolated_points + 1), axis=1) + coordinates = numpy.concatenate( + [coordinates[0] - previous_diffs, coordinates, coordinates[-1] + after_diffs,] + ) # adding pseudo-VT times to the ends - times = insert(times, 0, times[0] - 6) - times = append(times, times[-1] + 6) + previous_diffs = numpy.flip( + numpy.repeat([unique_times[1] - unique_times[0]], max_interpolated_points) + * numpy.arange(1, max_interpolated_points + 1) + ) + after_diffs = numpy.repeat( + [unique_times[-1] - unique_times[-2]], max_interpolated_points + ) * numpy.arange(1, max_interpolated_points + 1) + hours = numpy.concatenate((hours[0] - previous_diffs, hours, hours[-1] + after_diffs,)) # loop over all coordinates - lon_new = list() - lat_new = list() - for track_coord_index in range(1, len(along_track_coordinates) - 1): - # get the utm projection for middle longitude - utm_projection = utm_proj_from_lon(along_track_coordinates[track_coord_index][0]) - along_error = values[track_coord_index - 1].to(units.meter) + new_coordinates = [] + for index in range(len(values)): + along_error = values[index - 1].to(units.meter) along_sign = int(sign(along_error)) - pts = list() - ind = track_coord_index - while len(pts) < max_interpolated_points: - if ind < 0 or ind > len(along_track_coordinates) - 1: + projected_points = [] + track_index = index + while len(projected_points) < max_interpolated_points: + if track_index < 0 or track_index > len(coordinates) - 1: break # reached end of line - if ind == track_coord_index or times[ind] != times[ind - along_sign]: + if ( + track_index == index + or hours[track_index] != hours[track_index - along_sign] + ): # get the x,y utm coordinate for this line string - x_utm, y_utm = utm_projection( - along_track_coordinates[ind][0], - along_track_coordinates[ind][1], - inverse=False, + projected_points.append( + transformer.transform( + coordinates[track_index][0], coordinates[track_index][1], + ) ) - pts.append((x_utm, y_utm)) - ind = ind + along_sign + track_index = track_index + along_sign - # make the temporary line segment - line_segment = LineString([pts[pp] for pp in range(0, len(pts))]) + # make the temporary line segment + line_segment = LineString(projected_points) # interpolate a distance "along_error" along the line - pnew = line_segment.interpolate(abs(along_error.magnitude)) + projected_coordinate = line_segment.interpolate(abs(along_error.magnitude)) # get back lat-lon - lon, lat = utm_projection(pnew.coords[0][0], pnew.coords[0][1], inverse=True,) - - lon_new.append(lon) - lat_new.append(lat) + new_coordinates.append( + transformer.transform( + projected_coordinate.coords[0][0], + projected_coordinate.coords[0][1], + direction=TransformDirection.INVERSE, + ) + ) - besttrack_dataframe['longitude'] = lon_new - besttrack_dataframe['latitude'] = lat_new + degree = PintType(units.degree) + besttrack_dataframe['longitude'], besttrack_dataframe['latitude'] = zip( + *new_coordinates + ) + besttrack_dataframe['longitude'] = besttrack_dataframe['longitude'].astype( + degree, copy=False + ) + besttrack_dataframe['latitude'] = besttrack_dataframe['latitude'].astype( + degree, copy=False + ) return besttrack_dataframe @@ -782,10 +808,10 @@ def write( ].pint.magnitude xp = historical_forecast_errors.index - yp = historical_forecast_errors.values + fp = historical_forecast_errors.values base_errors = [ - interp(self.validation_times / timedelta(hours=1), xp, yp[:, ncol]) - for ncol in range(len(yp[0])) + interp(self.validation_times / timedelta(hours=1), xp, fp[:, ncol]) + for ncol in range(len(fp[0])) ] for perturbation_index in range(1, number_of_perturbations + 1): @@ -913,19 +939,16 @@ def storm_size_class(radius_of_maximum_winds: float) -> str: return '>45sm' # very large -def utm_proj_from_lon(lon_mean: float) -> Proj: +def utm_crs_from_longitude(longitude: float) -> CRS: """ utm_from_lon - UTM zone for a longitude Not right for some polar regions (Norway, Svalbard, Antartica) - :param lon_mean: longitude - :usage x_utm,y_utm = myProj(lon, lat , inverse=False) - :usage lon, lat = myProj(xutm, yutm, inverse=True) + :param longitude: longitude + :return: coordinate reference system """ - zone = floor((lon_mean + 180) / 6) + 1 - - return Proj(f'+proj=utm +zone={zone}K, +ellps=WGS84 +datum=WGS84 +units=m +no_defs') + return CRS.from_epsg(32600 + int(floor((longitude + 180) / 6) + 1)) def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): From 6e06c7d7d091aa533cb087b344675ddeafedb039 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Fri, 11 Jun 2021 11:10:37 -0400 Subject: [PATCH 15/29] update reference files --- .../test_besttrack_ensemble/along_track_1.22 | 140 +++++++++--------- .../test_besttrack_ensemble/along_track_2.22 | 140 +++++++++--------- .../test_besttrack_ensemble/along_track_3.22 | 140 +++++++++--------- .../test_besttrack_ensemble/cross_track_1.22 | 140 +++++++++--------- .../test_besttrack_ensemble/cross_track_2.22 | 140 +++++++++--------- .../test_besttrack_ensemble/cross_track_3.22 | 140 +++++++++--------- 6 files changed, 420 insertions(+), 420 deletions(-) diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 index 9219ad44..760ae8e2 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 803W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 809W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 816W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 342N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 351N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 365N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 379N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 324N, 637W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 311N, 633W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 297N, 629W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 283N, 625W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 269N, 621W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 256N, 618W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 260N, 632W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 265N, 647W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 272N, 664W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 279N, 681W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 279N, 681W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 279N, 682W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 294N, 708W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 304N, 720W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 315N, 733W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 324N, 743W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 752W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 336N, 761W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 340N, 766W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 773W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 780W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 339N, 785W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 338N, 789W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 338N, 789W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 794W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 794W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 796W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 796W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 336N, 799W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 336N, 799W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 336N, 803W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 336N, 809W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 336N, 816W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 347N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 353N, 823W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 367N, 825W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 index 9219ad44..760ae8e2 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 803W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 809W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 816W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 342N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 351N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 365N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 379N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 324N, 637W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 311N, 633W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 297N, 629W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 283N, 625W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 269N, 621W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 256N, 618W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 260N, 632W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 265N, 647W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 272N, 664W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 279N, 681W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 279N, 681W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 279N, 682W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 294N, 708W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 304N, 720W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 315N, 733W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 324N, 743W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 752W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 336N, 761W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 340N, 766W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 773W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 780W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 339N, 785W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 338N, 789W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 338N, 789W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 794W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 794W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 796W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 796W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 336N, 799W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 336N, 799W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 336N, 803W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 336N, 809W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 336N, 816W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 347N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 353N, 823W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 367N, 825W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 index 9219ad44..760ae8e2 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 752W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 761W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 766W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 773W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 341N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 340N, 780W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 339N, 785W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 338N, 789W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 336N, 794W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 796W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 799W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 803W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 809W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 816W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 342N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 351N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 365N, 825W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 379N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 803W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 766W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 324N, 637W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 311N, 633W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 297N, 629W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 283N, 625W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 269N, 621W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 256N, 618W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 260N, 632W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 265N, 647W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 272N, 664W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 279N, 681W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 279N, 681W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 279N, 682W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 294N, 708W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 304N, 720W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 315N, 733W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 324N, 743W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 752W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 336N, 761W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 340N, 766W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 773W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 780W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 339N, 785W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 338N, 789W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 338N, 789W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 794W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 794W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 796W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 796W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 336N, 799W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 336N, 799W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 336N, 803W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 336N, 809W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 336N, 816W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 347N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 353N, 823W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 367N, 825W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 index f4d8ea08..7d788d88 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 337N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 337N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 337N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 387N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 421N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 329N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 329N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 328N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 333N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 343N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 385N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 395N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 401N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 417N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 425N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 index f4d8ea08..7d788d88 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 337N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 337N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 337N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 387N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 421N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 329N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 329N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 328N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 333N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 343N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 385N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 395N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 401N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 417N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 425N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 index f4d8ea08..7d788d88 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 631W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 646W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 663W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 680W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 694W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 706W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 718W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 731W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 741W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 750W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 759W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 341N, 764W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 343N, 771W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 343N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 340N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 338N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 337N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 337N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 337N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 337N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 337N, 814W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 819W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 820W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 824W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 377N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 387N, 818W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 394N, 804W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 412N, 767W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 421N, 731W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 329N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 329N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 328N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 333N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 343N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 385N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 395N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 401N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 417N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 425N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file From bc1c08e30275fc05b881f5a0ef16f01c008d1d41 Mon Sep 17 00:00:00 2001 From: William Pringle Date: Fri, 11 Jun 2021 10:14:29 -0500 Subject: [PATCH 16/29] Removing dependence on adcircpy (#23) * Removing dependence on adcircpy - [for now] copying over besttrackforcing from adcircpy into tropicalcyclone.atcf module - removed NWS, BLAdh, geo, and time interval properties as they are related to adcirc inputs - add test/output folders to .gitignore * adding some help info for atcf tracks and adding __init__.py to subdirectories to find them --- .gitignore | 1 + ensembleperturbation/__main__.py | 0 ensembleperturbation/perturbation/__init__.py | 0 .../perturbation/make_storm_ensemble.py | 31 +- .../tropicalcyclone/__init__.py | 0 ensembleperturbation/tropicalcyclone/atcf.py | 730 ++++++++++++++++++ 6 files changed, 732 insertions(+), 30 deletions(-) create mode 100644 ensembleperturbation/__main__.py create mode 100644 ensembleperturbation/perturbation/__init__.py create mode 100644 ensembleperturbation/tropicalcyclone/__init__.py create mode 100644 ensembleperturbation/tropicalcyclone/atcf.py diff --git a/.gitignore b/.gitignore index 4881cbbd..ca86d6cb 100644 --- a/.gitignore +++ b/.gitignore @@ -141,3 +141,4 @@ cython_debug/ .idea/ /examples/data/* +/tests/data/output diff --git a/ensembleperturbation/__main__.py b/ensembleperturbation/__main__.py new file mode 100644 index 00000000..e69de29b diff --git a/ensembleperturbation/perturbation/__init__.py b/ensembleperturbation/perturbation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 72d2ca76..0a688ee8 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -44,7 +44,7 @@ from random import gauss, random from typing import Union -from adcircpy.forcing.winds.best_track import BestTrackForcing +from ensembleperturbation.tropicalcyclone.atcf import BestTrackForcing from dateutil.parser import parse as parse_date import numpy from numpy import floor, interp, sign @@ -645,8 +645,6 @@ class BestTrackPerturber: def __init__( self, storm: str, - nws: int = None, - interval: timedelta = None, start_date: datetime = None, end_date: datetime = None, ): @@ -654,15 +652,11 @@ def __init__( build storm perturber :param storm: NHC storm code, for instance `al062018` - :param nws: wind stress parameter - :param interval: time interval :param start_date: start time of ensemble :param end_date: end time of ensemble """ self.storm = storm - self.nws = nws - self.interval = interval self.start_date = start_date self.end_date = end_date @@ -677,24 +671,6 @@ def storm(self) -> str: def storm(self, storm: str): self.__storm = storm - @property - def nws(self) -> int: - return self.__nws - - @nws.setter - def nws(self, nws: int): - self.__nws = nws - - @property - def interval(self) -> timedelta: - return self.__interval - - @interval.setter - def interval(self, interval: timedelta): - if interval is not None and not isinstance(interval, timedelta): - self.__interval = timedelta(seconds=interval) - self.__interval = interval - @property def start_date(self) -> datetime: return self.__start_date @@ -717,14 +693,9 @@ def end_date(self, end_date: datetime): @property def forcing(self) -> BestTrackForcing: - interval = self.interval - if interval is not None: - interval = interval / timedelta(seconds=1) configuration = { 'storm': self.storm, - 'nws': self.nws, - 'interval_seconds': interval, 'start_date': self.start_date, 'end_date': self.end_date, } diff --git a/ensembleperturbation/tropicalcyclone/__init__.py b/ensembleperturbation/tropicalcyclone/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py new file mode 100644 index 00000000..64b68886 --- /dev/null +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -0,0 +1,730 @@ +from collections import Collection +from datetime import datetime, timedelta +from functools import wraps +import gzip +import io +from io import StringIO +import logging +import os +from os import PathLike +import pathlib +import time +from typing import Any, Union +import urllib.request +import zipfile + +import appdirs +import geopandas +from haversine import haversine +import matplotlib.pyplot as plt +from matplotlib.transforms import Bbox +import numpy as np +from pandas import DataFrame, read_csv +from pyproj import CRS, Proj, Transformer +from shapely import ops +from shapely.geometry import Point, Polygon +import utm + +logger = logging.getLogger(__name__) + +class BestTrackForcing(): + def __init__( + self, + storm: Union[str, PathLike, DataFrame, io.BytesIO], + start_date: datetime = None, + end_date: datetime = None, + dst_crs: CRS = None, + ): + + if isinstance(storm, DataFrame): + self.__df = storm + elif isinstance(storm, io.BytesIO): + self.__atcf = storm + elif isinstance(storm, (str, PathLike, pathlib.Path)): + if os.path.exists(storm): + self.__atcf = io.open(storm, 'rb') + else: + self._storm_id = storm + + self._start_date = start_date + self._end_date = end_date + self._dst_crs = dst_crs + + def __str__(self): + record_number = self._generate_record_numbers() + fort22 = [] + for i, (_, row) in enumerate(self.df.iterrows()): + line = [] + + line.extend( + [ + f'{row["basin"]:<2}', + f'{row["storm_number"]:>3}', + f'{row["datetime"]:%Y%m%d%H}'.rjust(11), + f'{"":3}', + f'{row["record_type"]:>5}', + f'{convert_value((row["datetime"] - self.start_date) / timedelta(hours=1), to_type=int):>4}', + ] + ) + + latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1,) + if latitude >= 0: + line.append(f'{latitude:>4}N') + else: + line.append(f'{latitude * -.1:>4}S') + + longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1,) + if longitude >= 0: + line.append(f'{longitude:>5}E') + else: + line.append(f'{longitude * -1:>5}W') + + line.extend( + [ + f'{convert_value(row["max_sustained_wind_speed"], to_type=int, round_digits=0):>4}', + f'{convert_value(row["central_pressure"], to_type=int, round_digits=0):>5}', + f'{row["development_level"]:>3}', + f'{convert_value(row["isotach"], to_type=int, round_digits=0):>4}', + f'{row["quadrant"]:>4}', + f'{convert_value(row["radius_for_NEQ"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_for_SEQ"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_for_SWQ"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_for_NWQ"], to_type=int, round_digits=0):>5}', + ] + ) + + if row['background_pressure'] is None: + row['background_pressure'] = self.df['background_pressure'].iloc[i - 1] + if ( + row['background_pressure'] <= row['central_pressure'] + and 1013 > row['central_pressure'] + ): + background_pressure = 1013 + elif ( + row['background_pressure'] <= row['central_pressure'] + and 1013 <= row['central_pressure'] + ): + background_pressure = convert_value( + row['central_pressure'] + 1, to_type=int, round_digits=0, + ) + else: + background_pressure = convert_value( + row['background_pressure'], to_type=int, round_digits=0, + ) + line.append(f'{background_pressure:>5}') + + line.extend( + [ + f'{convert_value(row["radius_of_last_closed_isobar"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_of_maximum_winds"], to_type=int, round_digits=0):>4}', + f'{"":>5}', # gust + f'{"":>4}', # eye + f'{"":>4}', # subregion + f'{"":>4}', # maxseas + f'{"":>4}', # initials + f'{row["direction"]:>3}', + f'{row["speed"]:>4}', + f'{row["name"]:^12}', + ] + ) + + # from this point forwards it's all aswip + line.append(f'{record_number[i]:>4}') + + fort22.append(','.join(line)) + + return '\n'.join(fort22) + + def write(self, path: PathLike, overwrite: bool = False): + if not isinstance(path, pathlib.Path): + path = pathlib.Path(path) + if path.exists() and overwrite is False: + raise Exception('File exist, set overwrite=True to allow overwrite.') + with open(path, 'w') as f: + f.write(str(self)) + + @property + def storm_id(self) -> str: + return self._storm_id + + @property + def _storm_id(self) -> str: + return f'{self.basin}{self.storm_number}{self.year}' + + @_storm_id.setter + def _storm_id(self, storm_id: str): + # Different archive source information: + # + # files: aBBCCYYYY.dat - guidance information + # bBBCCYYYY.dat - best track information + # fBBCCYYYY.dat - fix information + # eBBCCYYYY.dat - probability information + # + # BB - basin: al (Atlantic), ep (East Pacific), cp (Central Pacific), + # and sl (South Atlantic) + # CC - storm number + # YYYY - 4-digit Year + # ref: ftp://ftp.nhc.noaa.gov/atcf/archive/README + if storm_id is not None: + chars = 0 + for char in storm_id: + if char.isdigit(): + chars += 1 + + if chars == 4: + + _atcf_id = atcf_id(storm_id) + if _atcf_id is None: + msg = f'No storm with id: {storm_id}' + raise Exception(msg) + storm_id = _atcf_id + + url = f'ftp://ftp.nhc.noaa.gov/atcf/archive/{storm_id[4:]}/b{storm_id[0:2].lower()}{storm_id[2:]}.dat.gz' + + try: + logger.info(f'Downloading storm data from {url}') + response = urllib.request.urlopen(url) + except urllib.error.URLError as e: + if '550' in e.reason: + raise NameError( + f'Did not find storm with id {storm_id}. ' + + f'Submitted URL was {url}.' + ) + else: + + @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) + def make_request(): + logger.info(f'Downloading storm data from {url} failed, retrying...') + return urllib.request.urlopen(url) + + response = make_request() + + self.__atcf = io.BytesIO(response.read()) + + @property + def start_date(self) -> datetime: + return self._start_date + + @start_date.setter + def start_date(self, start_date: datetime): + self._start_date = start_date + + @property + def _start_date(self) -> datetime: + return self.__start_date + + @_start_date.setter + def _start_date(self, start_date: datetime): + if start_date is not None: + assert isinstance(start_date, datetime) + else: + start_date = self._df['datetime'].iloc[0] + msg = f"start_date must be >= {self._df['datetime'].iloc[0]} " + msg += f"and <{self._df['datetime'].iloc[-1]}" + assert ( + start_date >= self._df['datetime'].iloc[0] + and start_date < self._df['datetime'].iloc[-1] + ), msg + self.__start_date = start_date + + @property + def end_date(self) -> datetime: + return self._end_date + + @end_date.setter + def end_date(self, end_date: datetime): + self._end_date = end_date + + @property + def _end_date(self) -> datetime: + return self.__end_date + + @_end_date.setter + def _end_date(self, end_date: datetime): + if end_date is not None: + assert isinstance(end_date, datetime) + else: + end_date = self._df['datetime'].iloc[-1] + msg = f"end_date must be >= {self._df['datetime'].iloc[0]} " + msg += f"and <= {self._df['datetime'].iloc[-1]}. " + msg += f'The given end_date was {end_date}.' + assert ( + end_date > self._df['datetime'].iloc[0] + and end_date <= self._df['datetime'].iloc[-1] + ), msg + msg = 'end_date must be larger than start_date.\n' + msg += f'start_date is {self.start_date} and end_date is {end_date}.' + assert end_date > self.start_date, msg + self.__end_date = end_date + + @property + def name(self) -> str: + return self.df['name'].value_counts()[:].index.tolist()[0] + + @property + def basin(self) -> str: + return self.df['basin'].iloc[0] + + @property + def storm_number(self) -> str: + return self.df['storm_number'].iloc[0] + + @property + def year(self) -> int: + return self.df['datetime'].iloc[0].year + + @property + def datetime(self): + return self.df['datetime'] + + @property + def speed(self): + return self.df['speed'] + + @property + def direction(self): + return self.df['direction'] + + @property + def longitude(self): + return self.df['longitude'] + + @property + def latitude(self): + return self.df['latitude'] + + @property + def df(self): + start_date_mask = self._df['datetime'] >= self.start_date + end_date_mask = self._df['datetime'] <= self._file_end_date + return self._df[start_date_mask & end_date_mask] + + @property + def _df(self): + # https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt + try: + return self.__df + except AttributeError: + data = { + 'basin': list(), + 'storm_number': list(), + 'datetime': list(), + 'record_type': list(), + 'latitude': list(), + 'longitude': list(), + 'max_sustained_wind_speed': list(), + 'central_pressure': list(), + 'development_level': list(), + 'isotach': list(), + 'quadrant': list(), + 'radius_for_NEQ': list(), + 'radius_for_SEQ': list(), + 'radius_for_SWQ': list(), + 'radius_for_NWQ': list(), + 'background_pressure': list(), + 'radius_of_last_closed_isobar': list(), + 'radius_of_maximum_winds': list(), + 'name': list(), + 'direction': list(), + 'speed': list(), + } + if isinstance(self.__atcf, io.BytesIO): + fd = gzip.GzipFile(fileobj=self.__atcf) + else: + fd = self.__atcf + + for i, line in enumerate(fd): + line = line.decode('UTF-8').split(',') + data['basin'].append(line[0]) + data['storm_number'].append(line[1].strip(' ')) + _datetime = line[2].strip(' ') + _minutes = line[3].strip(' ') + if _minutes == "": + _minutes = '00' + _datetime = _datetime + _minutes + data['datetime'].append(datetime.strptime(_datetime, '%Y%m%d%H%M')) + data['record_type'].append(line[4].strip(' ')) + if 'N' in line[6]: + _lat = float(line[6].strip('N ')) * 0.1 + elif 'S' in line: + _lat = float(line[6].strip('S ')) * -0.1 + data['latitude'].append(_lat) + if 'E' in line[7]: + _lon = float(line[7].strip('E ')) * 0.1 + elif 'W' in line[7]: + _lon = float(line[7].strip('W ')) * -0.1 + data['longitude'].append(_lon) + data['max_sustained_wind_speed'].append(float(line[8].strip(' '))) + data['central_pressure'].append(float(line[9].strip(' '))) + data['development_level'].append(line[10].strip(' ')) + try: + data['isotach'].append(int(line[11].strip(' '))) + except ValueError: + raise Exception( + 'Error: No radial wind information for this storm; ' + 'parametric wind model cannot be built.' + ) + data['quadrant'].append(line[12].strip(' ')) + data['radius_for_NEQ'].append(int(line[13].strip(' '))) + data['radius_for_SEQ'].append(int(line[14].strip(' '))) + data['radius_for_SWQ'].append(int(line[15].strip(' '))) + data['radius_for_NWQ'].append(int(line[16].strip(' '))) + if len(line) > 18: + data['background_pressure'].append(int(line[17].strip(' '))) + data['radius_of_last_closed_isobar'].append(int(line[18].strip(' '))) + data['radius_of_maximum_winds'].append(int(line[19].strip(' '))) + if len(line) > 23: + data['name'].append(line[27].strip(' ')) + else: + data['name'].append("") + else: + data['background_pressure'].append(data['background_pressure'][-1]) + data['radius_of_last_closed_isobar'].append( + data['radius_of_last_closed_isobar'][-1] + ) + data['radius_of_maximum_winds'].append(data['radius_of_maximum_winds'][-1]) + data['name'].append("") + data = self._compute_velocity(data) + # data = self._transform_coordinates(data) + self.__df = DataFrame(data=data) + return self.__df + + @_df.setter + def _df(self, data): + msg = f'data must be a pandas {DataFrame} instance.' + assert isinstance(data, DataFrame), msg + self.__df = DataFrame(data=data) + + def clip_to_bbox(self, bbox, bbox_crs): + msg = f'bbox must be a {Bbox} instance.' + assert isinstance(bbox, Bbox), msg + bbox_pol = Polygon( + [ + [bbox.xmin, bbox.ymin], + [bbox.xmax, bbox.ymin], + [bbox.xmax, bbox.ymax], + [bbox.xmin, bbox.ymax], + [bbox.xmin, bbox.ymin], + ] + ) + _switch = True + unique_dates = np.unique(self._df['datetime']) + _found_start_date = False + for _datetime in unique_dates: + records = self._df[self._df['datetime'] == _datetime] + radii = records['radius_of_last_closed_isobar'].iloc[0] + radii = 1852.0 * radii # convert to meters + lon = records['longitude'].iloc[0] + lat = records['latitude'].iloc[0] + _, _, number, letter = utm.from_latlon(lat, lon) + df_crs = CRS.from_epsg(4326) + utm_crs = CRS( + proj='utm', + zone=f'{number}{letter}', + ellps={'GRS 1980': 'GRS80', 'WGS 84': 'WGS84'}[df_crs.ellipsoid.name], + ) + transformer = Transformer.from_crs(df_crs, utm_crs, always_xy=True) + p = Point(*transformer.transform(lon, lat)) + pol = p.buffer(radii) + transformer = Transformer.from_crs(utm_crs, bbox_crs, always_xy=True) + pol = ops.transform(transformer.transform, pol) + if _switch is True: + if not pol.intersects(bbox_pol): + continue + else: + self.start_date = records['datetime'].iloc[0] + _found_start_date = True + _switch = False + continue + + else: + if pol.intersects(bbox_pol): + continue + else: + self.end_date = records['datetime'].iloc[0] + break + + if _found_start_date is False: + raise Exception(f'No data within mesh bounding box for storm {self.storm_id}.') + + def plot_track(self, axes=None, show=False, color='k', **kwargs): + kwargs.update({'color': color}) + if axes is None: + fig = plt.figure() + axes = fig.add_subplot(111) + for i in range(len(self.speed)): + # when dealing with nautical degrees, U is sine and V is cosine. + U = self.speed.iloc[i] * np.sin(np.deg2rad(self.direction.iloc[i])) + V = self.speed.iloc[i] * np.cos(np.deg2rad(self.direction.iloc[i])) + axes.quiver(self.longitude.iloc[i], self.latitude.iloc[i], U, V, **kwargs) + if i % 6 == 0: + axes.annotate( + self.df['datetime'].iloc[i], + (self.longitude.iloc[i], self.latitude.iloc[i]), + ) + if show: + axes.axis('scaled') + _fetch_and_plot_coastline(axes, show) + + def _generate_record_numbers(self): + record_number = [1] + for i in range(1, len(self.datetime)): + if self.datetime.iloc[i] == self.datetime.iloc[i - 1]: + record_number.append(record_number[-1]) + else: + record_number.append(record_number[-1] + 1) + return record_number + + def transform_to(self, crs): + pass + + @property + def _file_end_date(self): + unique_dates = np.unique(self._df['datetime']) + for date in unique_dates: + if date >= np.datetime64(self.end_date): + return date + + @staticmethod + def _compute_velocity(data): + """ + Output has units of meters per second. + """ + merc = Proj('EPSG:3395') + x, y = merc(data['longitude'], data['latitude']) + unique_datetimes = np.unique(data['datetime']) + for i, _datetime in enumerate(unique_datetimes): + (indexes,) = np.where(np.asarray(data['datetime']) == _datetime) + for idx in indexes: + if indexes[-1] + 1 < len(data['datetime']): + dt = ( + data['datetime'][indexes[-1] + 1] - data['datetime'][idx] + ).total_seconds() / (60.0 * 60.0) + dx = haversine( + (data['latitude'][idx], data['longitude'][indexes[-1] + 1]), + (data['latitude'][idx], data['longitude'][idx]), + unit='nmi', + ) + dy = haversine( + (data['latitude'][indexes[-1] + 1], data['longitude'][idx]), + (data['latitude'][idx], data['longitude'][idx]), + unit='nmi', + ) + vx = np.copysign( + dx / dt, data['longitude'][indexes[-1] + 1] - data['longitude'][idx], + ) + vy = np.copysign( + dy / dt, data['latitude'][indexes[-1] + 1] - data['latitude'][idx], + ) + else: + dt = ( + data['datetime'][idx] - data['datetime'][indexes[0] - 1] + ).total_seconds() / (60.0 * 60.0) + dx = haversine( + (data['latitude'][idx], data['longitude'][indexes[0] - 1]), + (data['latitude'][idx], data['longitude'][idx]), + unit='nmi', + ) + dy = haversine( + (data['latitude'][indexes[0] - 1], data['longitude'][idx]), + (data['latitude'][idx], data['longitude'][idx]), + unit='nmi', + ) + vx = np.copysign( + dx / dt, data['longitude'][idx] - data['longitude'][indexes[0] - 1], + ) + vy = np.copysign( + dy / dt, data['latitude'][idx] - data['latitude'][indexes[0] - 1], + ) + speed = np.sqrt(dx ** 2 + dy ** 2) / dt + bearing = (360.0 + np.rad2deg(np.arctan2(vx, vy))) % 360 + data['speed'].append(int(np.around(speed, 0))) + data['direction'].append(int(np.around(bearing, 0))) + return data + + @classmethod + def from_fort22( + cls, + fort22: PathLike, + start_date: datetime = None, + end_date: datetime = None, + ) -> 'BestTrackForcing': + + data = read_atcf(fort22) + + storm_id = f'{data["name"][0]}{data["datetime"][0]:%Y}' + + if start_date is None: + start_date = min(data['datetime']) + if end_date is None: + end_date = max(data['datetime']) + + instance = cls(storm=storm_id, start_date=start_date, end_date=end_date,) + + instance.__df = data + + return instance + + @classmethod + def from_atcf_file( + cls, atcf: PathLike, start_date: datetime = None, end_date: datetime = None, + ) -> 'BestTrackForcing': + return cls(storm=atcf, start_date=start_date, end_date=end_date,) + + +def convert_value(value: Any, to_type: type, round_digits: int = None) -> Any: + if value is not None and value != "": + if round_digits is not None and issubclass(to_type, (int, float)): + if isinstance(value, str): + value = float(value) + value = round(value, round_digits) + value = to_type(value) + return value + + +def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=None): + """Retry calling the decorated function using an exponential backoff. + + http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/ + original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry + + :param ExceptionToCheck: the exception to check. may be a tuple of + exceptions to check + :type ExceptionToCheck: Exception or tuple + :param tries: number of times to try (not retry) before giving up + :type tries: int + :param delay: initial delay between retries in seconds + :type delay: int + :param backoff: backoff multiplier e.g. value of 2 will double the delay + each retry + :type backoff: int + :param logger: logger to use. If None, print + :type logger: logging.Logger instance + """ + + def deco_retry(f): + @wraps(f) + def f_retry(*args, **kwargs): + mtries, mdelay = tries, delay + while mtries > 1: + try: + return f(*args, **kwargs) + except ExceptionToCheck as e: + msg = '%s, Retrying in %d seconds...' % (str(e), mdelay) + if logger: + logger.warning(msg) + # else: + # print(msg) + time.sleep(mdelay) + mtries -= 1 + mdelay *= backoff + return f(*args, **kwargs) + + return f_retry # true decorator + + return deco_retry + + +def atcf_id(storm_id): + url = 'ftp://ftp.nhc.noaa.gov/atcf/archive/storm.table' + + @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) + def request_url(): + logger.info(f'Querying storm name from: {url}') + return urllib.request.urlopen(url) + + res = request_url() + df = read_csv(StringIO("".join([_.decode('utf-8') for _ in res])), header=None,) + name = storm_id[:-4] + year = storm_id[-4:] + entry = df.loc[(df[0] == name.upper().rjust(10)) & (df[8] == int(year))] + if len(entry) == 0: + return None + else: + return entry[20].tolist()[0].strip() + + +def read_atcf(track: PathLike) -> DataFrame: + try: + with open(track) as track_file: + track = track_file.readlines() + except: + track = str(track).splitlines() + + data = { + 'basin': [], + 'storm_number': [], + 'datetime': [], + 'record_type': [], + 'latitude': [], + 'longitude': [], + 'max_sustained_wind_speed': [], + 'central_pressure': [], + 'development_level': [], + 'isotach': [], + 'quadrant': [], + 'radius_for_NEQ': [], + 'radius_for_SEQ': [], + 'radius_for_SWQ': [], + 'radius_for_NWQ': [], + 'background_pressure': [], + 'radius_of_last_closed_isobar': [], + 'radius_of_maximum_winds': [], + 'name': [], + 'direction': [], + 'speed': [], + } + + for index, row in enumerate(track): + row = [value.strip() for value in row.split(',')] + + row_data = {key: None for key in data} + + row_data['basin'] = row[0] + row_data['storm_number'] = row[1] + row_data['datetime'] = datetime.strptime(row[2], '%Y%m%d%H') + row_data['record_type'] = row[4] + + latitude = row[6] + if 'N' in latitude: + latitude = float(latitude[:-1]) * 0.1 + elif 'S' in latitude: + latitude = float(latitude[:-1]) * -0.1 + row_data['latitude'] = latitude + + longitude = row[7] + if 'E' in longitude: + longitude = float(longitude[:-1]) * 0.1 + elif 'W' in longitude: + longitude = float(longitude[:-1]) * -0.1 + row_data['longitude'] = longitude + + row_data['max_sustained_wind_speed'] = convert_value( + row[8], to_type=int, round_digits=0, + ) + row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0,) + row_data['development_level'] = row[10] + row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0,) + row_data['quadrant'] = row[12] + row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0,) + row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0,) + row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0,) + row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0,) + row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0,) + row_data['radius_of_last_closed_isobar'] = convert_value( + row[18], to_type=int, round_digits=0, + ) + row_data['radius_of_maximum_winds'] = convert_value( + row[19], to_type=int, round_digits=0, + ) + row_data['direction'] = row[25] + row_data['speed'] = row[26] + row_data['name'] = row[27] + + for key, value in row_data.items(): + if isinstance(data[key], Collection): + data[key].append(value) + elif data[key] is None: + data[key] = value + + return DataFrame(data=data) From 45ee669d3cab9698ece0d1e7ad70da89b2a3b741 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Fri, 11 Jun 2021 15:15:26 +0000 Subject: [PATCH 17/29] Fix code style issues with oitnb --- .../perturbation/make_storm_ensemble.py | 8 +++----- ensembleperturbation/tropicalcyclone/atcf.py | 10 ++++------ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 0a688ee8..cd8c6d26 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -44,7 +44,6 @@ from random import gauss, random from typing import Union -from ensembleperturbation.tropicalcyclone.atcf import BestTrackForcing from dateutil.parser import parse as parse_date import numpy from numpy import floor, interp, sign @@ -55,6 +54,8 @@ from pyproj.enums import TransformDirection from shapely.geometry import LineString +from ensembleperturbation.tropicalcyclone.atcf import BestTrackForcing + units = pint.UnitRegistry() PintType.ureg = units @@ -643,10 +644,7 @@ def perturb( class BestTrackPerturber: def __init__( - self, - storm: str, - start_date: datetime = None, - end_date: datetime = None, + self, storm: str, start_date: datetime = None, end_date: datetime = None, ): """ build storm perturber diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index 64b68886..ace2d4d0 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -27,7 +27,8 @@ logger = logging.getLogger(__name__) -class BestTrackForcing(): + +class BestTrackForcing: def __init__( self, storm: Union[str, PathLike, DataFrame, io.BytesIO], @@ -159,7 +160,7 @@ def _storm_id(self, storm_id: str): # bBBCCYYYY.dat - best track information # fBBCCYYYY.dat - fix information # eBBCCYYYY.dat - probability information - # + # # BB - basin: al (Atlantic), ep (East Pacific), cp (Central Pacific), # and sl (South Atlantic) # CC - storm number @@ -544,10 +545,7 @@ def _compute_velocity(data): @classmethod def from_fort22( - cls, - fort22: PathLike, - start_date: datetime = None, - end_date: datetime = None, + cls, fort22: PathLike, start_date: datetime = None, end_date: datetime = None, ) -> 'BestTrackForcing': data = read_atcf(fort22) From ca4c716aececc11edecd17636bc7dd0e80f82a11 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Fri, 11 Jun 2021 11:17:36 -0400 Subject: [PATCH 18/29] remove unused imports --- ensembleperturbation/tropicalcyclone/atcf.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index ace2d4d0..6f475051 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -11,10 +11,7 @@ import time from typing import Any, Union import urllib.request -import zipfile -import appdirs -import geopandas from haversine import haversine import matplotlib.pyplot as plt from matplotlib.transforms import Bbox From 3c5742b4845242abfe208546af212e716c0459ef Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 09:34:50 -0400 Subject: [PATCH 19/29] refactor / fix plotting --- .../perturbation/make_storm_ensemble.py | 34 +- ensembleperturbation/plotting.py | 51 +- ensembleperturbation/tropicalcyclone/atcf.py | 685 ++++++++++-------- setup.py | 1 - 4 files changed, 445 insertions(+), 326 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index cd8c6d26..1e1c42aa 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -745,14 +745,14 @@ def write( print(f'Initial storm size: {storm_size}') # extracting original dataframe - df_original = self.forcing.df + original_data = self.forcing.data # add units to data frame - df_original = df_original.astype( + original_data = original_data.astype( { variable.name: PintType(variable.unit) for variable in variables - if variable.name in df_original + if variable.name in original_data }, copy=False, ) @@ -785,12 +785,12 @@ def write( for perturbation_index in range(1, number_of_perturbations + 1): # make a deepcopy to preserve the original dataframe - df_modified = df_original.copy(deep=True) - df_modified = df_modified.astype( + perturbed_data = original_data.copy(deep=True) + perturbed_data = perturbed_data.astype( { variable.name: PintType(variable.unit) for variable in variables - if variable.name in df_original + if variable.name in original_data }, copy=False, ) @@ -806,8 +806,8 @@ def write( perturbation *= variable.unit # add the error to the variable with bounds to some physical constraints - df_modified = variable.perturb( - df_modified, values=perturbation, times=self.validation_times, + perturbed_data = variable.perturb( + perturbed_data, values=perturbation, times=self.validation_times, ) elif variable.perturbation_type == PerturbationType.LINEAR: if alpha is None: @@ -819,21 +819,21 @@ def write( perturbation *= variable.unit # subtract the error from the variable with physical constraint bounds - df_modified = variable.perturb( - df_modified, values=perturbation, times=self.validation_times, + perturbed_data = variable.perturb( + perturbed_data, values=perturbation, times=self.validation_times, ) if isinstance(variable, MaximumSustainedWindSpeed): # In case of Vmax need to change the central pressure incongruence with it (obeying Holland B relationship) - df_modified[CentralPressure.name] = self.compute_pc_from_Vmax(df_modified) + perturbed_data[CentralPressure.name] = self.compute_pc_from_Vmax(perturbed_data) # remove units from data frame - for column in df_modified: - if isinstance(df_modified[column].dtype, PintType): - df_modified[column] = df_modified[column].pint.magnitude + for column in perturbed_data: + if isinstance(perturbed_data[column].dtype, PintType): + perturbed_data[column] = perturbed_data[column].pint.magnitude # reset the dataframe - self.forcing._df = df_modified + self.forcing._df = perturbed_data # write out the modified fort.22 self.forcing.write( @@ -847,12 +847,12 @@ def validation_times(self) -> [timedelta]: def compute_initial(self, var: str) -> float: """ the initial value of the input variable var (Vmax or Rmax) """ - return self.forcing.df[var].iloc[0] + return self.forcing.data[var].iloc[0] @property def holland_B(self) -> float: """ Compute Holland B at each time snap """ - dataframe = self.forcing.df + dataframe = self.forcing.data Vmax = dataframe[MaximumSustainedWindSpeed.name] DelP = dataframe[BackgroundPressure.name] - dataframe[CentralPressure.name] B = Vmax * Vmax * AIR_DENSITY * E1 / DelP diff --git a/ensembleperturbation/plotting.py b/ensembleperturbation/plotting.py index d31319ce..f09059b7 100644 --- a/ensembleperturbation/plotting.py +++ b/ensembleperturbation/plotting.py @@ -1,12 +1,20 @@ +import io +from os import PathLike +import pathlib from typing import Union - # from affine import Affine +import zipfile + +import appdirs +import geopandas from matplotlib import pyplot +from matplotlib.axes import Axes from matplotlib.cm import get_cmap import numpy from osgeo import gdal -from shapely.geometry import MultiPoint, MultiPolygon, Polygon -from shapely.geometry import shape as shapely_shape +import requests +from shapely.geometry import MultiPoint, MultiPolygon, Polygon, \ + shape as shapely_shape from .utilities import get_logger @@ -529,3 +537,40 @@ def plot_points( # nums, counts = numpy.unique(arr, return_counts=True) # index = numpy.where(counts == numpy.amax(counts)) # return int(nums[index]) + + +def download_coastline(overwrite: bool = False) -> pathlib.Path: + data_directory = pathlib.Path(appdirs.user_data_dir('ne_coastline')) + if not data_directory.exists(): + data_directory.mkdir(exist_ok=True, parents=True) + + coastline_filename = data_directory / 'ne_110m_coastline.shp' + + if not coastline_filename.exists() or overwrite: + # download and save if not present + url = 'http://naciscdn.org/naturalearth/110m/physical/ne_110m_coastline.zip' + response = requests.get(url, stream=True) + with zipfile.ZipFile(io.BytesIO(response.content)) as zip_file: + for member_filename in zip_file.namelist(): + file_data = zip_file.read(member_filename) + with open(data_directory / member_filename, 'wb') as output_file: + output_file.write(file_data) + assert coastline_filename.exists(), 'coastline file not downloaded' + + return coastline_filename + + +def plot_coastline(axis: Axes = None, show: bool = False, save_filename: PathLike = None): + if axis is None: + figure = pyplot.figure() + axis = figure.add_subplot(1, 1, 1) + + coastline_filename = download_coastline() + dataframe = geopandas.read_file(coastline_filename) + dataframe.plot(ax=axis) + + if save_filename is not None: + pyplot.savefig(save_filename) + + if show: + pyplot.show() diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index 6f475051..ad312abc 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -1,4 +1,4 @@ -from collections import Collection +from collections.abc import Collection from datetime import datetime, timedelta from functools import wraps import gzip @@ -12,16 +12,20 @@ from typing import Any, Union import urllib.request +from dateutil.parser import parse as parse_date from haversine import haversine -import matplotlib.pyplot as plt +from matplotlib import pyplot +from matplotlib.axes import Axes from matplotlib.transforms import Bbox -import numpy as np +import numpy as numpy from pandas import DataFrame, read_csv -from pyproj import CRS, Proj, Transformer +from pyproj import CRS, Geod, Transformer from shapely import ops from shapely.geometry import Point, Polygon import utm +from ensembleperturbation.plotting import plot_coastline + logger = logging.getLogger(__name__) @@ -33,9 +37,14 @@ def __init__( end_date: datetime = None, dst_crs: CRS = None, ): + self.__dataframe = None + self.__atcf = None + self.__storm_id = None + self.__start_date = None + self.__end_date = None if isinstance(storm, DataFrame): - self.__df = storm + self.__dataframe = storm elif isinstance(storm, io.BytesIO): self.__atcf = storm elif isinstance(storm, (str, PathLike, pathlib.Path)): @@ -48,109 +57,76 @@ def __init__( self._end_date = end_date self._dst_crs = dst_crs - def __str__(self): - record_number = self._generate_record_numbers() - fort22 = [] - for i, (_, row) in enumerate(self.df.iterrows()): - line = [] + self.__previous_configuration = None - line.extend( - [ - f'{row["basin"]:<2}', - f'{row["storm_number"]:>3}', - f'{row["datetime"]:%Y%m%d%H}'.rjust(11), - f'{"":3}', - f'{row["record_type"]:>5}', - f'{convert_value((row["datetime"] - self.start_date) / timedelta(hours=1), to_type=int):>4}', - ] - ) + @property + def storm_id(self) -> str: + return f'{self.basin}{self.storm_number}{self.year}' - latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1,) - if latitude >= 0: - line.append(f'{latitude:>4}N') - else: - line.append(f'{latitude * -.1:>4}S') + @storm_id.setter + def storm_id(self, storm_id: str): + self.__storm_id = storm_id - longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1,) - if longitude >= 0: - line.append(f'{longitude:>5}E') - else: - line.append(f'{longitude * -1:>5}W') + # Different archive source information: + # + # files: aBBCCYYYY.dat - guidance information + # bBBCCYYYY.dat - best track information + # fBBCCYYYY.dat - fix information + # eBBCCYYYY.dat - probability information + # + # BB - basin: al (Atlantic), ep (East Pacific), cp (Central Pacific), + # and sl (South Atlantic) + # CC - storm number + # YYYY - 4-digit Year + # ref: ftp://ftp.nhc.noaa.gov/atcf/archive/README + if storm_id is not None: + chars = 0 + for char in storm_id: + if char.isdigit(): + chars += 1 - line.extend( - [ - f'{convert_value(row["max_sustained_wind_speed"], to_type=int, round_digits=0):>4}', - f'{convert_value(row["central_pressure"], to_type=int, round_digits=0):>5}', - f'{row["development_level"]:>3}', - f'{convert_value(row["isotach"], to_type=int, round_digits=0):>4}', - f'{row["quadrant"]:>4}', - f'{convert_value(row["radius_for_NEQ"], to_type=int, round_digits=0):>5}', - f'{convert_value(row["radius_for_SEQ"], to_type=int, round_digits=0):>5}', - f'{convert_value(row["radius_for_SWQ"], to_type=int, round_digits=0):>5}', - f'{convert_value(row["radius_for_NWQ"], to_type=int, round_digits=0):>5}', - ] - ) + if chars == 4: - if row['background_pressure'] is None: - row['background_pressure'] = self.df['background_pressure'].iloc[i - 1] - if ( - row['background_pressure'] <= row['central_pressure'] - and 1013 > row['central_pressure'] - ): - background_pressure = 1013 - elif ( - row['background_pressure'] <= row['central_pressure'] - and 1013 <= row['central_pressure'] - ): - background_pressure = convert_value( - row['central_pressure'] + 1, to_type=int, round_digits=0, - ) - else: - background_pressure = convert_value( - row['background_pressure'], to_type=int, round_digits=0, - ) - line.append(f'{background_pressure:>5}') + _atcf_id = atcf_id(storm_id) + if _atcf_id is None: + msg = f'No storm with id: {storm_id}' + raise Exception(msg) + storm_id = _atcf_id - line.extend( - [ - f'{convert_value(row["radius_of_last_closed_isobar"], to_type=int, round_digits=0):>5}', - f'{convert_value(row["radius_of_maximum_winds"], to_type=int, round_digits=0):>4}', - f'{"":>5}', # gust - f'{"":>4}', # eye - f'{"":>4}', # subregion - f'{"":>4}', # maxseas - f'{"":>4}', # initials - f'{row["direction"]:>3}', - f'{row["speed"]:>4}', - f'{row["name"]:^12}', - ] - ) + url = f'ftp://ftp.nhc.noaa.gov/atcf/archive/{storm_id[4:]}/b{storm_id[0:2].lower()}{storm_id[2:]}.dat.gz' - # from this point forwards it's all aswip - line.append(f'{record_number[i]:>4}') + try: + logger.info(f'Downloading storm data from {url}') + response = urllib.request.urlopen(url) + except urllib.error.URLError as e: + if '550' in e.reason: + raise NameError( + f'Did not find storm with id {storm_id}. ' + + f'Submitted URL was {url}.' + ) + else: - fort22.append(','.join(line)) + @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) + def make_request(): + logger.info(f'Downloading storm data from {url} failed, retrying...') + return urllib.request.urlopen(url) - return '\n'.join(fort22) + response = make_request() - def write(self, path: PathLike, overwrite: bool = False): - if not isinstance(path, pathlib.Path): - path = pathlib.Path(path) - if path.exists() and overwrite is False: - raise Exception('File exist, set overwrite=True to allow overwrite.') - with open(path, 'w') as f: - f.write(str(self)) + self.__atcf = io.BytesIO(response.read()) @property - def storm_id(self) -> str: - return self._storm_id + def data(self): + start_date_mask = self._df['datetime'] >= self.start_date + end_date_mask = self._df['datetime'] <= self._file_end_date + return self._df[start_date_mask & end_date_mask] - @property - def _storm_id(self) -> str: - return f'{self.basin}{self.storm_number}{self.year}' + @data.setter + def data(self, dataframe: DataFrame): + self.__dataframe = dataframe - @_storm_id.setter - def _storm_id(self, storm_id: str): + @property + def atcf(self): # Different archive source information: # # files: aBBCCYYYY.dat - guidance information @@ -163,7 +139,7 @@ def _storm_id(self, storm_id: str): # CC - storm number # YYYY - 4-digit Year # ref: ftp://ftp.nhc.noaa.gov/atcf/archive/README - if storm_id is not None: + if self.storm_id is not None: chars = 0 for char in storm_id: if char.isdigit(): @@ -199,199 +175,188 @@ def make_request(): self.__atcf = io.BytesIO(response.read()) + return self.__atcf + @property - def start_date(self) -> datetime: - return self._start_date + def _df(self): + if self.__dataframe is None: + # https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt + + columns = [ + 'basin', + 'storm_number', + 'datetime', + 'record_type', + 'latitude', + 'longitude', + 'max_sustained_wind_speed', + 'central_pressure', + 'development_level', + 'isotach', + 'quadrant', + 'radius_for_NEQ', + 'radius_for_SEQ', + 'radius_for_SWQ', + 'radius_for_NWQ', + 'background_pressure', + 'radius_of_last_closed_isobar', + 'radius_of_maximum_winds', + 'name', + 'direction', + 'speed', + ] - @start_date.setter - def start_date(self, start_date: datetime): - self._start_date = start_date + if isinstance(self.__atcf, io.BytesIO): + lines = gzip.GzipFile(fileobj=self.__atcf) + else: + lines = self.__atcf + + records = [] + for line_index, line in enumerate(lines): + line = line.decode('UTF-8').split(',') + + record = { + 'basin': line[0], + 'storm_number': line[1].strip(' '), + } + + minutes = line[3].strip(' ') + if minutes == "": + minutes = '00' + record['datetime'] = parse_date(line[2].strip(' ') + minutes) + + record['record_type'] = line[4].strip(' ') + + latitude = line[6] + if 'N' in latitude: + latitude = float(latitude.strip('N ')) + elif 'S' in latitude: + latitude = float(latitude.strip('S ')) * -1 + latitude *= 0.1 + record['latitude'] = latitude + + longitude = line[7] + if 'E' in longitude: + longitude = float(longitude.strip('E ')) * 0.1 + elif 'W' in longitude: + longitude = float(longitude.strip('W ')) * -0.1 + record['longitude'] = longitude + + record.update({ + 'max_sustained_wind_speed': float(line[8].strip(' ')), + 'central_pressure': float(line[9].strip(' ')), + 'development_level': line[10].strip(' '), + }) + + try: + record['isotach'] = int(line[11].strip(' ')) + except ValueError: + raise Exception( + 'Error: No radial wind information for this storm; ' + 'parametric wind model cannot be built.' + ) + + record.update({ + 'quadrant': line[12].strip(' '), + 'radius_for_NEQ': int(line[13].strip(' ')), + 'radius_for_SEQ': int(line[14].strip(' ')), + 'radius_for_SWQ': int(line[15].strip(' ')), + 'radius_for_NWQ': int(line[16].strip(' ')), + }) + + if len(line) > 18: + record.update({ + 'background_pressure': int(line[17].strip(' ')), + 'radius_of_last_closed_isobar': int(line[18].strip(' ')), + 'radius_of_maximum_winds': int(line[19].strip(' ')), + }) + + if len(line) > 23: + record['name'] = line[27].strip(' ') + else: + record['name'] = '' + else: + record.update({ + 'background_pressure': record['background_pressure'][-1], + 'radius_of_last_closed_isobar': record['radius_of_last_closed_isobar'][-1], + 'radius_of_maximum_winds': record['radius_of_maximum_winds'][-1], + 'name': '', + }) + + records.append(record) + + self.__dataframe = self.__compute_velocity(DataFrame.from_records(data=records, columns=columns)) + return self.__dataframe @property - def _start_date(self) -> datetime: + def start_date(self) -> datetime: return self.__start_date - @_start_date.setter - def _start_date(self, start_date: datetime): - if start_date is not None: - assert isinstance(start_date, datetime) + @start_date.setter + def start_date(self, start_date: datetime): + if start_date is None: + start_date = self._df['datetime'][0] else: - start_date = self._df['datetime'].iloc[0] - msg = f"start_date must be >= {self._df['datetime'].iloc[0]} " - msg += f"and <{self._df['datetime'].iloc[-1]}" - assert ( - start_date >= self._df['datetime'].iloc[0] - and start_date < self._df['datetime'].iloc[-1] - ), msg + if not isinstance(start_date, datetime): + start_date = parse_date(start_date) + if start_date < self._df['datetime'][0] or start_date > self._df['datetime'][-1]: + raise ValueError( + f'given start date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})') self.__start_date = start_date @property def end_date(self) -> datetime: - return self._end_date + return self.__end_date @end_date.setter def end_date(self, end_date: datetime): - self._end_date = end_date - - @property - def _end_date(self) -> datetime: - return self.__end_date - - @_end_date.setter - def _end_date(self, end_date: datetime): - if end_date is not None: - assert isinstance(end_date, datetime) + if end_date is None: + end_date = self._df['datetime'][-1] else: - end_date = self._df['datetime'].iloc[-1] - msg = f"end_date must be >= {self._df['datetime'].iloc[0]} " - msg += f"and <= {self._df['datetime'].iloc[-1]}. " - msg += f'The given end_date was {end_date}.' - assert ( - end_date > self._df['datetime'].iloc[0] - and end_date <= self._df['datetime'].iloc[-1] - ), msg - msg = 'end_date must be larger than start_date.\n' - msg += f'start_date is {self.start_date} and end_date is {end_date}.' - assert end_date > self.start_date, msg + if not isinstance(end_date, datetime): + end_date = parse_date(end_date) + if end_date < self._df['datetime'][0] or end_date > self._df['datetime'][-1]: + raise ValueError( + f'given end date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})') + if end_date <= self.start_date: + raise ValueError(f'end date must be after start date ({self.start_date})') self.__end_date = end_date @property def name(self) -> str: - return self.df['name'].value_counts()[:].index.tolist()[0] + return self.data['name'].value_counts()[:].index.tolist()[0] @property def basin(self) -> str: - return self.df['basin'].iloc[0] + return self.data['basin'].iloc[0] @property def storm_number(self) -> str: - return self.df['storm_number'].iloc[0] + return self.data['storm_number'].iloc[0] @property def year(self) -> int: - return self.df['datetime'].iloc[0].year + return self.data['datetime'].iloc[0].year @property def datetime(self): - return self.df['datetime'] + return self.data['datetime'] @property def speed(self): - return self.df['speed'] + return self.data['speed'] @property def direction(self): - return self.df['direction'] + return self.data['direction'] @property def longitude(self): - return self.df['longitude'] + return self.data['longitude'] @property def latitude(self): - return self.df['latitude'] - - @property - def df(self): - start_date_mask = self._df['datetime'] >= self.start_date - end_date_mask = self._df['datetime'] <= self._file_end_date - return self._df[start_date_mask & end_date_mask] - - @property - def _df(self): - # https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt - try: - return self.__df - except AttributeError: - data = { - 'basin': list(), - 'storm_number': list(), - 'datetime': list(), - 'record_type': list(), - 'latitude': list(), - 'longitude': list(), - 'max_sustained_wind_speed': list(), - 'central_pressure': list(), - 'development_level': list(), - 'isotach': list(), - 'quadrant': list(), - 'radius_for_NEQ': list(), - 'radius_for_SEQ': list(), - 'radius_for_SWQ': list(), - 'radius_for_NWQ': list(), - 'background_pressure': list(), - 'radius_of_last_closed_isobar': list(), - 'radius_of_maximum_winds': list(), - 'name': list(), - 'direction': list(), - 'speed': list(), - } - if isinstance(self.__atcf, io.BytesIO): - fd = gzip.GzipFile(fileobj=self.__atcf) - else: - fd = self.__atcf - - for i, line in enumerate(fd): - line = line.decode('UTF-8').split(',') - data['basin'].append(line[0]) - data['storm_number'].append(line[1].strip(' ')) - _datetime = line[2].strip(' ') - _minutes = line[3].strip(' ') - if _minutes == "": - _minutes = '00' - _datetime = _datetime + _minutes - data['datetime'].append(datetime.strptime(_datetime, '%Y%m%d%H%M')) - data['record_type'].append(line[4].strip(' ')) - if 'N' in line[6]: - _lat = float(line[6].strip('N ')) * 0.1 - elif 'S' in line: - _lat = float(line[6].strip('S ')) * -0.1 - data['latitude'].append(_lat) - if 'E' in line[7]: - _lon = float(line[7].strip('E ')) * 0.1 - elif 'W' in line[7]: - _lon = float(line[7].strip('W ')) * -0.1 - data['longitude'].append(_lon) - data['max_sustained_wind_speed'].append(float(line[8].strip(' '))) - data['central_pressure'].append(float(line[9].strip(' '))) - data['development_level'].append(line[10].strip(' ')) - try: - data['isotach'].append(int(line[11].strip(' '))) - except ValueError: - raise Exception( - 'Error: No radial wind information for this storm; ' - 'parametric wind model cannot be built.' - ) - data['quadrant'].append(line[12].strip(' ')) - data['radius_for_NEQ'].append(int(line[13].strip(' '))) - data['radius_for_SEQ'].append(int(line[14].strip(' '))) - data['radius_for_SWQ'].append(int(line[15].strip(' '))) - data['radius_for_NWQ'].append(int(line[16].strip(' '))) - if len(line) > 18: - data['background_pressure'].append(int(line[17].strip(' '))) - data['radius_of_last_closed_isobar'].append(int(line[18].strip(' '))) - data['radius_of_maximum_winds'].append(int(line[19].strip(' '))) - if len(line) > 23: - data['name'].append(line[27].strip(' ')) - else: - data['name'].append("") - else: - data['background_pressure'].append(data['background_pressure'][-1]) - data['radius_of_last_closed_isobar'].append( - data['radius_of_last_closed_isobar'][-1] - ) - data['radius_of_maximum_winds'].append(data['radius_of_maximum_winds'][-1]) - data['name'].append("") - data = self._compute_velocity(data) - # data = self._transform_coordinates(data) - self.__df = DataFrame(data=data) - return self.__df - - @_df.setter - def _df(self, data): - msg = f'data must be a pandas {DataFrame} instance.' - assert isinstance(data, DataFrame), msg - self.__df = DataFrame(data=data) + return self.data['latitude'] def clip_to_bbox(self, bbox, bbox_crs): msg = f'bbox must be a {Bbox} instance.' @@ -406,7 +371,7 @@ def clip_to_bbox(self, bbox, bbox_crs): ] ) _switch = True - unique_dates = np.unique(self._df['datetime']) + unique_dates = numpy.unique(self._df['datetime']) _found_start_date = False for _datetime in unique_dates: records = self._df[self._df['datetime'] == _datetime] @@ -445,24 +410,24 @@ def clip_to_bbox(self, bbox, bbox_crs): if _found_start_date is False: raise Exception(f'No data within mesh bounding box for storm {self.storm_id}.') - def plot_track(self, axes=None, show=False, color='k', **kwargs): + def plot_track(self, axis: Axes = None, show: bool = False, color: str = 'k', **kwargs): kwargs.update({'color': color}) - if axes is None: - fig = plt.figure() - axes = fig.add_subplot(111) + if axis is None: + fig = pyplot.figure() + axis = fig.add_subplot(111) for i in range(len(self.speed)): # when dealing with nautical degrees, U is sine and V is cosine. - U = self.speed.iloc[i] * np.sin(np.deg2rad(self.direction.iloc[i])) - V = self.speed.iloc[i] * np.cos(np.deg2rad(self.direction.iloc[i])) - axes.quiver(self.longitude.iloc[i], self.latitude.iloc[i], U, V, **kwargs) + U = self.speed.iloc[i] * numpy.sin(numpy.deg2rad(self.direction.iloc[i])) + V = self.speed.iloc[i] * numpy.cos(numpy.deg2rad(self.direction.iloc[i])) + axis.quiver(self.longitude.iloc[i], self.latitude.iloc[i], U, V, **kwargs) if i % 6 == 0: - axes.annotate( - self.df['datetime'].iloc[i], + axis.annotate( + self.data['datetime'].iloc[i], (self.longitude.iloc[i], self.latitude.iloc[i]), ) if show: - axes.axis('scaled') - _fetch_and_plot_coastline(axes, show) + axis.axis('scaled') + plot_coastline(axis, show) def _generate_record_numbers(self): record_number = [1] @@ -478,66 +443,176 @@ def transform_to(self, crs): @property def _file_end_date(self): - unique_dates = np.unique(self._df['datetime']) + unique_dates = numpy.unique(self._df['datetime']) for date in unique_dates: - if date >= np.datetime64(self.end_date): + if date >= numpy.datetime64(self.end_date): return date + def __str__(self): + record_number = self._generate_record_numbers() + lines = [] + for i, (_, row) in enumerate(self.data.iterrows()): + line = [] + + line.extend( + [ + f'{row["basin"]:<2}', + f'{row["storm_number"]:>3}', + f'{row["datetime"]:%Y%m%d%H}'.rjust(11), + f'{"":3}', + f'{row["record_type"]:>5}', + f'{convert_value((row["datetime"] - self.start_date) / timedelta(hours=1), to_type=int):>4}', + ] + ) + + latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1, ) + if latitude >= 0: + line.append(f'{latitude:>4}N') + else: + line.append(f'{latitude * -.1:>4}S') + + longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1, ) + if longitude >= 0: + line.append(f'{longitude:>5}E') + else: + line.append(f'{longitude * -1:>5}W') + + line.extend( + [ + f'{convert_value(row["max_sustained_wind_speed"], to_type=int, round_digits=0):>4}', + f'{convert_value(row["central_pressure"], to_type=int, round_digits=0):>5}', + f'{row["development_level"]:>3}', + f'{convert_value(row["isotach"], to_type=int, round_digits=0):>4}', + f'{row["quadrant"]:>4}', + f'{convert_value(row["radius_for_NEQ"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_for_SEQ"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_for_SWQ"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_for_NWQ"], to_type=int, round_digits=0):>5}', + ] + ) + + if row['background_pressure'] is None: + row['background_pressure'] = self.data['background_pressure'].iloc[i - 1] + if ( + row['background_pressure'] <= row['central_pressure'] + and 1013 > row['central_pressure'] + ): + background_pressure = 1013 + elif ( + row['background_pressure'] <= row['central_pressure'] + and 1013 <= row['central_pressure'] + ): + background_pressure = convert_value( + row['central_pressure'] + 1, to_type=int, round_digits=0, + ) + else: + background_pressure = convert_value( + row['background_pressure'], to_type=int, round_digits=0, + ) + line.append(f'{background_pressure:>5}') + + line.extend( + [ + f'{convert_value(row["radius_of_last_closed_isobar"], to_type=int, round_digits=0):>5}', + f'{convert_value(row["radius_of_maximum_winds"], to_type=int, round_digits=0):>4}', + f'{"":>5}', # gust + f'{"":>4}', # eye + f'{"":>4}', # subregion + f'{"":>4}', # maxseas + f'{"":>4}', # initials + f'{row["direction"]:>3}', + f'{row["speed"]:>4}', + f'{row["name"]:^12}', + ] + ) + + # from this point forwards it's all aswip + line.append(f'{record_number[i]:>4}') + + lines.append(','.join(line)) + + return '\n'.join(lines) + + def write(self, path: PathLike, overwrite: bool = False): + if not isinstance(path, pathlib.Path): + path = pathlib.Path(path) + if path.exists() and overwrite is False: + raise Exception('File exist, set overwrite=True to allow overwrite.') + with open(path, 'w') as f: + f.write(str(self)) + @staticmethod - def _compute_velocity(data): - """ - Output has units of meters per second. - """ - merc = Proj('EPSG:3395') - x, y = merc(data['longitude'], data['latitude']) - unique_datetimes = np.unique(data['datetime']) - for i, _datetime in enumerate(unique_datetimes): - (indexes,) = np.where(np.asarray(data['datetime']) == _datetime) - for idx in indexes: - if indexes[-1] + 1 < len(data['datetime']): + def __compute_velocity(data: DataFrame) -> DataFrame: + """ Output has units of meters per second. """ + + geod = Geod() + + unique_datetimes = numpy.unique(data['datetime']) + for datetime_index, unique_datetime in enumerate(unique_datetimes): + unique_datetime_indices = numpy.where(numpy.asarray(data['datetime']) == unique_datetime)[0] + for unique_datetime_index in unique_datetime_indices: + if unique_datetime_indices[-1] + 1 < len(data['datetime']): dt = ( - data['datetime'][indexes[-1] + 1] - data['datetime'][idx] - ).total_seconds() / (60.0 * 60.0) + data['datetime'][unique_datetime_indices[-1] + 1] - data['datetime'][unique_datetime_index] + ) / timedelta(hours=1) + forward_azimuth, inverse_azimuth, distance = geod.inv( + data['longitude'][unique_datetime_indices[-1] + 1], + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_index], + data['latitude'][unique_datetime_index], + ) + dx = haversine( - (data['latitude'][idx], data['longitude'][indexes[-1] + 1]), - (data['latitude'][idx], data['longitude'][idx]), + (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_indices[-1] + 1]), + (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), unit='nmi', ) dy = haversine( - (data['latitude'][indexes[-1] + 1], data['longitude'][idx]), - (data['latitude'][idx], data['longitude'][idx]), + (data['latitude'][unique_datetime_indices[-1] + 1], data['longitude'][unique_datetime_index]), + (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), unit='nmi', ) - vx = np.copysign( - dx / dt, data['longitude'][indexes[-1] + 1] - data['longitude'][idx], + vx = numpy.copysign( + dx / dt, data['longitude'][unique_datetime_indices[-1] + 1] - data['longitude'][unique_datetime_index], ) - vy = np.copysign( - dy / dt, data['latitude'][indexes[-1] + 1] - data['latitude'][idx], + vy = numpy.copysign( + dy / dt, data['latitude'][unique_datetime_indices[-1] + 1] - data['latitude'][unique_datetime_index], ) else: dt = ( - data['datetime'][idx] - data['datetime'][indexes[0] - 1] - ).total_seconds() / (60.0 * 60.0) + data['datetime'][unique_datetime_index] - data['datetime'][unique_datetime_indices[0] - 1] + ) / timedelta(hours=1) + + forward_azimuth, inverse_azimuth, distance = geod.inv( + data['longitude'][unique_datetime_indices[0] - 1], + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_index], + data['latitude'][unique_datetime_index], + ) + dx = haversine( - (data['latitude'][idx], data['longitude'][indexes[0] - 1]), - (data['latitude'][idx], data['longitude'][idx]), + (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_indices[0] - 1]), + (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), unit='nmi', ) dy = haversine( - (data['latitude'][indexes[0] - 1], data['longitude'][idx]), - (data['latitude'][idx], data['longitude'][idx]), + (data['latitude'][unique_datetime_indices[0] - 1], data['longitude'][unique_datetime_index]), + (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), unit='nmi', ) - vx = np.copysign( - dx / dt, data['longitude'][idx] - data['longitude'][indexes[0] - 1], + vx = numpy.copysign( + dx / dt, data['longitude'][unique_datetime_index] - data['longitude'][unique_datetime_indices[0] - 1], ) - vy = np.copysign( - dy / dt, data['latitude'][idx] - data['latitude'][indexes[0] - 1], + vy = numpy.copysign( + dy / dt, data['latitude'][unique_datetime_index] - data['latitude'][unique_datetime_indices[0] - 1], ) - speed = np.sqrt(dx ** 2 + dy ** 2) / dt - bearing = (360.0 + np.rad2deg(np.arctan2(vx, vy))) % 360 - data['speed'].append(int(np.around(speed, 0))) - data['direction'].append(int(np.around(bearing, 0))) + speed = numpy.sqrt(dx ** 2 + dy ** 2) / dt + bearing = (360.0 + numpy.rad2deg(numpy.arctan2(vx, vy))) % 360 + + speed = distance / dt + + data['speed'].append(int(numpy.around(speed, 0))) + data['direction'].append(int(numpy.around(bearing, 0))) return data @classmethod @@ -554,9 +629,9 @@ def from_fort22( if end_date is None: end_date = max(data['datetime']) - instance = cls(storm=storm_id, start_date=start_date, end_date=end_date,) + instance = cls(storm=storm_id, start_date=start_date, end_date=end_date) - instance.__df = data + instance.__dataframe = data return instance @@ -564,7 +639,7 @@ def from_fort22( def from_atcf_file( cls, atcf: PathLike, start_date: datetime = None, end_date: datetime = None, ) -> 'BestTrackForcing': - return cls(storm=atcf, start_date=start_date, end_date=end_date,) + return cls(storm=atcf, start_date=start_date, end_date=end_date) def convert_value(value: Any, to_type: type, round_digits: int = None) -> Any: @@ -629,7 +704,7 @@ def request_url(): return urllib.request.urlopen(url) res = request_url() - df = read_csv(StringIO("".join([_.decode('utf-8') for _ in res])), header=None,) + df = read_csv(StringIO("".join([_.decode('utf-8') for _ in res])), header=None, ) name = storm_id[:-4] year = storm_id[-4:] entry = df.loc[(df[0] == name.upper().rjust(10)) & (df[8] == int(year))] @@ -697,15 +772,15 @@ def read_atcf(track: PathLike) -> DataFrame: row_data['max_sustained_wind_speed'] = convert_value( row[8], to_type=int, round_digits=0, ) - row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0,) + row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0, ) row_data['development_level'] = row[10] - row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0,) + row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0, ) row_data['quadrant'] = row[12] - row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0,) - row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0,) - row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0,) - row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0,) - row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0,) + row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0, ) + row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0, ) + row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0, ) + row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0, ) + row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0, ) row_data['radius_of_last_closed_isobar'] = convert_value( row[18], to_type=int, round_digits=0, ) diff --git a/setup.py b/setup.py index ba02895b..636a8ee8 100644 --- a/setup.py +++ b/setup.py @@ -79,7 +79,6 @@ python_requires='>=3.6', setup_requires=['dunamai', 'setuptools>=41.2'], install_requires=[ - 'adcircpy>=1.0.32', 'bs4', 'coupledmodeldriver', 'fiona', From d5c4240b770ee8658ce927489ff0cd1a66526f01 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Mon, 14 Jun 2021 13:36:00 +0000 Subject: [PATCH 20/29] Fix code style issues with oitnb --- .../perturbation/make_storm_ensemble.py | 4 +- ensembleperturbation/plotting.py | 5 +- ensembleperturbation/tropicalcyclone/atcf.py | 156 ++++++++++++------ 3 files changed, 109 insertions(+), 56 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 1e1c42aa..03f60c93 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -825,7 +825,9 @@ def write( if isinstance(variable, MaximumSustainedWindSpeed): # In case of Vmax need to change the central pressure incongruence with it (obeying Holland B relationship) - perturbed_data[CentralPressure.name] = self.compute_pc_from_Vmax(perturbed_data) + perturbed_data[CentralPressure.name] = self.compute_pc_from_Vmax( + perturbed_data + ) # remove units from data frame for column in perturbed_data: diff --git a/ensembleperturbation/plotting.py b/ensembleperturbation/plotting.py index f09059b7..fcb16bc5 100644 --- a/ensembleperturbation/plotting.py +++ b/ensembleperturbation/plotting.py @@ -2,6 +2,7 @@ from os import PathLike import pathlib from typing import Union + # from affine import Affine import zipfile @@ -13,8 +14,8 @@ import numpy from osgeo import gdal import requests -from shapely.geometry import MultiPoint, MultiPolygon, Polygon, \ - shape as shapely_shape +from shapely.geometry import MultiPoint, MultiPolygon, Polygon +from shapely.geometry import shape as shapely_shape from .utilities import get_logger diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index ad312abc..e24bc323 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -242,11 +242,13 @@ def _df(self): longitude = float(longitude.strip('W ')) * -0.1 record['longitude'] = longitude - record.update({ - 'max_sustained_wind_speed': float(line[8].strip(' ')), - 'central_pressure': float(line[9].strip(' ')), - 'development_level': line[10].strip(' '), - }) + record.update( + { + 'max_sustained_wind_speed': float(line[8].strip(' ')), + 'central_pressure': float(line[9].strip(' ')), + 'development_level': line[10].strip(' '), + } + ) try: record['isotach'] = int(line[11].strip(' ')) @@ -256,36 +258,46 @@ def _df(self): 'parametric wind model cannot be built.' ) - record.update({ - 'quadrant': line[12].strip(' '), - 'radius_for_NEQ': int(line[13].strip(' ')), - 'radius_for_SEQ': int(line[14].strip(' ')), - 'radius_for_SWQ': int(line[15].strip(' ')), - 'radius_for_NWQ': int(line[16].strip(' ')), - }) + record.update( + { + 'quadrant': line[12].strip(' '), + 'radius_for_NEQ': int(line[13].strip(' ')), + 'radius_for_SEQ': int(line[14].strip(' ')), + 'radius_for_SWQ': int(line[15].strip(' ')), + 'radius_for_NWQ': int(line[16].strip(' ')), + } + ) if len(line) > 18: - record.update({ - 'background_pressure': int(line[17].strip(' ')), - 'radius_of_last_closed_isobar': int(line[18].strip(' ')), - 'radius_of_maximum_winds': int(line[19].strip(' ')), - }) + record.update( + { + 'background_pressure': int(line[17].strip(' ')), + 'radius_of_last_closed_isobar': int(line[18].strip(' ')), + 'radius_of_maximum_winds': int(line[19].strip(' ')), + } + ) if len(line) > 23: record['name'] = line[27].strip(' ') else: record['name'] = '' else: - record.update({ - 'background_pressure': record['background_pressure'][-1], - 'radius_of_last_closed_isobar': record['radius_of_last_closed_isobar'][-1], - 'radius_of_maximum_winds': record['radius_of_maximum_winds'][-1], - 'name': '', - }) + record.update( + { + 'background_pressure': record['background_pressure'][-1], + 'radius_of_last_closed_isobar': record[ + 'radius_of_last_closed_isobar' + ][-1], + 'radius_of_maximum_winds': record['radius_of_maximum_winds'][-1], + 'name': '', + } + ) records.append(record) - self.__dataframe = self.__compute_velocity(DataFrame.from_records(data=records, columns=columns)) + self.__dataframe = self.__compute_velocity( + DataFrame.from_records(data=records, columns=columns) + ) return self.__dataframe @property @@ -301,7 +313,8 @@ def start_date(self, start_date: datetime): start_date = parse_date(start_date) if start_date < self._df['datetime'][0] or start_date > self._df['datetime'][-1]: raise ValueError( - f'given start date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})') + f'given start date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})' + ) self.__start_date = start_date @property @@ -317,7 +330,8 @@ def end_date(self, end_date: datetime): end_date = parse_date(end_date) if end_date < self._df['datetime'][0] or end_date > self._df['datetime'][-1]: raise ValueError( - f'given end date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})') + f'given end date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})' + ) if end_date <= self.start_date: raise ValueError(f'end date must be after start date ({self.start_date})') self.__end_date = end_date @@ -465,13 +479,13 @@ def __str__(self): ] ) - latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1, ) + latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1,) if latitude >= 0: line.append(f'{latitude:>4}N') else: line.append(f'{latitude * -.1:>4}S') - longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1, ) + longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1,) if longitude >= 0: line.append(f'{longitude:>5}E') else: @@ -549,12 +563,15 @@ def __compute_velocity(data: DataFrame) -> DataFrame: unique_datetimes = numpy.unique(data['datetime']) for datetime_index, unique_datetime in enumerate(unique_datetimes): - unique_datetime_indices = numpy.where(numpy.asarray(data['datetime']) == unique_datetime)[0] + unique_datetime_indices = numpy.where( + numpy.asarray(data['datetime']) == unique_datetime + )[0] for unique_datetime_index in unique_datetime_indices: if unique_datetime_indices[-1] + 1 < len(data['datetime']): dt = ( - data['datetime'][unique_datetime_indices[-1] + 1] - data['datetime'][unique_datetime_index] - ) / timedelta(hours=1) + data['datetime'][unique_datetime_indices[-1] + 1] + - data['datetime'][unique_datetime_index] + ) / timedelta(hours=1) forward_azimuth, inverse_azimuth, distance = geod.inv( data['longitude'][unique_datetime_indices[-1] + 1], data['latitude'][unique_datetime_index], @@ -563,25 +580,42 @@ def __compute_velocity(data: DataFrame) -> DataFrame: ) dx = haversine( - (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_indices[-1] + 1]), - (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), + ( + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_indices[-1] + 1], + ), + ( + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_index], + ), unit='nmi', ) dy = haversine( - (data['latitude'][unique_datetime_indices[-1] + 1], data['longitude'][unique_datetime_index]), - (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), + ( + data['latitude'][unique_datetime_indices[-1] + 1], + data['longitude'][unique_datetime_index], + ), + ( + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_index], + ), unit='nmi', ) vx = numpy.copysign( - dx / dt, data['longitude'][unique_datetime_indices[-1] + 1] - data['longitude'][unique_datetime_index], + dx / dt, + data['longitude'][unique_datetime_indices[-1] + 1] + - data['longitude'][unique_datetime_index], ) vy = numpy.copysign( - dy / dt, data['latitude'][unique_datetime_indices[-1] + 1] - data['latitude'][unique_datetime_index], + dy / dt, + data['latitude'][unique_datetime_indices[-1] + 1] + - data['latitude'][unique_datetime_index], ) else: dt = ( - data['datetime'][unique_datetime_index] - data['datetime'][unique_datetime_indices[0] - 1] - ) / timedelta(hours=1) + data['datetime'][unique_datetime_index] + - data['datetime'][unique_datetime_indices[0] - 1] + ) / timedelta(hours=1) forward_azimuth, inverse_azimuth, distance = geod.inv( data['longitude'][unique_datetime_indices[0] - 1], @@ -591,20 +625,36 @@ def __compute_velocity(data: DataFrame) -> DataFrame: ) dx = haversine( - (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_indices[0] - 1]), - (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), + ( + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_indices[0] - 1], + ), + ( + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_index], + ), unit='nmi', ) dy = haversine( - (data['latitude'][unique_datetime_indices[0] - 1], data['longitude'][unique_datetime_index]), - (data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index]), + ( + data['latitude'][unique_datetime_indices[0] - 1], + data['longitude'][unique_datetime_index], + ), + ( + data['latitude'][unique_datetime_index], + data['longitude'][unique_datetime_index], + ), unit='nmi', ) vx = numpy.copysign( - dx / dt, data['longitude'][unique_datetime_index] - data['longitude'][unique_datetime_indices[0] - 1], + dx / dt, + data['longitude'][unique_datetime_index] + - data['longitude'][unique_datetime_indices[0] - 1], ) vy = numpy.copysign( - dy / dt, data['latitude'][unique_datetime_index] - data['latitude'][unique_datetime_indices[0] - 1], + dy / dt, + data['latitude'][unique_datetime_index] + - data['latitude'][unique_datetime_indices[0] - 1], ) speed = numpy.sqrt(dx ** 2 + dy ** 2) / dt bearing = (360.0 + numpy.rad2deg(numpy.arctan2(vx, vy))) % 360 @@ -704,7 +754,7 @@ def request_url(): return urllib.request.urlopen(url) res = request_url() - df = read_csv(StringIO("".join([_.decode('utf-8') for _ in res])), header=None, ) + df = read_csv(StringIO("".join([_.decode('utf-8') for _ in res])), header=None,) name = storm_id[:-4] year = storm_id[-4:] entry = df.loc[(df[0] == name.upper().rjust(10)) & (df[8] == int(year))] @@ -772,15 +822,15 @@ def read_atcf(track: PathLike) -> DataFrame: row_data['max_sustained_wind_speed'] = convert_value( row[8], to_type=int, round_digits=0, ) - row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0, ) + row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0,) row_data['development_level'] = row[10] - row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0, ) + row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0,) row_data['quadrant'] = row[12] - row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0, ) - row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0, ) - row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0, ) - row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0, ) - row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0, ) + row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0,) + row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0,) + row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0,) + row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0,) + row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0,) row_data['radius_of_last_closed_isobar'] = convert_value( row[18], to_type=int, round_digits=0, ) From 80c3b853816c12e6f66c287cb2d696d8f60b8676 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 10:45:57 -0400 Subject: [PATCH 21/29] use inverse geodetic calc to get distance and bearing --- .../perturbation/make_storm_ensemble.py | 12 +- ensembleperturbation/tropicalcyclone/atcf.py | 240 +++++------------- ensembleperturbation/utilities.py | 5 + .../test_besttrack_ensemble/along_track_1.22 | 140 +++++----- .../test_besttrack_ensemble/along_track_2.22 | 140 +++++----- .../test_besttrack_ensemble/along_track_3.22 | 140 +++++----- .../test_besttrack_ensemble/cross_track_1.22 | 140 +++++----- .../test_besttrack_ensemble/cross_track_2.22 | 140 +++++----- .../test_besttrack_ensemble/cross_track_3.22 | 140 +++++----- .../max_sustained_wind_speed_1.22 | 140 +++++----- .../max_sustained_wind_speed_2.22 | 140 +++++----- .../max_sustained_wind_speed_3.22 | 140 +++++----- .../test_besttrack_ensemble/original.22 | 140 +++++----- .../radius_of_maximum_winds_1.22 | 140 +++++----- .../radius_of_maximum_winds_2.22 | 140 +++++----- .../radius_of_maximum_winds_3.22 | 140 +++++----- tests/test_besttrack_ensemble.py | 2 +- 17 files changed, 983 insertions(+), 1096 deletions(-) diff --git a/ensembleperturbation/perturbation/make_storm_ensemble.py b/ensembleperturbation/perturbation/make_storm_ensemble.py index 03f60c93..38491807 100644 --- a/ensembleperturbation/perturbation/make_storm_ensemble.py +++ b/ensembleperturbation/perturbation/make_storm_ensemble.py @@ -55,9 +55,7 @@ from shapely.geometry import LineString from ensembleperturbation.tropicalcyclone.atcf import BestTrackForcing - -units = pint.UnitRegistry() -PintType.ureg = units +from ensembleperturbation.utilities import units AIR_DENSITY = 1.15 * units.kilogram / units.meters ** 3 @@ -447,7 +445,7 @@ def perturb( # get previous projected coordinate x_p, y_p = ( - transformer.transform(track_coords[idx_p][0], track_coords[idx_p][1],) + transformer.transform(track_coords[idx_p][0], track_coords[idx_p][1]) * units.meter ) @@ -465,7 +463,7 @@ def perturb( # get previous projected coordinate x_n, y_n = ( - transformer.transform(track_coords[idx_n][0], track_coords[idx_n][1],) + transformer.transform(track_coords[idx_n][0], track_coords[idx_n][1]) * units.meter ) @@ -588,7 +586,7 @@ def perturb( after_diffs = numpy.repeat( [unique_times[-1] - unique_times[-2]], max_interpolated_points ) * numpy.arange(1, max_interpolated_points + 1) - hours = numpy.concatenate((hours[0] - previous_diffs, hours, hours[-1] + after_diffs,)) + hours = numpy.concatenate((hours[0] - previous_diffs, hours, hours[-1] + after_diffs)) # loop over all coordinates new_coordinates = [] @@ -922,7 +920,7 @@ def utm_crs_from_longitude(longitude: float) -> CRS: return CRS.from_epsg(32600 + int(floor((longitude + 180) / 6) + 1)) -def get_offset(x1: float, y1: float, x2: float, y2: float, d: float,) -> (float, float): +def get_offset(x1: float, y1: float, x2: float, y2: float, d: float) -> (float, float): """ get_offset(x1,y1,x2,y2,d) - get the perpendicular offset to the line (x1,y1) -> (x2,y2) by a distance of d diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index e24bc323..2246a82b 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -3,7 +3,6 @@ from functools import wraps import gzip import io -from io import StringIO import logging import os from os import PathLike @@ -13,7 +12,6 @@ import urllib.request from dateutil.parser import parse as parse_date -from haversine import haversine from matplotlib import pyplot from matplotlib.axes import Axes from matplotlib.transforms import Bbox @@ -25,6 +23,7 @@ import utm from ensembleperturbation.plotting import plot_coastline +from ensembleperturbation.utilities import units logger = logging.getLogger(__name__) @@ -35,7 +34,6 @@ def __init__( storm: Union[str, PathLike, DataFrame, io.BytesIO], start_date: datetime = None, end_date: datetime = None, - dst_crs: CRS = None, ): self.__dataframe = None self.__atcf = None @@ -51,75 +49,27 @@ def __init__( if os.path.exists(storm): self.__atcf = io.open(storm, 'rb') else: - self._storm_id = storm + self.__storm_id = storm - self._start_date = start_date - self._end_date = end_date - self._dst_crs = dst_crs + self.start_date = start_date + self.end_date = end_date self.__previous_configuration = None @property def storm_id(self) -> str: - return f'{self.basin}{self.storm_number}{self.year}' + return self.__storm_id @storm_id.setter def storm_id(self, storm_id: str): self.__storm_id = storm_id - - # Different archive source information: - # - # files: aBBCCYYYY.dat - guidance information - # bBBCCYYYY.dat - best track information - # fBBCCYYYY.dat - fix information - # eBBCCYYYY.dat - probability information - # - # BB - basin: al (Atlantic), ep (East Pacific), cp (Central Pacific), - # and sl (South Atlantic) - # CC - storm number - # YYYY - 4-digit Year - # ref: ftp://ftp.nhc.noaa.gov/atcf/archive/README - if storm_id is not None: - chars = 0 - for char in storm_id: - if char.isdigit(): - chars += 1 - - if chars == 4: - - _atcf_id = atcf_id(storm_id) - if _atcf_id is None: - msg = f'No storm with id: {storm_id}' - raise Exception(msg) - storm_id = _atcf_id - - url = f'ftp://ftp.nhc.noaa.gov/atcf/archive/{storm_id[4:]}/b{storm_id[0:2].lower()}{storm_id[2:]}.dat.gz' - - try: - logger.info(f'Downloading storm data from {url}') - response = urllib.request.urlopen(url) - except urllib.error.URLError as e: - if '550' in e.reason: - raise NameError( - f'Did not find storm with id {storm_id}. ' - + f'Submitted URL was {url}.' - ) - else: - - @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) - def make_request(): - logger.info(f'Downloading storm data from {url} failed, retrying...') - return urllib.request.urlopen(url) - - response = make_request() - - self.__atcf = io.BytesIO(response.read()) + self.__storm_id = f'{self.basin}{self.storm_number}{self.year}' @property def data(self): - start_date_mask = self._df['datetime'] >= self.start_date - end_date_mask = self._df['datetime'] <= self._file_end_date - return self._df[start_date_mask & end_date_mask] + start_date_mask = self.dataframe['datetime'] >= self.start_date + end_date_mask = self.dataframe['datetime'] <= self._file_end_date + return self.dataframe[start_date_mask & end_date_mask] @data.setter def data(self, dataframe: DataFrame): @@ -139,19 +89,18 @@ def atcf(self): # CC - storm number # YYYY - 4-digit Year # ref: ftp://ftp.nhc.noaa.gov/atcf/archive/README - if self.storm_id is not None: - chars = 0 - for char in storm_id: - if char.isdigit(): - chars += 1 + storm_id = self.storm_id - if chars == 4: + if storm_id is not None: + digits = sum([1 for character in storm_id if character.isdigit()]) + + if digits == 4: + atcf_id = get_atcf_id(storm_id) + if atcf_id is None: + raise ValueError(f'No storm with id: {storm_id}') + storm_id = atcf_id - _atcf_id = atcf_id(storm_id) - if _atcf_id is None: - msg = f'No storm with id: {storm_id}' - raise Exception(msg) - storm_id = _atcf_id + self.__storm_id = storm_id url = f'ftp://ftp.nhc.noaa.gov/atcf/archive/{storm_id[4:]}/b{storm_id[0:2].lower()}{storm_id[2:]}.dat.gz' @@ -178,7 +127,7 @@ def make_request(): return self.__atcf @property - def _df(self): + def dataframe(self): if self.__dataframe is None: # https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt @@ -206,10 +155,10 @@ def _df(self): 'speed', ] - if isinstance(self.__atcf, io.BytesIO): - lines = gzip.GzipFile(fileobj=self.__atcf) + if isinstance(self.atcf, io.BytesIO): + lines = gzip.GzipFile(fileobj=self.atcf) else: - lines = self.__atcf + lines = self.atcf records = [] for line_index, line in enumerate(lines): @@ -307,13 +256,16 @@ def start_date(self) -> datetime: @start_date.setter def start_date(self, start_date: datetime): if start_date is None: - start_date = self._df['datetime'][0] + start_date = self.dataframe['datetime'][0] else: if not isinstance(start_date, datetime): start_date = parse_date(start_date) - if start_date < self._df['datetime'][0] or start_date > self._df['datetime'][-1]: + if ( + start_date < self.dataframe['datetime'].iloc[0] + or start_date > self.dataframe['datetime'].iloc[-1] + ): raise ValueError( - f'given start date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})' + f'given start date is outside of data bounds ({self.dataframe["datetime"].iloc[0]} - {self.dataframe["datetime"].iloc[-1]})' ) self.__start_date = start_date @@ -324,13 +276,16 @@ def end_date(self) -> datetime: @end_date.setter def end_date(self, end_date: datetime): if end_date is None: - end_date = self._df['datetime'][-1] + end_date = self.dataframe['datetime'].iloc[-1] else: if not isinstance(end_date, datetime): end_date = parse_date(end_date) - if end_date < self._df['datetime'][0] or end_date > self._df['datetime'][-1]: + if ( + end_date < self.dataframe['datetime'].iloc[0] + or end_date > self.dataframe['datetime'].iloc[-1] + ): raise ValueError( - f'given end date is outside of data bounds ({self._df["datetime"][0]} - {self._df["datetime"][-1]})' + f'given end date is outside of data bounds ({self.dataframe["datetime"].iloc[0]} - {self.dataframe["datetime"].iloc[-1]})' ) if end_date <= self.start_date: raise ValueError(f'end date must be after start date ({self.start_date})') @@ -385,10 +340,10 @@ def clip_to_bbox(self, bbox, bbox_crs): ] ) _switch = True - unique_dates = numpy.unique(self._df['datetime']) + unique_dates = numpy.unique(self.dataframe['datetime']) _found_start_date = False for _datetime in unique_dates: - records = self._df[self._df['datetime'] == _datetime] + records = self.dataframe[self.dataframe['datetime'] == _datetime] radii = records['radius_of_last_closed_isobar'].iloc[0] radii = 1852.0 * radii # convert to meters lon = records['longitude'].iloc[0] @@ -457,7 +412,7 @@ def transform_to(self, crs): @property def _file_end_date(self): - unique_dates = numpy.unique(self._df['datetime']) + unique_dates = numpy.unique(self.dataframe['datetime']) for date in unique_dates: if date >= numpy.datetime64(self.end_date): return date @@ -479,13 +434,13 @@ def __str__(self): ] ) - latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1,) + latitude = convert_value(row['latitude'] / 0.1, to_type=int, round_digits=1) if latitude >= 0: line.append(f'{latitude:>4}N') else: line.append(f'{latitude * -.1:>4}S') - longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1,) + longitude = convert_value(row['longitude'] / 0.1, to_type=int, round_digits=1) if longitude >= 0: line.append(f'{longitude:>5}E') else: @@ -559,7 +514,7 @@ def write(self, path: PathLike, overwrite: bool = False): def __compute_velocity(data: DataFrame) -> DataFrame: """ Output has units of meters per second. """ - geod = Geod() + geodetic = Geod(ellps='WGS84') unique_datetimes = numpy.unique(data['datetime']) for datetime_index, unique_datetime in enumerate(unique_datetimes): @@ -571,98 +526,33 @@ def __compute_velocity(data: DataFrame) -> DataFrame: dt = ( data['datetime'][unique_datetime_indices[-1] + 1] - data['datetime'][unique_datetime_index] - ) / timedelta(hours=1) - forward_azimuth, inverse_azimuth, distance = geod.inv( + ) + forward_azimuth, inverse_azimuth, distance = geodetic.inv( data['longitude'][unique_datetime_indices[-1] + 1], data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index], data['latitude'][unique_datetime_index], ) - - dx = haversine( - ( - data['latitude'][unique_datetime_index], - data['longitude'][unique_datetime_indices[-1] + 1], - ), - ( - data['latitude'][unique_datetime_index], - data['longitude'][unique_datetime_index], - ), - unit='nmi', - ) - dy = haversine( - ( - data['latitude'][unique_datetime_indices[-1] + 1], - data['longitude'][unique_datetime_index], - ), - ( - data['latitude'][unique_datetime_index], - data['longitude'][unique_datetime_index], - ), - unit='nmi', - ) - vx = numpy.copysign( - dx / dt, - data['longitude'][unique_datetime_indices[-1] + 1] - - data['longitude'][unique_datetime_index], - ) - vy = numpy.copysign( - dy / dt, - data['latitude'][unique_datetime_indices[-1] + 1] - - data['latitude'][unique_datetime_index], - ) else: dt = ( data['datetime'][unique_datetime_index] - data['datetime'][unique_datetime_indices[0] - 1] - ) / timedelta(hours=1) - - forward_azimuth, inverse_azimuth, distance = geod.inv( + ) + forward_azimuth, inverse_azimuth, distance = geodetic.inv( data['longitude'][unique_datetime_indices[0] - 1], data['latitude'][unique_datetime_index], data['longitude'][unique_datetime_index], data['latitude'][unique_datetime_index], ) - dx = haversine( - ( - data['latitude'][unique_datetime_index], - data['longitude'][unique_datetime_indices[0] - 1], - ), - ( - data['latitude'][unique_datetime_index], - data['longitude'][unique_datetime_index], - ), - unit='nmi', - ) - dy = haversine( - ( - data['latitude'][unique_datetime_indices[0] - 1], - data['longitude'][unique_datetime_index], - ), - ( - data['latitude'][unique_datetime_index], - data['longitude'][unique_datetime_index], - ), - unit='nmi', - ) - vx = numpy.copysign( - dx / dt, - data['longitude'][unique_datetime_index] - - data['longitude'][unique_datetime_indices[0] - 1], - ) - vy = numpy.copysign( - dy / dt, - data['latitude'][unique_datetime_index] - - data['latitude'][unique_datetime_indices[0] - 1], - ) - speed = numpy.sqrt(dx ** 2 + dy ** 2) / dt - bearing = (360.0 + numpy.rad2deg(numpy.arctan2(vx, vy))) % 360 + speed = distance / (dt / timedelta(seconds=1)) * units.meter / units.second + speed = speed.to(units.nautical_mile / units.hour) + bearing = inverse_azimuth % 360 * units.degree - speed = distance / dt - - data['speed'].append(int(numpy.around(speed, 0))) - data['direction'].append(int(numpy.around(bearing, 0))) + data['speed'][unique_datetime_index] = int(numpy.around(speed.magnitude, 0)) + data['direction'][unique_datetime_index] = int( + numpy.around(bearing.magnitude, 0) + ) return data @classmethod @@ -745,19 +635,13 @@ def f_retry(*args, **kwargs): return deco_retry -def atcf_id(storm_id): +def get_atcf_id(storm_id: str): url = 'ftp://ftp.nhc.noaa.gov/atcf/archive/storm.table' - @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) - def request_url(): - logger.info(f'Querying storm name from: {url}') - return urllib.request.urlopen(url) - - res = request_url() - df = read_csv(StringIO("".join([_.decode('utf-8') for _ in res])), header=None,) + dataframe = read_csv(url, header=None) name = storm_id[:-4] year = storm_id[-4:] - entry = df.loc[(df[0] == name.upper().rjust(10)) & (df[8] == int(year))] + entry = dataframe[(dataframe[0] == name.upper().rjust(10)) & (dataframe[8] == int(year))] if len(entry) == 0: return None else: @@ -822,15 +706,15 @@ def read_atcf(track: PathLike) -> DataFrame: row_data['max_sustained_wind_speed'] = convert_value( row[8], to_type=int, round_digits=0, ) - row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0,) + row_data['central_pressure'] = convert_value(row[9], to_type=int, round_digits=0) row_data['development_level'] = row[10] - row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0,) + row_data['isotach'] = convert_value(row[11], to_type=int, round_digits=0) row_data['quadrant'] = row[12] - row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0,) - row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0,) - row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0,) - row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0,) - row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0,) + row_data['radius_for_NEQ'] = convert_value(row[13], to_type=int, round_digits=0) + row_data['radius_for_SEQ'] = convert_value(row[14], to_type=int, round_digits=0) + row_data['radius_for_SWQ'] = convert_value(row[15], to_type=int, round_digits=0) + row_data['radius_for_NWQ'] = convert_value(row[16], to_type=int, round_digits=0) + row_data['background_pressure'] = convert_value(row[17], to_type=int, round_digits=0) row_data['radius_of_last_closed_isobar'] = convert_value( row[18], to_type=int, round_digits=0, ) diff --git a/ensembleperturbation/utilities.py b/ensembleperturbation/utilities.py index db3825f5..7c34eb2d 100644 --- a/ensembleperturbation/utilities.py +++ b/ensembleperturbation/utilities.py @@ -4,9 +4,14 @@ import sys import numpy +import pint +from pint_pandas import PintType from pyproj import CRS, Geod, Transformer from shapely.geometry import Point +units = pint.UnitRegistry() +PintType.ureg = units + def repository_root(path: PathLike = None) -> Path: if path is None: diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 index 760ae8e2..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 324N, 637W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 311N, 633W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 297N, 629W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 283N, 625W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 269N, 621W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 256N, 618W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 260N, 632W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 265N, 647W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 272N, 664W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 279N, 681W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 279N, 681W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 279N, 682W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 294N, 708W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 304N, 720W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 315N, 733W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 324N, 743W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 752W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 336N, 761W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 340N, 766W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 773W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 780W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 339N, 785W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 338N, 789W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 338N, 789W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 794W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 794W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 796W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 796W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 336N, 799W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 336N, 799W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 336N, 803W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 336N, 809W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 336N, 816W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 347N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 353N, 823W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 367N, 825W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 index 760ae8e2..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 324N, 637W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 311N, 633W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 297N, 629W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 283N, 625W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 269N, 621W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 256N, 618W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 260N, 632W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 265N, 647W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 272N, 664W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 279N, 681W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 279N, 681W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 279N, 682W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 294N, 708W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 304N, 720W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 315N, 733W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 324N, 743W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 752W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 336N, 761W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 340N, 766W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 773W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 780W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 339N, 785W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 338N, 789W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 338N, 789W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 794W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 794W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 796W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 796W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 336N, 799W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 336N, 799W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 336N, 803W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 336N, 809W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 336N, 816W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 347N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 353N, 823W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 367N, 825W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 index 760ae8e2..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 324N, 637W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 311N, 633W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 297N, 629W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 283N, 625W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 269N, 621W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 256N, 618W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 256N, 618W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 260N, 632W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 260N, 632W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 265N, 647W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 265N, 647W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 272N, 664W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 272N, 664W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 279N, 681W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 279N, 681W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 279N, 682W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 287N, 696W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 287N, 696W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 294N, 708W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 294N, 708W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 304N, 720W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 304N, 720W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 315N, 733W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 315N, 733W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 324N, 743W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 324N, 743W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 752W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 331N, 752W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 336N, 761W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 336N, 761W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 340N, 766W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 340N, 766W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 773W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 342N, 773W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 341N, 779W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 780W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 340N, 780W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 339N, 785W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 339N, 785W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 338N, 789W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 338N, 789W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 794W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 794W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 796W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 796W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 336N, 799W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 336N, 799W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 336N, 803W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 336N, 809W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 336N, 816W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 347N, 821W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 353N, 823W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 367N, 825W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 index 7d788d88..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 329N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 329N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 328N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 333N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 343N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 385N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 395N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 401N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 417N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 425N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 index 7d788d88..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 329N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 329N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 328N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 333N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 343N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 385N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 395N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 401N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 417N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 425N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 index 7d788d88..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 255N, 617W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 259N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 263N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 270N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 276N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 284N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 290N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 300N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 311N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 320N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 326N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 331N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 335N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 337N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 336N, 777W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 335N, 778W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 334N, 783W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 333N, 787W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 331N, 792W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 329N, 794W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 329N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 329N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 329N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 328N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 333N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 343N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 827W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 385N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 395N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 401N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 417N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 425N, 732W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 index d4123729..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 52, 993, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 47, 994, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 42, 997, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 37, 1002, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 32, 1003, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 32, 1005, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 32, 1003, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 32, 1002, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 index d4123729..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 52, 993, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 47, 994, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 42, 997, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 37, 1002, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 32, 1003, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 32, 1005, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 32, 1003, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 32, 1002, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 index d4123729..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 116, 942, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 118, 947, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 129, 943, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 135, 931, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 126, 936, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 121, 938, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 122, 937, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 116, 942, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 111, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 106, 948, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 102, 946, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 97, 944, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 97, 943, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 92, 942, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 87, 946, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 87, 947, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 72, 960, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 67, 970, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 62, 979, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 62, 987, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 57, 992, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 52, 993, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 47, 994, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 42, 997, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 37, 1002, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 32, 1003, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 32, 1005, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 32, 1005, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 32, 1003, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 32, 1002, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/original.22 b/tests/data/reference/test_besttrack_ensemble/original.22 index 683530fb..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/original.22 +++ b/tests/data/reference/test_besttrack_ensemble/original.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 index cc28cf91..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 200, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 200, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 200, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 200, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 200, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 200, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 index cc28cf91..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 200, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 200, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 200, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 200, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 200, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 200, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 index cc28cf91..0d172fd6 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 @@ -1,70 +1,70 @@ -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,288, 13, FLORENCE , 1 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 200, , , , , ,290, 14, FLORENCE , 2 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 3 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 200, , , , , ,295, 17, FLORENCE , 4 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 200, , , , , ,303, 15, FLORENCE , 5 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 200, , , , , ,304, 13, FLORENCE , 6 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 14, FLORENCE , 7 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 200, , , , , ,314, 16, FLORENCE , 8 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,317, 12, FLORENCE , 9 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 200, , , , , ,313, 10, FLORENCE , 10 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,304, 9, FLORENCE , 11 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 200, , , , , ,314, 6, FLORENCE , 12 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 200, , , , , ,289, 6, FLORENCE , 13 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 200, , , , , ,270, 6, FLORENCE , 14 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 200, , , , , ,220, 10, FLORENCE , 15 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 200, , , , , ,256, 4, FLORENCE , 16 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 200, , , , , ,253, 3, FLORENCE , 17 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 200, , , , , ,244, 5, FLORENCE , 18 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 200, , , , , ,239, 2, FLORENCE , 19 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 20 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 200, , , , , ,270, 3, FLORENCE , 21 -AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 200, , , , , ,270, 5, FLORENCE , 22 -AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 200, , , , , ,270, 6, FLORENCE , 23 -AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 200, , , , , ,315, 7, FLORENCE , 24 -AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 200, , , , , ,355, 9, FLORENCE , 25 -AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 200, , , , , ,347, 14, FLORENCE , 26 -AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 200, , , , , , 13, 14, FLORENCE , 27 -AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 9, 10, FLORENCE , 28 -AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 59, 14, FLORENCE , 29 -AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 58, 34, FLORENCE , 30 -AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 28, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 200, , , , , , 71, 27, FLORENCE , 32 \ No newline at end of file +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 34, NEQ, 130, 130, 90, 130, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091100, , BEST, 0, 256N, 618W, 115, 944, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 10, , , , , ,270.0,13.0, FLORENCE , 1 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 34, NEQ, 130, 130, 90, 140, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 50, NEQ, 60, 60, 50, 60, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091106, , BEST, 6, 260N, 632W, 115, 950, HU, 64, NEQ, 35, 30, 25, 35, 1010, 200, 15, , , , , ,270.0,14.0, FLORENCE , 2 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 34, NEQ, 140, 130, 90, 120, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 50, NEQ, 70, 60, 50, 70, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091112, , BEST, 12, 265N, 647W, 125, 947, HU, 64, NEQ, 40, 35, 35, 40, 1010, 200, 15, , , , , ,270.0,15.0, FLORENCE , 3 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091118, , BEST, 18, 272N, 664W, 130, 937, HU, 64, NEQ, 50, 40, 40, 45, 1010, 200, 10, , , , , ,270.0,15.0, FLORENCE , 4 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 34, NEQ, 150, 130, 100, 140, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 50, NEQ, 80, 60, 50, 70, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091200, , BEST, 24, 279N, 681W, 120, 943, HU, 64, NEQ, 50, 45, 40, 45, 1010, 200, 10, , , , , ,270.0,12.0, FLORENCE , 5 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 34, NEQ, 150, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 50, NEQ, 80, 65, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091206, , BEST, 30, 287N, 695W, 115, 945, HU, 64, NEQ, 60, 50, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 6 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 34, NEQ, 150, 140, 110, 130, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091212, , BEST, 36, 294N, 707W, 115, 945, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,10.0, FLORENCE , 7 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 50, NEQ, 90, 80, 60, 70, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091218, , BEST, 42, 304N, 719W, 110, 949, HU, 64, NEQ, 60, 60, 40, 50, 1010, 200, 15, , , , , ,270.0,11.0, FLORENCE , 8 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 34, NEQ, 170, 140, 110, 140, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 50, NEQ, 110, 80, 70, 80, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091300, , BEST, 48, 315N, 732W, 105, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 9.0, FLORENCE , 9 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 34, NEQ, 170, 150, 110, 140, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 50, NEQ, 100, 90, 70, 80, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091306, , BEST, 54, 324N, 742W, 100, 955, HU, 64, NEQ, 70, 60, 50, 60, 1010, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 10 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091312, , BEST, 60, 331N, 751W, 95, 954, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 8.0, FLORENCE , 11 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 34, NEQ, 170, 150, 120, 140, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 50, NEQ, 100, 90, 80, 80, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091318, , BEST, 66, 336N, 760W, 90, 953, HU, 64, NEQ, 70, 60, 50, 60, 1011, 200, 20, , , , , ,270.0, 4.0, FLORENCE , 12 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091400, , BEST, 72, 340N, 765W, 90, 952, HU, 64, NEQ, 70, 60, 50, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 13 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 34, NEQ, 170, 150, 130, 100, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 50, NEQ, 100, 80, 80, 70, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091406, , BEST, 78, 342N, 772W, 85, 952, HU, 64, NEQ, 70, 60, 60, 50, 1012, 200, 20, , , , , ,270.0, 6.0, FLORENCE , 14 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 34, NEQ, 170, 150, 140, 90, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 50, NEQ, 100, 80, 80, 60, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091411, , BEST, 83, 342N, 778W, 80, 956, HU, 64, NEQ, 70, 60, 60, 40, 1012, 200, 25, , , , , ,270.0, 7.0, FLORENCE , 15 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 34, NEQ, 170, 150, 140, 80, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 50, NEQ, 100, 80, 80, 40, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091412, , BEST, 84, 341N, 779W, 80, 957, HU, 64, NEQ, 60, 60, 60, 20, 1012, 200, 25, , , , , ,270.0, 4.0, FLORENCE , 16 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 34, NEQ, 150, 130, 120, 70, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 50, NEQ, 90, 70, 60, 30, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091418, , BEST, 90, 340N, 784W, 65, 969, HU, 64, NEQ, 0, 30, 30, 0, 1012, 200, 30, , , , , ,270.0, 3.0, FLORENCE , 17 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 34, NEQ, 150, 150, 100, 60, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091500, , BEST, 96, 339N, 788W, 60, 978, TS, 50, NEQ, 70, 70, 50, 30, 1013, 210, 30, , , , , ,270.0, 4.0, FLORENCE , 18 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 34, NEQ, 150, 150, 90, 50, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091506, , BEST, 102, 337N, 793W, 55, 986, TS, 50, NEQ, 70, 70, 0, 0, 1013, 210, 50, , , , , ,270.0, 2.0, FLORENCE , 19 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 34, NEQ, 150, 130, 80, 40, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091512, , BEST, 108, 336N, 795W, 55, 992, TS, 50, NEQ, 60, 100, 0, 0, 1013, 220, 60, , , , , ,270.0, 3.0, FLORENCE , 20 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 34, NEQ, 140, 130, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091518, , BEST, 114, 336N, 798W, 50, 997, TS, 50, NEQ, 0, 110, 0, 0, 1013, 220, 110, , , , , ,270.0, 3.0, FLORENCE , 21 +AL, 06, 2018091600, , BEST, 120, 336N, 802W, 45, 998, TS, 34, NEQ, 130, 130, 0, 0, 1013, 240, 110, , , , , ,270.0, 5.0, FLORENCE , 22 +AL, 06, 2018091606, , BEST, 126, 336N, 808W, 40, 999, TS, 34, NEQ, 130, 130, 0, 0, 1013, 260, 110, , , , , ,270.0, 6.0, FLORENCE , 23 +AL, 06, 2018091612, , BEST, 132, 336N, 815W, 35, 1002, TS, 34, NEQ, 0, 140, 0, 0, 1013, 280, 140, , , , , ,270.0, 5.0, FLORENCE , 24 +AL, 06, 2018091618, , BEST, 138, 341N, 821W, 30, 1006, TD, 0, , 0, 0, 0, 0, 1013, 300, 140, , , , , ,270.0, 1.0, FLORENCE , 25 +AL, 06, 2018091700, , BEST, 144, 350N, 822W, 25, 1007, TD, 0, , 0, 0, 0, 0, 1013, 320, 150, , , , , ,270.0, 3.0, FLORENCE , 26 +AL, 06, 2018091706, , BEST, 150, 364N, 826W, 25, 1008, TD, 0, , 0, 0, 0, 0, 1013, 340, 160, , , , , ,90.0, 3.0, FLORENCE , 27 +AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0, 2.0, FLORENCE , 28 +AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 +AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 +AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 diff --git a/tests/test_besttrack_ensemble.py b/tests/test_besttrack_ensemble.py index 07e5fe15..4db57530 100644 --- a/tests/test_besttrack_ensemble.py +++ b/tests/test_besttrack_ensemble.py @@ -23,7 +23,7 @@ def test_besttrack_ensemble(): CrossTrack, ] - perturber = BestTrackPerturber(storm='al062018', start_date='20180911', end_date=None,) + perturber = BestTrackPerturber(storm='al062018', start_date='20180911', end_date=None) perturber.write( number_of_perturbations=3, variables=variables, directory=output_directory, alpha=0.5, From fc15a29a1c35b6bf07ca9a311cfeb28728da9543 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 10:54:39 -0400 Subject: [PATCH 22/29] update dependencies --- ensembleperturbation/__main__.py | 0 ensembleperturbation/parsing/adcirc.py | 4 ++-- ensembleperturbation/parsing/comparison.py | 8 ++++++-- ensembleperturbation/plotting.py | 7 +++---- setup.py | 2 ++ 5 files changed, 13 insertions(+), 8 deletions(-) delete mode 100644 ensembleperturbation/__main__.py diff --git a/ensembleperturbation/__main__.py b/ensembleperturbation/__main__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ensembleperturbation/parsing/adcirc.py b/ensembleperturbation/parsing/adcirc.py index eb52433a..e7229ea3 100644 --- a/ensembleperturbation/parsing/adcirc.py +++ b/ensembleperturbation/parsing/adcirc.py @@ -10,8 +10,8 @@ from pandas import DataFrame from shapely.geometry import Point -from ..utilities import get_logger -from .utilities import decode_time +from ensembleperturbation.parsing.utilities import decode_time +from ensembleperturbation.utilities import get_logger LOGGER = get_logger('parsing.adcirc') diff --git a/ensembleperturbation/parsing/comparison.py b/ensembleperturbation/parsing/comparison.py index 724f343c..1942ce32 100644 --- a/ensembleperturbation/parsing/comparison.py +++ b/ensembleperturbation/parsing/comparison.py @@ -12,8 +12,12 @@ from pyproj import CRS, Geod import shapely -from ..utilities import get_logger -from .adcirc import fort61_stations_zeta, fort62_stations_uv, parse_adcirc_outputs +from ensembleperturbation.parsing.adcirc import ( + fort61_stations_zeta, + fort62_stations_uv, + parse_adcirc_outputs, +) +from ensembleperturbation.utilities import get_logger LOGGER = get_logger('parsing.comparison') diff --git a/ensembleperturbation/plotting.py b/ensembleperturbation/plotting.py index fcb16bc5..7b83af0d 100644 --- a/ensembleperturbation/plotting.py +++ b/ensembleperturbation/plotting.py @@ -2,22 +2,21 @@ from os import PathLike import pathlib from typing import Union - -# from affine import Affine import zipfile +# from affine import Affine import appdirs +import gdal import geopandas from matplotlib import pyplot from matplotlib.axes import Axes from matplotlib.cm import get_cmap import numpy -from osgeo import gdal import requests from shapely.geometry import MultiPoint, MultiPolygon, Polygon from shapely.geometry import shape as shapely_shape -from .utilities import get_logger +from ensembleperturbation.utilities import get_logger LOGGER = get_logger('plotting') diff --git a/setup.py b/setup.py index 636a8ee8..65d6c1e9 100644 --- a/setup.py +++ b/setup.py @@ -79,8 +79,10 @@ python_requires='>=3.6', setup_requires=['dunamai', 'setuptools>=41.2'], install_requires=[ + 'appdirs', 'bs4', 'coupledmodeldriver', + 'dateutil', 'fiona', 'geopandas', 'matplotlib', From 3d92d289670edbe30e2878ad29703206b601c861 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 10:56:09 -0400 Subject: [PATCH 23/29] update dependencies --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 65d6c1e9..c7c2029e 100644 --- a/setup.py +++ b/setup.py @@ -82,7 +82,6 @@ 'appdirs', 'bs4', 'coupledmodeldriver', - 'dateutil', 'fiona', 'geopandas', 'matplotlib', @@ -93,6 +92,7 @@ 'pint', 'pint-pandas', 'pyproj>=2.6', + 'python-dateutil', 'requests', 'requests_futures', 'shapely', From 20497c03c1afac62b4e65345467aab331347e4c9 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 10:58:18 -0400 Subject: [PATCH 24/29] explicitly add GDAL --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c7c2029e..b81abd6e 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ from setuptools import config, find_packages, setup -BUILT_PACKAGES = {'fiona': ['gdal'], 'numpy': [], 'pyproj': ['gdal'], 'shapely': ['gdal']} +BUILT_PACKAGES = {'fiona': ['gdal'], 'gdal': [], 'numpy': [], 'pyproj': ['gdal'], 'shapely': ['gdal']} is_conda = (Path(sys.prefix) / 'conda-meta').exists() if is_conda: @@ -83,6 +83,7 @@ 'bs4', 'coupledmodeldriver', 'fiona', + 'gdal', 'geopandas', 'matplotlib', 'nemspy>=0.6.16', From f5a9f888a3f8a192633f9acccab30a8571b62feb Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 11:00:08 -0400 Subject: [PATCH 25/29] remove GDAL --- ensembleperturbation/plotting.py | 260 +++++++++++++++---------------- setup.py | 3 +- 2 files changed, 131 insertions(+), 132 deletions(-) diff --git a/ensembleperturbation/plotting.py b/ensembleperturbation/plotting.py index 7b83af0d..da382019 100644 --- a/ensembleperturbation/plotting.py +++ b/ensembleperturbation/plotting.py @@ -6,7 +6,7 @@ # from affine import Affine import appdirs -import gdal +# import gdal import geopandas from matplotlib import pyplot from matplotlib.axes import Axes @@ -21,110 +21,110 @@ LOGGER = get_logger('plotting') -def geoarray_to_xyz( - data: numpy.array, origin: (float, float), resolution: (float, float), nodata: float = None -) -> numpy.array: - """ - Extract XYZ points from an array of data using the given raster-like - georeference (origin and resolution). - - Parameters - ---------- - data - 2D array of gridded data - origin - X, Y coordinates of northwest corner - resolution - cell size - nodata - value to exclude from point creation from the input grid - - Returns - ------- - numpy.array - N x 3 array of XYZ points - """ - - if nodata is None: - if data.dtype == float: - nodata = numpy.nan - elif data.dtype == int: - nodata = -2147483648 - if data.dtype == bool: - nodata = False - - data_coverage = where_not_nodata(data, nodata) - x_values, y_values = numpy.meshgrid( - numpy.linspace(origin[0], origin[0] + resolution[0] * data.shape[1], data.shape[1]), - numpy.linspace(origin[1], origin[1] + resolution[1] * data.shape[0], data.shape[0]), - ) - - return numpy.stack( - (x_values[data_coverage], y_values[data_coverage], data[data_coverage]), axis=1 - ) - - -def gdal_to_xyz(dataset: gdal.Dataset, nodata: float = None) -> numpy.array: - """ - Extract XYZ points from a GDAL dataset. - - Parameters - ---------- - dataset - GDAL dataset (point cloud or raster) - nodata - value to exclude from point creation - - Returns - ------- - numpy.array - N x M array of XYZ points - """ - - coordinates = None - layers_data = [] - if dataset.RasterCount > 0: - for index in range(1, dataset.RasterCount + 1): - raster_band = dataset.GetRasterBand(index) - geotransform = dataset.GetGeoTransform() - - if nodata is None: - nodata = raster_band.GetNoDataValue() - - points = geoarray_to_xyz( - raster_band.ReadAsArray(), - origin=(geotransform[0], geotransform[3]), - resolution=(geotransform[1], geotransform[5]), - nodata=nodata, - ) - if coordinates is None: - coordinates = points[:, :2] - layers_data.append(points[:, 2]) - else: - for index in range(dataset.GetLayerCount()): - point_layer = dataset.GetLayerByIndex(index) - num_features = point_layer.GetFeatureCount() - - for feature_index in range(num_features): - feature = point_layer.GetFeature(feature_index) - feature_geometry = feature.geometry() - num_points = feature_geometry.GetGeometryCount() - # TODO this assumes points in all layers are in the same order - points = numpy.array( - [ - feature_geometry.GetGeometryRef(point_index).GetPoint() - for point_index in range(num_points) - if feature_geometry.GetGeometryRef(point_index).GetPoint()[2] != nodata - ] - ) - - if coordinates is None: - coordinates = points[:, :2] - layers_data.append(points[:, 2]) - - return numpy.concatenate( - [coordinates] + [numpy.expand_dims(data, axis=1) for data in layers_data], axis=1 - ) +# def geoarray_to_xyz( +# data: numpy.array, origin: (float, float), resolution: (float, float), nodata: float = None +# ) -> numpy.array: +# """ +# Extract XYZ points from an array of data using the given raster-like +# georeference (origin and resolution). +# +# Parameters +# ---------- +# data +# 2D array of gridded data +# origin +# X, Y coordinates of northwest corner +# resolution +# cell size +# nodata +# value to exclude from point creation from the input grid +# +# Returns +# ------- +# numpy.array +# N x 3 array of XYZ points +# """ +# +# if nodata is None: +# if data.dtype == float: +# nodata = numpy.nan +# elif data.dtype == int: +# nodata = -2147483648 +# if data.dtype == bool: +# nodata = False +# +# data_coverage = where_not_nodata(data, nodata) +# x_values, y_values = numpy.meshgrid( +# numpy.linspace(origin[0], origin[0] + resolution[0] * data.shape[1], data.shape[1]), +# numpy.linspace(origin[1], origin[1] + resolution[1] * data.shape[0], data.shape[0]), +# ) +# +# return numpy.stack( +# (x_values[data_coverage], y_values[data_coverage], data[data_coverage]), axis=1 +# ) +# +# +# def gdal_to_xyz(dataset: gdal.Dataset, nodata: float = None) -> numpy.array: +# """ +# Extract XYZ points from a GDAL dataset. +# +# Parameters +# ---------- +# dataset +# GDAL dataset (point cloud or raster) +# nodata +# value to exclude from point creation +# +# Returns +# ------- +# numpy.array +# N x M array of XYZ points +# """ +# +# coordinates = None +# layers_data = [] +# if dataset.RasterCount > 0: +# for index in range(1, dataset.RasterCount + 1): +# raster_band = dataset.GetRasterBand(index) +# geotransform = dataset.GetGeoTransform() +# +# if nodata is None: +# nodata = raster_band.GetNoDataValue() +# +# points = geoarray_to_xyz( +# raster_band.ReadAsArray(), +# origin=(geotransform[0], geotransform[3]), +# resolution=(geotransform[1], geotransform[5]), +# nodata=nodata, +# ) +# if coordinates is None: +# coordinates = points[:, :2] +# layers_data.append(points[:, 2]) +# else: +# for index in range(dataset.GetLayerCount()): +# point_layer = dataset.GetLayerByIndex(index) +# num_features = point_layer.GetFeatureCount() +# +# for feature_index in range(num_features): +# feature = point_layer.GetFeature(feature_index) +# feature_geometry = feature.geometry() +# num_points = feature_geometry.GetGeometryCount() +# # TODO this assumes points in all layers are in the same order +# points = numpy.array( +# [ +# feature_geometry.GetGeometryRef(point_index).GetPoint() +# for point_index in range(num_points) +# if feature_geometry.GetGeometryRef(point_index).GetPoint()[2] != nodata +# ] +# ) +# +# if coordinates is None: +# coordinates = points[:, :2] +# layers_data.append(points[:, 2]) +# +# return numpy.concatenate( +# [coordinates] + [numpy.expand_dims(data, axis=1) for data in layers_data], axis=1 +# ) def bounds_from_opposite_corners( @@ -149,31 +149,31 @@ def bounds_from_opposite_corners( return numpy.ravel(numpy.sort(numpy.stack((corner_1, corner_2), axis=0), axis=0)) -def gdal_raster_bounds(raster: gdal.Dataset) -> (float, float, float, float): - """ - Get the bounds (grouped by dimension) of the given unrotated raster. - - Parameters - ---------- - raster - GDAL raster dataset - - Returns - ------- - float, float, float, float - min X, min Y, max X, max Y - """ - - geotransform = raster.GetGeoTransform() - origin = numpy.array((geotransform[0], geotransform[3])) - resolution = numpy.array((geotransform[1], geotransform[5])) - rotation = numpy.array((geotransform[2], geotransform[4])) - shape = raster.RasterYSize, raster.RasterXSize - - if numpy.any(rotation != 0): - raise NotImplementedError('rotated rasters not supported') - - return bounds_from_opposite_corners(origin, origin + numpy.flip(shape) * resolution) +# def gdal_raster_bounds(raster: gdal.Dataset) -> (float, float, float, float): +# """ +# Get the bounds (grouped by dimension) of the given unrotated raster. +# +# Parameters +# ---------- +# raster +# GDAL raster dataset +# +# Returns +# ------- +# float, float, float, float +# min X, min Y, max X, max Y +# """ +# +# geotransform = raster.GetGeoTransform() +# origin = numpy.array((geotransform[0], geotransform[3])) +# resolution = numpy.array((geotransform[1], geotransform[5])) +# rotation = numpy.array((geotransform[2], geotransform[4])) +# shape = raster.RasterYSize, raster.RasterXSize +# +# if numpy.any(rotation != 0): +# raise NotImplementedError('rotated rasters not supported') +# +# return bounds_from_opposite_corners(origin, origin + numpy.flip(shape) * resolution) def where_not_nodata(array: numpy.array, nodata: float = None) -> numpy.array: diff --git a/setup.py b/setup.py index b81abd6e..c7c2029e 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ from setuptools import config, find_packages, setup -BUILT_PACKAGES = {'fiona': ['gdal'], 'gdal': [], 'numpy': [], 'pyproj': ['gdal'], 'shapely': ['gdal']} +BUILT_PACKAGES = {'fiona': ['gdal'], 'numpy': [], 'pyproj': ['gdal'], 'shapely': ['gdal']} is_conda = (Path(sys.prefix) / 'conda-meta').exists() if is_conda: @@ -83,7 +83,6 @@ 'bs4', 'coupledmodeldriver', 'fiona', - 'gdal', 'geopandas', 'matplotlib', 'nemspy>=0.6.16', From c2d8f14f11452a70a5200c0dea356a754863fa24 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Mon, 14 Jun 2021 15:01:16 +0000 Subject: [PATCH 26/29] Fix code style issues with oitnb --- ensembleperturbation/plotting.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ensembleperturbation/plotting.py b/ensembleperturbation/plotting.py index da382019..61635846 100644 --- a/ensembleperturbation/plotting.py +++ b/ensembleperturbation/plotting.py @@ -6,6 +6,7 @@ # from affine import Affine import appdirs + # import gdal import geopandas from matplotlib import pyplot From 1c8a11a4256b14f11a2ad74cd06cd2b567717705 Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 11:05:17 -0400 Subject: [PATCH 27/29] update reference files --- tests/data/reference/test_besttrack_ensemble/along_track_1.22 | 2 +- tests/data/reference/test_besttrack_ensemble/along_track_2.22 | 2 +- tests/data/reference/test_besttrack_ensemble/along_track_3.22 | 2 +- tests/data/reference/test_besttrack_ensemble/cross_track_1.22 | 2 +- tests/data/reference/test_besttrack_ensemble/cross_track_2.22 | 2 +- tests/data/reference/test_besttrack_ensemble/cross_track_3.22 | 2 +- .../test_besttrack_ensemble/max_sustained_wind_speed_1.22 | 2 +- .../test_besttrack_ensemble/max_sustained_wind_speed_2.22 | 2 +- .../test_besttrack_ensemble/max_sustained_wind_speed_3.22 | 2 +- tests/data/reference/test_besttrack_ensemble/original.22 | 2 +- .../test_besttrack_ensemble/radius_of_maximum_winds_1.22 | 2 +- .../test_besttrack_ensemble/radius_of_maximum_winds_2.22 | 2 +- .../test_besttrack_ensemble/radius_of_maximum_winds_3.22 | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_1.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_2.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/along_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/along_track_3.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_1.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_2.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/cross_track_3.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_1.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_2.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/max_sustained_wind_speed_3.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/original.22 b/tests/data/reference/test_besttrack_ensemble/original.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/original.22 +++ b/tests/data/reference/test_besttrack_ensemble/original.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_1.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_2.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file diff --git a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 index 0d172fd6..2338663b 100644 --- a/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 +++ b/tests/data/reference/test_besttrack_ensemble/radius_of_maximum_winds_3.22 @@ -67,4 +67,4 @@ AL, 06, 2018091712, , BEST, 156, 378N, 822W, 25, 1008, EX, 0, , 0, AL, 06, 2018091718, , BEST, 162, 388N, 820W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,90.0,12.0, FLORENCE , 29 AL, 06, 2018091800, , BEST, 168, 395N, 805W, 25, 1008, EX, 0, , 0, 0, 0, 0, 1013, 360, 160, , , , , ,89.0,29.0, FLORENCE , 30 AL, 06, 2018091806, , BEST, 174, 413N, 768W, 25, 1007, EX, 0, , 0, 0, 0, 0, 1013, 360, 170, , , , , ,89.0,26.0, FLORENCE , 31 -AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 +AL, 06, 2018091812, , BEST, 180, 422N, 733W, 25, 1006, EX, 34, NEQ, 0, 0, 0, 0, 1013, 360, 180, , , , , ,271.0,26.0, FLORENCE , 32 \ No newline at end of file From 59f7472cd8f55a04e3a6f2fd6a97f888a66bf61f Mon Sep 17 00:00:00 2001 From: "zachary.burnett" Date: Mon, 14 Jun 2021 11:44:46 -0400 Subject: [PATCH 28/29] fix configuration caching --- ensembleperturbation/tropicalcyclone/atcf.py | 65 ++++++++------------ 1 file changed, 26 insertions(+), 39 deletions(-) diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index 2246a82b..c8306407 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -49,7 +49,7 @@ def __init__( if os.path.exists(storm): self.__atcf = io.open(storm, 'rb') else: - self.__storm_id = storm + self.storm_id = storm self.start_date = start_date self.end_date = end_date @@ -62,45 +62,33 @@ def storm_id(self) -> str: @storm_id.setter def storm_id(self, storm_id: str): + if storm_id is not None: + digits = sum([1 for character in storm_id if character.isdigit()]) + + if digits == 4: + atcf_id = get_atcf_id(storm_id) + if atcf_id is None: + raise ValueError(f'No storm with id: {storm_id}') + storm_id = atcf_id self.__storm_id = storm_id - self.__storm_id = f'{self.basin}{self.storm_number}{self.year}' @property def data(self): start_date_mask = self.dataframe['datetime'] >= self.start_date - end_date_mask = self.dataframe['datetime'] <= self._file_end_date - return self.dataframe[start_date_mask & end_date_mask] + if self.end_date is None: + return self.dataframe[start_date_mask] + else: + return self.dataframe[start_date_mask & (self.dataframe['datetime'] <= self.__file_end_date)] @data.setter def data(self, dataframe: DataFrame): self.__dataframe = dataframe @property - def atcf(self): - # Different archive source information: - # - # files: aBBCCYYYY.dat - guidance information - # bBBCCYYYY.dat - best track information - # fBBCCYYYY.dat - fix information - # eBBCCYYYY.dat - probability information - # - # BB - basin: al (Atlantic), ep (East Pacific), cp (Central Pacific), - # and sl (South Atlantic) - # CC - storm number - # YYYY - 4-digit Year - # ref: ftp://ftp.nhc.noaa.gov/atcf/archive/README - storm_id = self.storm_id - - if storm_id is not None: - digits = sum([1 for character in storm_id if character.isdigit()]) - - if digits == 4: - atcf_id = get_atcf_id(storm_id) - if atcf_id is None: - raise ValueError(f'No storm with id: {storm_id}') - storm_id = atcf_id - - self.__storm_id = storm_id + def atcf(self) -> io.BytesIO: + configuration = {'storm_id': self.storm_id} + if self.__atcf is None or configuration != self.__previous_configuration: + storm_id = configuration['storm_id'] url = f'ftp://ftp.nhc.noaa.gov/atcf/archive/{storm_id[4:]}/b{storm_id[0:2].lower()}{storm_id[2:]}.dat.gz' @@ -110,11 +98,9 @@ def atcf(self): except urllib.error.URLError as e: if '550' in e.reason: raise NameError( - f'Did not find storm with id {storm_id}. ' - + f'Submitted URL was {url}.' + f'storm with id {storm_id} not found at {url}' ) else: - @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) def make_request(): logger.info(f'Downloading storm data from {url} failed, retrying...') @@ -123,12 +109,14 @@ def make_request(): response = make_request() self.__atcf = io.BytesIO(response.read()) + self.__previous_configuration = configuration return self.__atcf @property def dataframe(self): - if self.__dataframe is None: + configuration = {'storm_id': self.__storm_id} + if self.__dataframe is None or len(self.__dataframe) == 0 or configuration != self.__previous_configuration: # https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt columns = [ @@ -247,6 +235,8 @@ def dataframe(self): self.__dataframe = self.__compute_velocity( DataFrame.from_records(data=records, columns=columns) ) + self.__previous_configuration = configuration + return self.__dataframe @property @@ -398,7 +388,7 @@ def plot_track(self, axis: Axes = None, show: bool = False, color: str = 'k', ** axis.axis('scaled') plot_coastline(axis, show) - def _generate_record_numbers(self): + def __generate_record_numbers(self): record_number = [1] for i in range(1, len(self.datetime)): if self.datetime.iloc[i] == self.datetime.iloc[i - 1]: @@ -407,18 +397,15 @@ def _generate_record_numbers(self): record_number.append(record_number[-1] + 1) return record_number - def transform_to(self, crs): - pass - @property - def _file_end_date(self): + def __file_end_date(self): unique_dates = numpy.unique(self.dataframe['datetime']) for date in unique_dates: if date >= numpy.datetime64(self.end_date): return date def __str__(self): - record_number = self._generate_record_numbers() + record_number = self.__generate_record_numbers() lines = [] for i, (_, row) in enumerate(self.data.iterrows()): line = [] From e2999caec5c2bf3373064b9984ce1c62d88debde Mon Sep 17 00:00:00 2001 From: Lint Action Date: Mon, 14 Jun 2021 15:45:47 +0000 Subject: [PATCH 29/29] Fix code style issues with oitnb --- ensembleperturbation/tropicalcyclone/atcf.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/ensembleperturbation/tropicalcyclone/atcf.py b/ensembleperturbation/tropicalcyclone/atcf.py index c8306407..c3b04e4f 100644 --- a/ensembleperturbation/tropicalcyclone/atcf.py +++ b/ensembleperturbation/tropicalcyclone/atcf.py @@ -78,7 +78,9 @@ def data(self): if self.end_date is None: return self.dataframe[start_date_mask] else: - return self.dataframe[start_date_mask & (self.dataframe['datetime'] <= self.__file_end_date)] + return self.dataframe[ + start_date_mask & (self.dataframe['datetime'] <= self.__file_end_date) + ] @data.setter def data(self, dataframe: DataFrame): @@ -97,10 +99,9 @@ def atcf(self) -> io.BytesIO: response = urllib.request.urlopen(url) except urllib.error.URLError as e: if '550' in e.reason: - raise NameError( - f'storm with id {storm_id} not found at {url}' - ) + raise NameError(f'storm with id {storm_id} not found at {url}') else: + @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) def make_request(): logger.info(f'Downloading storm data from {url} failed, retrying...') @@ -116,7 +117,11 @@ def make_request(): @property def dataframe(self): configuration = {'storm_id': self.__storm_id} - if self.__dataframe is None or len(self.__dataframe) == 0 or configuration != self.__previous_configuration: + if ( + self.__dataframe is None + or len(self.__dataframe) == 0 + or configuration != self.__previous_configuration + ): # https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt columns = [