Example #1
0
 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()
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
 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
Example #5
0
 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
Example #6
0
    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)
Example #7
0
    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