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