def test_site_factors__out_of_bound_PGA__lenient_case_2(self):
     sf1 = SF(300, 120, 1.75, lenient=True)
     sf2 = SF(300, 120, 1.5)
     self.assertTrue(
         np.allclose(sf1.get_amplification().spectrum,
                     sf2.get_amplification().spectrum))
     self.assertTrue(
         np.allclose(sf1.get_phase_shift().spectrum,
                     sf2.get_phase_shift().spectrum))
 def test_site_factors__out_of_bound_Vs30__lenient_case_1(self):
     sf1 = SF(170, 125, 0.3, lenient=True)
     sf2 = SF(175, 125, 0.3)
     self.assertTrue(
         np.allclose(sf1.get_amplification().spectrum,
                     sf2.get_amplification().spectrum))
     self.assertTrue(
         np.allclose(sf1.get_phase_shift().spectrum,
                     sf2.get_phase_shift().spectrum))
 def test_site_factors__out_of_bound_z1__lenient_case_2(self):
     sf1 = SF(275, 980, 0.3, lenient=True)
     sf2 = SF(275, 900, 0.3)
     self.assertTrue(
         np.allclose(sf1.get_amplification().spectrum,
                     sf2.get_amplification().spectrum))
     self.assertTrue(
         np.allclose(sf1.get_phase_shift().spectrum,
                     sf2.get_phase_shift().spectrum))
 def test_site_factors__assert_phase_starts_from_approx_0_at_small_freq(
         self):
     sf = SF(265, 128, 0.012)
     phase = sf.get_phase_shift(show_interp_plots=False, method='eq_hh')
     self.assertTrue(isinstance(phase, FS))
     self.assertTrue(
         np.allclose(phase.raw_data[0, 1], 0.0, atol=0.1, rtol=0.0))
 def test_site_factors__assert_linear_amp_factor_is_approx_1_at_small_freq(
         self):
     sf = SF(265, 128, 0.012)
     amp = sf.get_amplification(Fourier=True, show_interp_plots=False)
     self.assertTrue(isinstance(amp, FS))
     self.assertTrue(
         np.allclose(amp.raw_data[0, 1], 1.0, atol=0.1, rtol=0.0))
Ejemplo n.º 6
0
 def test_interp_plots(self):
     vs30, z1000, pga = 365, 247, 0.75
     sf = SF(vs30, z1000, pga)
     sf.get_both_amplf_and_phase(show_interp_plots=True)
     sf.get_amplification(Fourier=False, show_interp_plots=True)
     sf.get_amplification(Fourier=True, show_interp_plots=True)
     sf.get_amplification(method='eq_hh', Fourier=True, show_interp_plots=True)
     sf.get_phase_shift(show_interp_plots=True)
 def test_site_factors__invalid_combinations__not_lenient(self):
     with self.assertRaisesRegex(ValueError, 'combination not valid'):
         SF(650, 900, 1.0, lenient=False)
 def test_site_factors__out_of_bount_PGA_values__not_lenient(self):
     with self.assertRaisesRegex(ValueError, 'PGA should be between'):
         SF(180, 650, 1.6, lenient=False)
 def test_site_factors__out_of_bound_z1_values__not_lenient(self):
     with self.assertRaisesRegex(ValueError, 'z1_in_m should be between'):
         SF(180, 901, 0.3, lenient=False)
 def test_site_factors__out_of_bound_Vs30_values__not_lenient(self):
     with self.assertRaisesRegex(ValueError, 'Vs30 should be between'):
         SF(174, 125, 0.3, lenient=False)
 def test_site_factors__assert_data_type(self):
     sf = SF(265, 128, 0.012)
     amp = sf.get_amplification(Fourier=False, show_interp_plots=False)
     self.assertTrue(isinstance(amp, FS))
Ejemplo n.º 12
0
    def test_site_factors(self):
        sf = SF(265, 128, 0.012)

        # assert data type
        amp = sf.get_amplification(Fourier=False, show_interp_plots=False)
        self.assertTrue(isinstance(amp, FS))

        # assert that linear amplification factor starts from ~1.0 at small freq
        amp = sf.get_amplification(Fourier=True, show_interp_plots=False)
        self.assertTrue(isinstance(amp, FS))
        self.assertTrue(np.allclose(amp.raw_data[0, 1], 1.0, atol=0.1, rtol=0.0))

        # assert that phase start from ~0.0 at small freq
        phase = sf.get_phase_shift(show_interp_plots=False, method='eq_hh')
        self.assertTrue(isinstance(phase, FS))
        self.assertTrue(np.allclose(phase.raw_data[0, 1], 0.0, atol=0.1, rtol=0.0))

        # test out-of-bound values (not lenient)
        with self.assertRaises(ValueError, msg='Vs30 should be between'):
            SF(174, 125, 0.3, lenient=False)
        with self.assertRaises(ValueError, msg='z1_in_m should be between'):
            SF(180, 901, 0.3, lenient=False)
        with self.assertRaises(ValueError, msg='PGA should be between'):
            SF(180, 650, 1.6, lenient=False)

        # test invalid combinations (not lenient)
        with self.assertRaises(ValueError, msg='combination not valid'):
            SF(650, 900, 1.0, lenient=False)

        # test lenient cases: out-of-bound Vs30
        sf1 = SF(170, 125, 0.3, lenient=True)
        sf2 = SF(175, 125, 0.3)
        self.assertTrue(np.allclose(sf1.get_amplification().spectrum,
                                    sf2.get_amplification().spectrum))
        self.assertTrue(np.allclose(sf1.get_phase_shift().spectrum,
                                    sf2.get_phase_shift().spectrum))

        sf1 = SF(980, 10, 0.3, lenient=True)
        sf2 = SF(950, 10, 0.3)
        self.assertTrue(np.allclose(sf1.get_amplification().spectrum,
                                    sf2.get_amplification().spectrum))
        self.assertTrue(np.allclose(sf1.get_phase_shift().spectrum,
                                    sf2.get_phase_shift().spectrum))

        # test lenient cases: out-of-bound z1
        sf1 = SF(275, 5, 0.3, lenient=True)
        sf2 = SF(275, 8, 0.3)
        self.assertTrue(np.allclose(sf1.get_amplification().spectrum,
                                    sf2.get_amplification().spectrum))
        self.assertTrue(np.allclose(sf1.get_phase_shift().spectrum,
                                    sf2.get_phase_shift().spectrum))

        sf1 = SF(275, 980, 0.3, lenient=True)
        sf2 = SF(275, 900, 0.3)
        self.assertTrue(np.allclose(sf1.get_amplification().spectrum,
                                    sf2.get_amplification().spectrum))
        self.assertTrue(np.allclose(sf1.get_phase_shift().spectrum,
                                    sf2.get_phase_shift().spectrum))

        # test lenient cases: out-of-bound PGA
        sf1 = SF(300, 120, 0.008, lenient=True)
        sf2 = SF(300, 120, 0.01)
        self.assertTrue(np.allclose(sf1.get_amplification().spectrum,
                                    sf2.get_amplification().spectrum))
        self.assertTrue(np.allclose(sf1.get_phase_shift().spectrum,
                                    sf2.get_phase_shift().spectrum))

        sf1 = SF(300, 120, 1.75, lenient=True)
        sf2 = SF(300, 120, 1.5)
        self.assertTrue(np.allclose(sf1.get_amplification().spectrum,
                                    sf2.get_amplification().spectrum))
        self.assertTrue(np.allclose(sf1.get_phase_shift().spectrum,
                                    sf2.get_phase_shift().spectrum))