Пример #1
0
    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))
Пример #2
0
 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])
Пример #3
0
 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])
Пример #4
0
    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)