def test_equal_same(self): """Append the same hazard. Obtain initial hazard.""" haz1 = Hazard('TC') haz1.read_excel(HAZ_TEMPLATE_XLS) haz2 = Hazard('TC') haz2.read_excel(HAZ_TEMPLATE_XLS) haz1.append(haz2) haz1.remove_duplicates() haz1.check() self.assertEqual(haz1.event_name, haz2.event_name) self.assertTrue(np.array_equal(haz1.event_id, haz2.event_id)) self.assertTrue(np.array_equal(haz1.frequency, haz2.frequency)) self.assertTrue(np.array_equal(haz1.date, haz2.date)) self.assertTrue(np.array_equal(haz1.orig, haz2.orig)) self.assertTrue( np.array_equal(haz1.intensity.todense(), haz2.intensity.todense())) self.assertTrue( np.array_equal(haz1.fraction.todense(), haz2.fraction.todense())) self.assertTrue((haz1.intensity != haz2.intensity).nnz == 0) self.assertTrue((haz1.fraction != haz2.fraction).nnz == 0) self.assertEqual(haz1.units, haz2.units) self.assertEqual(haz1.tag.file_name, [haz2.tag.file_name, haz2.tag.file_name]) self.assertEqual(haz1.tag.haz_type, haz2.tag.haz_type) self.assertEqual(haz1.tag.description, [haz2.tag.description, haz2.tag.description])
def test_write_fraction_pass(self): """Test write_raster with fraction""" haz_fl = Hazard('FL') haz_fl.event_id = np.array([1]) haz_fl.date = np.array([1]) haz_fl.frequency = np.array([1]) haz_fl.orig = np.array([1]) haz_fl.event_name = ['1'] haz_fl.intensity = sparse.csr_matrix(np.array([0.5, 0.2, 0.1])) haz_fl.fraction = sparse.csr_matrix(np.array([0.5, 0.2, 0.1]) / 2) haz_fl.centroids.set_lat_lon(np.array([1, 2, 3]), np.array([1, 2, 3])) haz_fl.check() haz_fl.write_raster(os.path.join(DATA_DIR, 'test_write_hazard.tif'), intensity=False) haz_read = Hazard('FL') haz_read.set_raster( [os.path.join(DATA_DIR, 'test_write_hazard.tif')], files_fraction=[os.path.join(DATA_DIR, 'test_write_hazard.tif')]) self.assertEqual(haz_read.intensity.shape, (1, 9)) self.assertEqual(haz_read.fraction.shape, (1, 9)) self.assertTrue( np.allclose(np.unique(np.array(haz_read.fraction.toarray())), np.array([0.0, 0.05, 0.1, 0.25]))) self.assertTrue( np.allclose(np.unique(np.array(haz_read.intensity.toarray())), np.array([0.0, 0.05, 0.1, 0.25])))
def test_read_raster_pool_pass(self): """Test set_raster with pool""" from pathos.pools import ProcessPool as Pool pool = Pool() haz_fl = Hazard('FL', pool) haz_fl.set_raster([HAZ_DEMO_FL]) haz_fl.check() self.assertEqual(haz_fl.intensity.shape, (1, 1032226)) self.assertEqual(haz_fl.intensity.min(), -9999.0) self.assertAlmostEqual(haz_fl.intensity.max(), 4.662774085998535) pool.close() pool.join()
def test_read_write_raster_pass(self): """ Test write_raster: Hazard from raster data """ haz_fl = Hazard('FL') haz_fl.set_raster([HAZ_DEMO_FL]) haz_fl.check() self.assertEqual(haz_fl.intensity.shape, (1, 1032226)) self.assertEqual(haz_fl.intensity.min(), -9999.0) self.assertAlmostEqual(haz_fl.intensity.max(), 4.662774085998535) haz_fl.write_raster(os.path.join(DATA_DIR, 'test_write_hazard.tif')) haz_read = Hazard('FL') haz_read.set_raster([os.path.join(DATA_DIR, 'test_write_hazard.tif')]) self.assertTrue(np.allclose(haz_fl.intensity.todense(), haz_read.intensity.todense())) self.assertEqual(np.unique(np.array(haz_fl.fraction.todense())).size, 2)
def _change_all_hazard(self, hazard): """Change hazard to provided hazard_set. Parameters: hazard (Hazard): hazard instance Returns: Hazard """ if self.hazard_set == NULL_STR: return hazard LOGGER.debug('Setting new hazard %s', self.hazard_set) from climada.hazard.base import Hazard new_haz = Hazard(hazard.tag.haz_type) new_haz.read_hdf5(self.hazard_set) new_haz.check() return new_haz
def test_read_write_vector_pass(self): """Test write_raster: Hazard from vector data""" haz_fl = Hazard('FL') haz_fl.event_id = np.array([1]) haz_fl.date = np.array([1]) haz_fl.frequency = np.array([1]) haz_fl.orig = np.array([1]) haz_fl.event_name = ['1'] haz_fl.intensity = sparse.csr_matrix(np.array([0.5, 0.2, 0.1])) haz_fl.fraction = sparse.csr_matrix(np.array([0.5, 0.2, 0.1]) / 2) haz_fl.centroids.set_lat_lon(np.array([1, 2, 3]), np.array([1, 2, 3])) haz_fl.check() haz_fl.write_raster(DATA_DIR.joinpath('test_write_hazard.tif')) haz_read = Hazard('FL') haz_read.set_raster([DATA_DIR.joinpath('test_write_hazard.tif')]) self.assertEqual(haz_read.intensity.shape, (1, 9)) self.assertTrue( np.allclose(np.unique(np.array(haz_read.intensity.toarray())), np.array([0.0, 0.1, 0.2, 0.5])))
def test_append_to_empty_fill(self): """Append to an empty hazard a filled one. Obtain filled one.""" haz1 = Hazard('TC') haz2 = Hazard('TC') haz2.read_excel(HAZ_TEMPLATE_XLS) haz1.append(haz2) haz1.check() # expected values haz1_orig = Hazard('TC') haz1_orig.read_excel(HAZ_TEMPLATE_XLS) self.assertEqual(haz1.event_name, haz1_orig.event_name) self.assertTrue(np.array_equal(haz1.event_id, haz1_orig.event_id)) self.assertTrue(np.array_equal(haz1.frequency, haz1_orig.frequency)) self.assertTrue(np.array_equal(haz1.date, haz1_orig.date)) self.assertTrue(np.array_equal(haz1.orig, haz1_orig.orig)) self.assertTrue((haz1.intensity != haz1_orig.intensity).nnz == 0) self.assertTrue((haz1.fraction != haz1_orig.fraction).nnz == 0) self.assertEqual(haz1.units, haz1_orig.units) self.assertEqual(haz1.tag.file_name, haz1_orig.tag.file_name) self.assertEqual(haz1.tag.haz_type, haz1_orig.tag.haz_type) self.assertEqual(haz1.tag.description, haz1_orig.tag.description)
def test_append_empty_fill(self): """Append an empty. Obtain initial hazard.""" haz1 = Hazard('TC') haz1.read_excel(HAZ_TEMPLATE_XLS) haz2 = Hazard('TC') haz2.centroids.geometry.crs = {'init':'epsg:4326'} haz1.append(haz2) haz1.check() # expected values haz1_orig = Hazard('TC') haz1_orig.read_excel(HAZ_TEMPLATE_XLS) self.assertEqual(haz1.event_name, haz1_orig.event_name) self.assertTrue(np.array_equal(haz1.event_id, haz1_orig.event_id)) self.assertTrue(np.array_equal(haz1.date, haz1_orig.date)) self.assertTrue(np.array_equal(haz1.orig, haz1_orig.orig)) self.assertTrue(np.array_equal(haz1.frequency, haz1_orig.frequency)) self.assertTrue((haz1.intensity != haz1_orig.intensity).nnz == 0) self.assertTrue((haz1.fraction != haz1_orig.fraction).nnz == 0) self.assertEqual(haz1.units, haz1_orig.units) self.assertEqual(haz1.tag.file_name, haz1_orig.tag.file_name) self.assertEqual(haz1.tag.haz_type, haz1_orig.tag.haz_type) self.assertEqual(haz1.tag.description, haz1_orig.tag.description)