def test_from_points(self): lons = [10, -1.2] lats = [20, -3.4] depths = [30, -5.6] req_params = 'vs30 vs30measured z1pt0 z2pt5 backarc'.split() cll = SiteCollection.from_points( lons, lats, depths, SiteModelParam(), req_params) assert_eq(cll.vs30, [1.2, 1.2]) assert_eq(cll.vs30measured, [True, True]) assert_eq(cll.z1pt0, [3.4, 3.4]) assert_eq(cll.z2pt5, [5.6, 5.6]) assert_eq(cll.mesh.lons, [10, -1.1999999999999886]) assert_eq(cll.mesh.lats, [20, -3.4]) assert_eq(cll.mesh.depths, [30, -5.6]) assert_eq(cll.backarc, [False, False]) for arr in (cll.vs30, cll.z1pt0, cll.z2pt5): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, float) self.assertEqual(cll.vs30measured.dtype, numpy.bool_) self.assertEqual(cll.backarc.dtype, numpy.uint8) self.assertEqual(len(cll), 2) # test split_in_tiles tiles = cll.split_in_tiles(2) # there are 2 sites, 1 tile self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(1) # 2 tiles of 1 site each self.assertEqual(len(tiles), 2) # test split_max tiles = cll.split_max(2) # there are 2 sites, 1 tile self.assertEqual(len(tiles), 1) tiles = cll.split_max(1) # 2 tiles of 1 site each self.assertEqual(len(tiles), 2) # test geohash assert_eq(cll.geohash(4), numpy.array([b's5x1', b'7zrh'])) # test duplicate points lons = numpy.arange(10, 20, .1) lons[40:50] = lons[30:40] # add 10 duplicates lats = [0] * 100 req_params = 'vs30 vs30measured z1pt0 z2pt5 backarc'.split() with self.assertRaises(ValueError): SiteCollection.from_points( lons, lats, None, SiteModelParam(), req_params)
def test_from_points(self): lons = [10, -1.2] lats = [20, -3.4] depths = [30, -5.6] req_params = 'vs30 vs30measured z1pt0 z2pt5 backarc'.split() cll = SiteCollection.from_points( lons, lats, depths, SiteModelParam(), req_params) assert_eq(cll.vs30, [1.2, 1.2]) assert_eq(cll.vs30measured, [True, True]) assert_eq(cll.z1pt0, [3.4, 3.4]) assert_eq(cll.z2pt5, [5.6, 5.6]) assert_eq(cll.mesh.lons, [10, -1.1999999999999886]) assert_eq(cll.mesh.lats, [20, -3.4]) assert_eq(cll.mesh.depths, [30, -5.6]) assert_eq(cll.backarc, [False, False]) for arr in (cll.vs30, cll.z1pt0, cll.z2pt5): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, float) for arr in (cll.vs30measured, cll.backarc): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, bool) self.assertEqual(len(cll), 2) # test split_in_tiles tiles = cll.split_in_tiles(0) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(1) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(2) self.assertEqual(len(tiles), 2)
def test_from_points(self): lons = [10, -1.2] lats = [20, -3.4] depths = [30, -5.6] req_params = 'vs30 vs30measured z1pt0 z2pt5 backarc'.split() cll = SiteCollection.from_points( lons, lats, depths, SiteModelParam(), req_params) assert_eq(cll.vs30, [1.2, 1.2]) assert_eq(cll.vs30measured, [True, True]) assert_eq(cll.z1pt0, [3.4, 3.4]) assert_eq(cll.z2pt5, [5.6, 5.6]) assert_eq(cll.mesh.lons, [10, -1.1999999999999886]) assert_eq(cll.mesh.lats, [20, -3.4]) assert_eq(cll.mesh.depths, [30, -5.6]) assert_eq(cll.backarc, [False, False]) for arr in (cll.vs30, cll.z1pt0, cll.z2pt5): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, float) for arr in (cll.vs30measured, cll.backarc): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, bool) self.assertEqual(len(cll), 2) # test split_in_tiles tiles = cll.split_in_tiles(0) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(1) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(2) self.assertEqual(len(tiles), 2)
def test_from_points(self): lons = [10, -1.2] lats = [20, -3.4] cll = SiteCollection.from_points(lons, lats, [1, 2], SiteModelParam()) assert_eq(cll.vs30, [1.2, 1.2]) assert_eq(cll.vs30measured, [True, True]) assert_eq(cll.z1pt0, [3.4, 3.4]) assert_eq(cll.z2pt5, [5.6, 5.6]) assert_eq(cll.mesh.lons, [10, -1.2]) assert_eq(cll.mesh.lats, [20, -3.4]) assert_eq(cll.mesh.depths, None) assert_eq(cll.backarc, [False, False]) for arr in (cll.vs30, cll.z1pt0, cll.z2pt5): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, float) for arr in (cll.vs30measured, cll.backarc): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.flags.writeable, False) self.assertEqual(arr.dtype, bool) self.assertEqual(len(cll), 2) # test split_in_tiles tiles = cll.split_in_tiles(0) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(1) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(2) self.assertEqual(len(tiles), 2)
def test_from_points(self): lons = [10, -1.2] lats = [20, -3.4] cll = SiteCollection.from_points(lons, lats, [1, 2], SiteModelParam()) assert_eq(cll.vs30, [1.2, 1.2]) assert_eq(cll.vs30measured, [True, True]) assert_eq(cll.z1pt0, [3.4, 3.4]) assert_eq(cll.z2pt5, [5.6, 5.6]) assert_eq(cll.mesh.lons, [10, -1.2]) assert_eq(cll.mesh.lats, [20, -3.4]) assert_eq(cll.mesh.depths, None) assert_eq(cll.backarc, [False, False]) for arr in (cll.vs30, cll.z1pt0, cll.z2pt5): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.dtype, float) for arr in (cll.vs30measured, cll.backarc): self.assertIsInstance(arr, numpy.ndarray) self.assertEqual(arr.flags.writeable, False) self.assertEqual(arr.dtype, bool) self.assertEqual(len(cll), 2) # test split_in_tiles tiles = cll.split_in_tiles(0) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(1) self.assertEqual(len(tiles), 1) tiles = cll.split_in_tiles(2) self.assertEqual(len(tiles), 2)
def _setup_sites_yield_accel(): """ Returns a collection of sites (at four different locations) with different yield acceleration properties """ ls_params = [[800., 1.0], [600., 0.9], [400., 0.8], [300., 0.6], [200., 0.4], [150., 0.0]] point_1 = Point(-64.98651, -0.15738) point_2 = Point(-64.77466, -0.45686) point_3 = Point(-64.92747, -0.38363) point_4 = Point(-65.05396, -0.17088) sites = [] for locn in [point_1, point_2, point_3, point_4]: for vs30, k_y in ls_params: sites.append({ "lon": locn.longitude, "lat": locn.latitude, "vs30": vs30, "vs30measured": False, "z1pt0": 48.0, "z2pt5": 0.607, "yield_acceleration": k_y }) site_model_dt = np.dtype([(p, site_param_dt[p]) for p in sorted(sites[0])]) tuples = [ tuple(site[name] for name in site_model_dt.names) for site in sites ] sites = np.array(tuples, site_model_dt) req_site_params = ("vs30", "yield_acceleration") return SiteCollection.from_points(sites["lon"], sites["lat"], sitemodel=sites, req_site_params=req_site_params)
def _setup_sites_landsliding(): """ Returns a collections of sites at four different locations with different landsliding properties for the HAZUS method """ ls_params = [[800., 10], [800., 9], [600., 8], [600., 7], [400., 6], [400., 5], [300., 4], [300., 3], [200., 2], [200., 1], [150., 0]] point_1 = Point(-64.98651, -0.15738) point_2 = Point(-64.77466, -0.45686) point_3 = Point(-64.92747, -0.38363) point_4 = Point(-65.05396, -0.17088) sites = [] for locn in [point_1, point_2, point_3, point_4]: for vs30, hazus_ls_cat in ls_params: sites.append({ "lon": locn.longitude, "lat": locn.latitude, "vs30": vs30, "vs30measured": False, "z1pt0": 48.0, "z2pt5": 0.607, "landsliding_susceptibility": hazus_ls_cat }) site_model_dt = np.dtype([(p, site_param_dt[p]) for p in sorted(sites[0])]) tuples = [ tuple(site[name] for name in site_model_dt.names) for site in sites ] sites = np.array(tuples, site_model_dt) req_site_params = ("vs30", "landsliding_susceptibility") return SiteCollection.from_points(sites["lon"], sites["lat"], sitemodel=sites, req_site_params=req_site_params)
def test_normal(self): lons = [10, -1.2] lats = [20, -3.4] maximum_distance = {"Subduction IntraSlab": 200} sitecol = SiteCollection.from_points(lons, lats, SiteModelParam()) tile = Tile(sitecol, maximum_distance) self.assertEqual(repr(tile), "<Tile -1 <= lon <= 10, -3 <= lat <= 20>") src = make_point_source(1, 10) self.assertTrue(src in tile)
def test_normal(self): lons = [10, -1.2] lats = [20, -3.4] maximum_distance = {'Subduction IntraSlab': 200} sitecol = SiteCollection.from_points(lons, lats, SiteModelParam()) tile = Tile(sitecol, maximum_distance) self.assertEqual(repr(tile), '<Tile -1 <= lon <= 10, -3 <= lat <= 20>') src = make_point_source(1, 10) self.assertTrue(src in tile)
def test_cross_idl(self): lons = [-179.2, 178.0] lats = [3.0, 4.0] maximum_distance = {"Subduction IntraSlab": 200} sitecol = SiteCollection.from_points(lons, lats, SiteModelParam()) tile = Tile(sitecol, maximum_distance) self.assertEqual(repr(tile), "<Tile 178 <= lon <= 180, 3 <= lat <= 4>") src = make_point_source(-179.3, 3.5) self.assertTrue(src in tile) src = make_point_source(178.2, 3.5) self.assertTrue(src in tile)
def test_cross_idl(self): lons = [-179.2, 178.0] lats = [3.0, 4.0] maximum_distance = {'Subduction IntraSlab': 200} sitecol = SiteCollection.from_points(lons, lats, SiteModelParam()) tile = Tile(sitecol, maximum_distance) self.assertEqual(repr(tile), '<Tile 178 <= lon <= 180, 3 <= lat <= 4>') src = make_point_source(-179.3, 3.5) self.assertTrue(src in tile) src = make_point_source(178.2, 3.5) self.assertTrue(src in tile)
def test_source_errors_with_sites(self): # exercise the case where an error occurs while computing on a given # seismic source; in this case, we expect an error to be raised which # signals the id of the source in question fail_source = self.FailSource(2, [self.r2_1]) fake_sites = SiteCollection.from_points([0], [0]) with self.assertRaises(ValueError) as ae: list( stochastic_event_set([self.source1, fail_source], sites=fake_sites)) expected_error = ( 'An error occurred with source id=2. Error: Something bad happened' ) self.assertEqual(expected_error, str(ae.exception))
def _setup_sites_liquefaction_zhu(): """ Returns a collection of sites for liquefaction hazard analysis using the HAZUS method """ point_1 = Point(-64.98651, -0.15738) point_2 = Point(-64.77466, -0.45686) point_3 = Point(-64.92747, -0.38363) point_4 = Point(-65.05396, -0.17088) params = [[800., 0, 100., 0.0], [600., 1, 50., 1.0], [400., 2, 50., 2.0], [300., 3, 20., 5.0], [200., 4, 20., 7.0], [150., 5, 20., 10.0], [150., 5, 5., 15.0]] sites = [] for locn in [point_1, point_2, point_3, point_4]: for vs30, hazus_cat, dw, cti in params: sites.append({ "lon": locn.longitude, "lat": locn.latitude, "vs30": vs30, "vs30measured": False, "z1pt0": 48.0, "z2pt5": 0.607, "liquefaction_susceptibility": hazus_cat, "dw": dw, "cti": cti }) site_model_dt = np.dtype([(p, site_param_dt[p]) for p in sorted(sites[0])]) tuples = [ tuple(site[name] for name in site_model_dt.names) for site in sites ] sites = np.array(tuples, site_model_dt) req_site_params = ("vs30", "liquefaction_susceptibility", "dw", "cti") return SiteCollection.from_points(sites["lon"], sites["lat"], sitemodel=sites, req_site_params=req_site_params)
def setUpClass(cls): lons = numpy.array([-180, -178, 179, 180, 180], numpy.float32) lats = numpy.array([-27, -28, -26, -30, -28], numpy.float32) cls.sites = SiteCollection.from_points(lons, lats)
def setUpClass(cls): lons = numpy.array([-180, -178, 179, 180, 180], numpy.float32) lats = numpy.array([-27, -28, -26, -30, -28], numpy.float32) cls.sites = SiteCollection.from_points(lons, lats)