def test_set_one_file_pass(self): """ Test set function set_from_tracks with one input.""" pool = Pool() tc_track = TCTracks(pool) tc_track.read_processed_ibtracs_csv(TEST_TRACK) tc_track.calc_random_walk() tc_track.equal_timestep() tc_haz = TropCyclone(pool) tc_haz.set_from_tracks(tc_track, CENTR_TEST_BRB) tc_haz.check() pool.close() pool.join() self.assertEqual(tc_haz.tag.haz_type, 'TC') self.assertEqual(tc_haz.tag.description, '') self.assertEqual(tc_haz.units, 'm/s') self.assertEqual(tc_haz.centroids.size, 296) self.assertEqual(tc_haz.event_id.size, 10) self.assertTrue(isinstance(tc_haz.intensity, sparse.csr.csr_matrix)) self.assertTrue(isinstance(tc_haz.fraction, sparse.csr.csr_matrix)) self.assertEqual(tc_haz.intensity.shape, (10, 296)) self.assertEqual(tc_haz.fraction.shape, (10, 296))
def test_random_no_landfall_pass(self): """ Test calc_random_walk with decay and no historical tracks with landfall """ tc_track = TCTracks() tc_track.read_processed_ibtracs_csv(TEST_TRACK_SHORT) with self.assertLogs('climada.hazard.tc_tracks', level='INFO') as cm: tc_track.calc_random_walk() self.assertIn('No historical track with landfall.', cm.output[1])
def test_random_walk_decay_pass(self): """Test land decay is called from calc_random_walk.""" tc_track = TCTracks() tc_track.read_processed_ibtracs_csv(TC_ANDREW_FL) ens_size=2 with self.assertLogs('climada.hazard.tc_tracks', level='DEBUG') as cm: tc_track.calc_random_walk(ens_size, seed=25, decay=True) self.assertIn('No historical track of category Tropical Depression with landfall.', cm.output[1]) self.assertIn('Decay parameters from category Hurrican Cat. 4 taken.', cm.output[2]) self.assertIn('No historical track of category Hurrican Cat. 1 with landfall.', cm.output[3]) self.assertIn('Decay parameters from category Hurrican Cat. 4 taken.', cm.output[4]) self.assertIn('No historical track of category Hurrican Cat. 3 with landfall. Decay parameters from category Hurrican Cat. 4 taken.', cm.output[5]) self.assertIn('No historical track of category Hurrican Cat. 5 with landfall.', cm.output[6])
def test_random_walk_ref_pass(self): """Test against MATLAB reference.""" tc_track = TCTracks() tc_track.read_processed_ibtracs_csv(TEST_TRACK_SHORT) ens_size = 2 tc_track.calc_random_walk(ens_size, seed=25, decay=False) self.assertEqual(len(tc_track.data), ens_size + 1) self.assertFalse(tc_track.data[1].orig_event_flag) self.assertEqual(tc_track.data[1].name, '1951239N12334_gen1') self.assertEqual(tc_track.data[1].id_no, 1.951239012334010e+12) self.assertAlmostEqual(tc_track.data[1].lon[0].values, -25.0448138) self.assertAlmostEqual(tc_track.data[1].lon[1].values, -26.07400903) self.assertAlmostEqual(tc_track.data[1].lon[2].values, -27.09191673) self.assertAlmostEqual(tc_track.data[1].lon[3].values, -28.21366632) self.assertAlmostEqual(tc_track.data[1].lon[4].values, -29.33195465) self.assertAlmostEqual(tc_track.data[1].lon[8].values, -34.6016857) self.assertAlmostEqual(tc_track.data[1].lat[0].values, 11.96825841) self.assertAlmostEqual(tc_track.data[1].lat[4].values, 12.35820479) self.assertAlmostEqual(tc_track.data[1].lat[5].values, 12.45465) self.assertAlmostEqual(tc_track.data[1].lat[6].values, 12.5492937) self.assertAlmostEqual(tc_track.data[1].lat[7].values, 12.6333804) self.assertAlmostEqual(tc_track.data[1].lat[8].values, 12.71561952) self.assertFalse(tc_track.data[2].orig_event_flag) self.assertEqual(tc_track.data[2].name, '1951239N12334_gen2') self.assertAlmostEqual(tc_track.data[2].id_no, 1.951239012334020e+12) self.assertAlmostEqual(tc_track.data[2].lon[0].values, -25.47658461) self.assertAlmostEqual(tc_track.data[2].lon[3].values, -28.78978084) self.assertAlmostEqual(tc_track.data[2].lon[4].values, -29.9568406) self.assertAlmostEqual(tc_track.data[2].lon[8].values, -35.30222604) self.assertAlmostEqual(tc_track.data[2].lat[0].values, 11.82886685) self.assertAlmostEqual(tc_track.data[2].lat[6].values, 12.26400422) self.assertAlmostEqual(tc_track.data[2].lat[7].values, 12.3454308) self.assertAlmostEqual(tc_track.data[2].lat[8].values, 12.42745488)