def test_pierce_p_iasp91_geo(self): """ Test single pierce point against output from TauP using geo data. This version of the test is used when geographiclib is installed """ m = TauPyModel(model="iasp91") with warnings.catch_warnings(record=True): warnings.simplefilter("always") arrivals = m.get_pierce_points_geo(source_depth_in_km=10.0, source_latitude_in_deg=-45.0, source_longitude_in_deg=-50.0, receiver_latitude_in_deg=-80.0, receiver_longitude_in_deg=-50.0, phase_list=["P"]) self.assertEqual(len(arrivals), 1) p_arr = arrivals[0] # Open test file. filename = os.path.join( DATA, "taup_pierce_-mod_isp91_ph_P_-h_10_-evt_" + "-45_-50_-sta_-80_-50") expected = np.genfromtxt(filename, skip_header=1) np.testing.assert_almost_equal(expected[:, 0], np.degrees(p_arr.pierce['dist']), 2) np.testing.assert_almost_equal(expected[:, 1], p_arr.pierce['depth'], 1) np.testing.assert_almost_equal(expected[:, 2], p_arr.pierce['time'], 1) if geodetics.GEOGRAPHICLIB_VERSION_AT_LEAST_1_34: np.testing.assert_almost_equal(expected[:, 3], p_arr.pierce['lat'], 1) np.testing.assert_almost_equal(expected[:, 4], p_arr.pierce['lon'], 1)
def test_pierce_p_iasp91_geo(self): """ Test single pierce point against output from TauP using geo data. This version of the test is used when geographiclib is installed """ m = TauPyModel(model="iasp91") arrivals = m.get_pierce_points_geo(source_depth_in_km=10.0, source_latitude_in_deg=-45.0, source_longitude_in_deg=-50.0, receiver_latitude_in_deg=-80.0, receiver_longitude_in_deg=-50.0, phase_list=["P"]) self.assertEqual(len(arrivals), 1) p_arr = arrivals[0] # Open test file. filename = os.path.join(DATA, "taup_pierce_-mod_isp91_ph_P_-h_10_-evt_" + "-45_-50_-sta_-80_-50") expected = np.genfromtxt(filename, skip_header=1) np.testing.assert_almost_equal(expected[:, 0], np.degrees(p_arr.pierce['dist']), 2) np.testing.assert_almost_equal(expected[:, 1], p_arr.pierce['depth'], 1) np.testing.assert_almost_equal(expected[:, 2], p_arr.pierce['time'], 1) np.testing.assert_almost_equal(expected[:, 3], p_arr.pierce['lat'], 1) np.testing.assert_almost_equal(expected[:, 4], p_arr.pierce['lon'], 1)
def find_reflect_coord(coords,phase_family,c_depth): model = TauPyModel(model='prem'+str(c_depth)) arr = model.get_pierce_points_geo(source_depth_in_km=coords[1], source_latitude_in_deg=coords[4], source_longitude_in_deg=coords[5], receiver_latitude_in_deg=coords[2], receiver_longitude_in_deg=coords[3], phase_list=phase_family) reflect_coords = [] for arrivals in arr: a = np.array([[jj for jj in ii] for ii in arrivals.pierce]) if 'v' in phase_family[0]: ex = argrelextrema(a[:-3],np.greater)[0] for ii in ex: if a[ii,-3] != c_depth: continue else: reflect_coords.append([a[ii,-2],a[ii,-1]]) if '^' in phase_family[0]: ex = argrelextrema(a[:-3],np.less)[0] for ii in ex: if a[ii,-3] != c_depth: continue else: reflect_coords.append([a[ii,-2],a[ii,-1]]) return reflect_coords
def test_pierce_p_iasp91_fallback_geo(self): """ Test single pierce point against output from TauP using geo data. This version of the test checks that things still work when geographiclib is not installed. """ has_geographiclib_real = geodetics.HAS_GEOGRAPHICLIB geodetics.HAS_GEOGRAPHICLIB = False m = TauPyModel(model="iasp91") with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") arrivals = m.get_pierce_points_geo(source_depth_in_km=10.0, source_latitude_in_deg=-45.0, source_longitude_in_deg=-50.0, receiver_latitude_in_deg=-80.0, receiver_longitude_in_deg=-50.0, phase_list=["P"]) geodetics.HAS_GEOGRAPHICLIB = has_geographiclib_real self.assertTrue(issubclass(w[-1].category, UserWarning)) self.assertEqual(len(arrivals), 1) p_arr = arrivals[0] # Open test file. filename = os.path.join(DATA, "taup_pierce_-h_10_-ph_P_-deg_35") expected = np.genfromtxt(filename, skip_header=1) np.testing.assert_almost_equal(expected[:, 0], np.degrees(p_arr.pierce['dist']), 2) np.testing.assert_almost_equal(expected[:, 1], p_arr.pierce['depth'], 1) np.testing.assert_almost_equal(expected[:, 2], p_arr.pierce['time'], 1) # NB: we do not check pierce['lat'] and pierce['lon'] here, as these # are not calculated when geographiclib is not installed. We check # that they are not present. with self.assertRaises(ValueError): p_arr.pierce["lat"] with self.assertRaises(ValueError): p_arr.pierce["lon"]
def test_pierce_p_iasp91_fallback_geo(self): """ Test single pierce point against output from TauP using geo data. This version of the test checks that things still work when geographiclib is not installed. """ has_geographiclib_real = geodetics.HAS_GEOGRAPHICLIB geodetics.HAS_GEOGRAPHICLIB = False m = TauPyModel(model="iasp91") with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") arrivals = m.get_pierce_points_geo(source_depth_in_km=10.0, source_latitude_in_deg=-45.0, source_longitude_in_deg=-50.0, receiver_latitude_in_deg=-80.0, receiver_longitude_in_deg=-50.0, phase_list=["P"]) geodetics.HAS_GEOGRAPHICLIB = has_geographiclib_real assert issubclass(w[-1].category, UserWarning) self.assertEqual(len(arrivals), 1) p_arr = arrivals[0] # Open test file. filename = os.path.join(DATA, "taup_pierce_-h_10_-ph_P_-deg_35") expected = np.genfromtxt(filename, skip_header=1) np.testing.assert_almost_equal(expected[:, 0], np.degrees(p_arr.pierce['dist']), 2) np.testing.assert_almost_equal(expected[:, 1], p_arr.pierce['depth'], 1) np.testing.assert_almost_equal(expected[:, 2], p_arr.pierce['time'], 1) # NB: we do not check pierce['lat'] and pierce['lon'] here, as these # are not calculated when geographiclib is not installed. We check # that they are not present. with self.assertRaises(ValueError): p_arr.pierce["lat"] with self.assertRaises(ValueError): p_arr.pierce["lon"]