def test_apply_decay_no_landfall_pass(self): """ Test _apply_land_decay with no historical tracks with landfall """ tc_track = TCTracks() tc_track.read_processed_ibtracs_csv(TEST_TRACK_SHORT) land_geom = tc._calc_land_geom(tc_track.data) tc._track_land_params(tc_track.data[0], land_geom) tc_track.data[0]['orig_event_flag']=False tc_ref = tc_track.data[0].copy() tc_track._apply_land_decay(dict(), dict(), land_geom) self.assertTrue(np.array_equal(tc_track.data[0].max_sustained_wind.values, tc_ref.max_sustained_wind.values)) self.assertTrue(np.array_equal(tc_track.data[0].central_pressure.values, tc_ref.central_pressure.values)) self.assertTrue(np.array_equal(tc_track.data[0].environmental_pressure.values, tc_ref.environmental_pressure.values)) self.assertTrue(np.all(np.isnan(tc_track.data[0].dist_since_lf.values)))
def test_apply_decay_pass(self): """ Test _apply_land_decay against MATLAB reference. """ v_rel = { 6: 0.0038950967656296597, 1: 0.0038950967656296597, 2: 0.0038950967656296597, 3: 0.0038950967656296597, 4: 0.0038950967656296597, 5: 0.0038950967656296597, 7: 0.0038950967656296597 } p_rel = { 6: (1.0499941, 0.007978940084158488), 1: (1.0499941, 0.007978940084158488), 2: (1.0499941, 0.007978940084158488), 3: (1.0499941, 0.007978940084158488), 4: (1.0499941, 0.007978940084158488), 5: (1.0499941, 0.007978940084158488), 7: (1.0499941, 0.007978940084158488) } tc_track = TCTracks() tc_track.read_processed_ibtracs_csv(TC_ANDREW_FL) tc_track.data[0]['orig_event_flag'] = False land_geom = tc._calc_land_geom(tc_track.data) tc._track_land_params(tc_track.data[0], land_geom) tc_track._apply_land_decay(v_rel, p_rel, land_geom, s_rel=True, check_plot=False) p_ref = np.array([ 1.010000000000000, 1.009000000000000, 1.008000000000000, 1.006000000000000, 1.003000000000000, 1.002000000000000, 1.001000000000000, 1.000000000000000, 1.000000000000000, 1.001000000000000, 1.002000000000000, 1.005000000000000, 1.007000000000000, 1.010000000000000, 1.010000000000000, 1.010000000000000, 1.010000000000000, 1.010000000000000, 1.010000000000000, 1.007000000000000, 1.004000000000000, 1.000000000000000, 0.994000000000000, 0.981000000000000, 0.969000000000000, 0.961000000000000, 0.947000000000000, 0.933000000000000, 0.922000000000000, 0.930000000000000, 0.937000000000000, 0.951000000000000, 0.947000000000000, 0.943000000000000, 0.948000000000000, 0.946000000000000, 0.941000000000000, 0.937000000000000, 0.955000000000000, 0.9741457117, 0.99244068917, 1.00086729492, 1.00545853355, 1.00818354609, 1.00941850023, 1.00986192053, 1.00998400565 ]) * 1e3 self.assertTrue( np.allclose(p_ref, tc_track.data[0].central_pressure.values)) v_ref = np.array([ 0.250000000000000, 0.300000000000000, 0.300000000000000, 0.350000000000000, 0.350000000000000, 0.400000000000000, 0.450000000000000, 0.450000000000000, 0.450000000000000, 0.450000000000000, 0.450000000000000, 0.450000000000000, 0.450000000000000, 0.400000000000000, 0.400000000000000, 0.400000000000000, 0.400000000000000, 0.450000000000000, 0.450000000000000, 0.500000000000000, 0.500000000000000, 0.550000000000000, 0.650000000000000, 0.800000000000000, 0.950000000000000, 1.100000000000000, 1.300000000000000, 1.450000000000000, 1.500000000000000, 1.250000000000000, 1.300000000000000, 1.150000000000000, 1.150000000000000, 1.150000000000000, 1.150000000000000, 1.200000000000000, 1.250000000000000, 1.250000000000000, 1.200000000000000, 0.9737967353, 0.687255951, 0.4994850556, 0.3551480462, 0.2270548036, 0.1302099557, 0.0645385918, 0.0225325851 ]) * 1e2 self.assertTrue( np.allclose(v_ref, tc_track.data[0].max_sustained_wind.values)) cat_ref = tc.set_category(tc_track.data[0].max_sustained_wind.values, tc_track.data[0].max_sustained_wind_unit) self.assertEqual(cat_ref, tc_track.data[0].category)