def test_read_template_pass(self): """Wrong exposures definition""" df = pd.read_excel(ENT_TEMPLATE_XLS) exp_df = Exposures(df) # set metadata exp_df.ref_year = 2020 exp_df.tag = Tag(ENT_TEMPLATE_XLS, 'ENT_TEMPLATE_XLS') exp_df.value_unit = 'XSD' exp_df.check()
def _build_exp(self): eai_exp = Exposures() eai_exp['value'] = self.eai_exp eai_exp['latitude'] = self.coord_exp[:, 0] eai_exp['longitude'] = self.coord_exp[:, 1] eai_exp.crs = self.crs eai_exp.value_unit = self.unit eai_exp.check() return eai_exp
def test_io_hdf5_pass(self): """write and read hdf5""" exp_df = Exposures(pd.read_excel(ENT_TEMPLATE_XLS), crs="epsg:32632") exp_df.set_geometry_points() exp_df.check() # set metadata exp_df.ref_year = 2020 exp_df.tag = Tag(ENT_TEMPLATE_XLS, 'ENT_TEMPLATE_XLS') exp_df.value_unit = 'XSD' file_name = DATA_DIR.joinpath('test_hdf5_exp.h5') # pd.errors.PerformanceWarning should be suppressed. Therefore, make sure that # PerformanceWarning would result in test failure here import warnings with warnings.catch_warnings(): warnings.simplefilter("error", category=pd.errors.PerformanceWarning) exp_df.write_hdf5(file_name) exp_read = Exposures.from_hdf5(file_name) self.assertEqual(exp_df.ref_year, exp_read.ref_year) self.assertEqual(exp_df.value_unit, exp_read.value_unit) self.assertDictEqual(exp_df.meta, exp_read.meta) self.assertTrue(u_coord.equal_crs(exp_df.crs, exp_read.crs)) self.assertTrue(u_coord.equal_crs(exp_df.gdf.crs, exp_read.gdf.crs)) self.assertEqual(exp_df.tag.file_name, exp_read.tag.file_name) self.assertEqual(exp_df.tag.description, exp_read.tag.description) np.testing.assert_array_equal(exp_df.gdf.latitude.values, exp_read.gdf.latitude.values) np.testing.assert_array_equal(exp_df.gdf.longitude.values, exp_read.gdf.longitude.values) np.testing.assert_array_equal(exp_df.gdf.value.values, exp_read.gdf.value.values) np.testing.assert_array_equal(exp_df.gdf.deductible.values, exp_read.gdf.deductible.values) np.testing.assert_array_equal(exp_df.gdf.cover.values, exp_read.gdf.cover.values) np.testing.assert_array_equal(exp_df.gdf.region_id.values, exp_read.gdf.region_id.values) np.testing.assert_array_equal(exp_df.gdf.category_id.values, exp_read.gdf.category_id.values) np.testing.assert_array_equal(exp_df.gdf.impf_TC.values, exp_read.gdf.impf_TC.values) np.testing.assert_array_equal(exp_df.gdf.centr_TC.values, exp_read.gdf.centr_TC.values) np.testing.assert_array_equal(exp_df.gdf.impf_FL.values, exp_read.gdf.impf_FL.values) np.testing.assert_array_equal(exp_df.gdf.centr_FL.values, exp_read.gdf.centr_FL.values) for point_df, point_read in zip(exp_df.gdf.geometry.values, exp_read.gdf.geometry.values): self.assertEqual(point_df.x, point_read.x) self.assertEqual(point_df.y, point_read.y)
def test_io_hdf5_pass(self): """write and read hdf5""" exp_df = Exposures(pd.read_excel(ENT_TEMPLATE_XLS)) exp_df.set_geometry_points() exp_df.check() # set metadata exp_df.ref_year = 2020 exp_df.tag = Tag(ENT_TEMPLATE_XLS, 'ENT_TEMPLATE_XLS') exp_df.value_unit = 'XSD' file_name = DATA_DIR.joinpath('test_hdf5_exp.h5') exp_df.write_hdf5(file_name) exp_read = Exposures() exp_read.read_hdf5(file_name) self.assertEqual(exp_df.ref_year, exp_read.ref_year) self.assertEqual(exp_df.value_unit, exp_read.value_unit) self.assertEqual(exp_df.crs, exp_read.crs) self.assertEqual(exp_df.tag.file_name, exp_read.tag.file_name) self.assertEqual(exp_df.tag.description, exp_read.tag.description) self.assertTrue( np.array_equal(exp_df.gdf.latitude.values, exp_read.gdf.latitude.values)) self.assertTrue( np.array_equal(exp_df.gdf.longitude.values, exp_read.gdf.longitude.values)) self.assertTrue( np.array_equal(exp_df.gdf.value.values, exp_read.gdf.value.values)) self.assertTrue( np.array_equal(exp_df.gdf.deductible.values, exp_read.gdf.deductible.values)) self.assertTrue( np.array_equal(exp_df.gdf.cover.values, exp_read.gdf.cover.values)) self.assertTrue( np.array_equal(exp_df.gdf.region_id.values, exp_read.gdf.region_id.values)) self.assertTrue( np.array_equal(exp_df.gdf.category_id.values, exp_read.gdf.category_id.values)) self.assertTrue( np.array_equal(exp_df.gdf.if_TC.values, exp_read.gdf.if_TC.values)) self.assertTrue( np.array_equal(exp_df.gdf.centr_TC.values, exp_read.gdf.centr_TC.values)) self.assertTrue( np.array_equal(exp_df.gdf.if_FL.values, exp_read.gdf.if_FL.values)) self.assertTrue( np.array_equal(exp_df.gdf.centr_FL.values, exp_read.gdf.centr_FL.values)) for point_df, point_read in zip(exp_df.gdf.geometry.values, exp_read.gdf.geometry.values): self.assertEqual(point_df.x, point_read.x) self.assertEqual(point_df.y, point_read.y)
def _build_exp(self): eai_exp = Exposures() eai_exp['value'] = self.eai_exp eai_exp['latitude'] = self.coord_exp[:, 0] eai_exp['longitude'] = self.coord_exp[:, 1] eai_exp.crs = self.crs eai_exp.value_unit = self.unit eai_exp.ref_year = 0 eai_exp.tag = Tag() eai_exp.meta = None return eai_exp
def setUp(self): exp = Exposures(crs='epsg:3395') exp.gdf['value'] = np.arange(0, 1.0e6, 1.0e5) min_lat, max_lat = 27.5, 30 min_lon, max_lon = -18, -12 exp.gdf['latitude'] = np.linspace(min_lat, max_lat, 10) exp.gdf['longitude'] = np.linspace(min_lon, max_lon, 10) exp.gdf['region_id'] = np.ones(10) exp.gdf['impf_TC'] = np.ones(10) exp.ref_year = 2015 exp.value_unit = 'XSD' self.dummy = exp
def test_add_sea_pass(self): """Test add_sea function with fake data.""" exp = Exposures() exp.gdf['value'] = np.arange(0, 1.0e6, 1.0e5) min_lat, max_lat = 27.5, 30 min_lon, max_lon = -18, -12 exp.gdf['latitude'] = np.linspace(min_lat, max_lat, 10) exp.gdf['longitude'] = np.linspace(min_lon, max_lon, 10) exp.gdf['region_id'] = np.ones(10) exp.gdf['if_TC'] = np.ones(10) exp.ref_year = 2015 exp.value_unit = 'XSD' exp.check() sea_coast = 100 sea_res_km = 50 sea_res = (sea_coast, sea_res_km) exp_sea = add_sea(exp, sea_res) exp_sea.check() sea_coast /= ONE_LAT_KM sea_res_km /= ONE_LAT_KM min_lat = min_lat - sea_coast max_lat = max_lat + sea_coast min_lon = min_lon - sea_coast max_lon = max_lon + sea_coast self.assertEqual(np.min(exp_sea.gdf.latitude), min_lat) self.assertEqual(np.min(exp_sea.gdf.longitude), min_lon) self.assertTrue( np.array_equal(exp_sea.gdf.value.values[:10], np.arange(0, 1.0e6, 1.0e5))) self.assertEqual(exp_sea.ref_year, exp.ref_year) self.assertEqual(exp_sea.value_unit, exp.value_unit) on_sea_lat = exp_sea.gdf.latitude.values[11:] on_sea_lon = exp_sea.gdf.longitude.values[11:] res_on_sea = coord_on_land(on_sea_lat, on_sea_lon) res_on_sea = ~res_on_sea self.assertTrue(np.all(res_on_sea)) dist = DistanceMetric.get_metric('haversine') self.assertAlmostEqual( dist.pairwise([ [ exp_sea.gdf.longitude.values[-1], exp_sea.gdf.latitude.values[-1] ], [ exp_sea.gdf.longitude.values[-2], exp_sea.gdf.latitude.values[-2] ], ])[0][1], sea_res_km)
def _build_exp_event(self, event_id): """Write impact of an event as Exposures Parameters: event_id(int): id of the event """ impact_csr_exp = Exposures() impact_csr_exp['value'] = self.imp_mat.toarray()[event_id - 1, :] impact_csr_exp['latitude'] = self.coord_exp[:, 0] impact_csr_exp['longitude'] = self.coord_exp[:, 1] impact_csr_exp.crs = self.crs impact_csr_exp.value_unit = self.unit impact_csr_exp.ref_year = 0 impact_csr_exp.tag = Tag() impact_csr_exp.meta = None return impact_csr_exp