Ejemplo n.º 1
0
    def test_init(self):
        # Instantiate DispersionCurve objects.
        frequency = [1, 2, 3]
        velocity = [4, 5, 6]
        ray = swprepost.DispersionCurve(frequency=frequency, velocity=velocity)
        lov = swprepost.DispersionCurve(frequency=frequency, velocity=velocity)

        # Rayleigh Alone
        ex_a = swprepost.DispersionSet(identifier=1, misfit=1.2,
                                       rayleigh={0: ray}, love=None)
        self.assertListEqual(velocity, ex_a.rayleigh[0].velocity.tolist())
        self.assertEqual(1, ex_a.identifier)
        self.assertEqual(1.2, ex_a.misfit)

        # Love Alone
        ex_b = swprepost.DispersionSet(identifier=2, misfit=3.4,
                                       rayleigh=None, love={0: lov})
        self.assertListEqual(velocity, ex_b.love[0].velocity.tolist())

        # Rayleigh and Love
        ex_c = swprepost.DispersionSet(identifier=3, misfit=5.7,
                                       rayleigh={0: ray}, love={0: lov})
        self.assertListEqual(velocity, ex_c.rayleigh[0].velocity.tolist())
        self.assertListEqual(velocity, ex_c.love[0].velocity.tolist())

        # Rayleigh and Love are None
        self.assertRaises(ValueError, swprepost.DispersionSet,
                          identifier="Test")
Ejemplo n.º 2
0
    def test_write_to_txt(self):
        dc_0 = swprepost.DispersionCurve([1, 5, 10, 15], [100, 200, 300, 400])
        dc_1 = swprepost.DispersionCurve([1, 5, 12, 15], [100, 180, 300, 400])
        dc_set_0 = swprepost.DispersionSet(0,
                                           misfit=0.0,
                                           rayleigh={
                                               0: dc_0,
                                               1: dc_1
                                           },
                                           love={
                                               0: dc_1,
                                               1: dc_0
                                           })
        dc_set_1 = swprepost.DispersionSet(1,
                                           misfit=0.0,
                                           rayleigh={
                                               0: dc_1,
                                               1: dc_0
                                           },
                                           love={
                                               0: dc_0,
                                               1: dc_1
                                           })
        set_list = [dc_set_0, dc_set_1]
        expected = swprepost.DispersionSuite.from_list(set_list)

        fname = "dc_suite_expected.dc"
        expected.write_to_txt(fname)
        returned = swprepost.DispersionSuite.from_geopsy(fname)
        os.remove(fname)

        self.assertEqual(expected, returned)
Ejemplo n.º 3
0
    def test_eq(self):
        dc = swprepost.DispersionCurve([1, 2, 3], [10, 20, 30])
        dc_set = swprepost.DispersionSet(0, rayleigh={0: dc})
        expected = swprepost.DispersionSuite.from_list([dc_set, dc_set])

        # Bad length
        returned = swprepost.DispersionSuite.from_list([dc_set])
        self.assertNotEqual(expected, returned)

        # Bad Value
        dc_set = swprepost.DispersionSet(1, rayleigh={0: dc})
        returned = swprepost.DispersionSuite.from_list([dc_set, dc_set])
        self.assertNotEqual(expected, returned)
Ejemplo n.º 4
0
 def setUpClass(cls):
     cls.ray = {0: swprepost.DispersionCurve([0.1, 0.2], [200, 100]),
                1: swprepost.DispersionCurve([0.1, 0.2], [400, 200])}
     cls.lov = {0: swprepost.DispersionCurve([0.15, 0.2], [200, 150]),
                1: swprepost.DispersionCurve([0.1, 0.22], [410, 200])}
     cls.identifier = 0
     cls.misfit = 0.
     cls.dc_set = swprepost.DispersionSet(cls.identifier, cls.misfit,
                                          rayleigh=cls.ray,
                                          love=cls.lov)
Ejemplo n.º 5
0
    def test_str_and_repr(self):
        a_set = {0: swprepost.DispersionCurve([0.1, 0.2], [200, 100]),
                 1: swprepost.DispersionCurve([0.1, 0.2], [400, 200])}
        dc_set = swprepost.DispersionSet(0, rayleigh=a_set, love=a_set)

        # __str__
        expected = "DispersionSet with 2 Rayleigh and 2 Love modes"
        returned = dc_set.__str__()
        self.assertEqual(expected, returned)

        # __repr__
        expected = f"DispersionSet(identifier={0}, rayleigh={a_set}, love={a_set}, misfit=0.0)"
        returned = dc_set.__repr__()
        self.assertEqual(expected, returned)
Ejemplo n.º 6
0
    def test_append(self):
        # Manual instantiation
        frequency = np.array([1, 2, 3])
        velocity = np.array([4, 5, 6])
        dc = swprepost.DispersionCurve(frequency=frequency, velocity=velocity)
        dc_set_0 = swprepost.DispersionSet(identifier=0,
                                           misfit=2.1,
                                           rayleigh={0: dc},
                                           love=None)
        dc_suite = swprepost.DispersionSuite(dispersionset=dc_set_0)

        # Manual Append
        dc_set_1 = swprepost.DispersionSet(identifier=2,
                                           misfit=1.1,
                                           rayleigh={0: dc},
                                           love=None)
        dc_suite.append(dispersionset=dc_set_1, sort=False)

        # Compare the Result
        for dc_set in dc_suite:
            self.assertArrayEqual(frequency, dc_set.rayleigh[0].frequency)
            self.assertArrayEqual(velocity, dc_set.rayleigh[0].velocity)
        self.assertListEqual([0, 2], dc_suite.identifiers)
        self.assertListEqual([2.1, 1.1], dc_suite.misfits)
Ejemplo n.º 7
0
    def test_init(self):
        # Manual instantiation
        frequency = np.array([1, 2, 3])
        velocity = np.array([4, 5, 6])
        dc = swprepost.DispersionCurve(frequency=frequency, velocity=velocity)
        expected = swprepost.DispersionSet(identifier=5,
                                           misfit=15.,
                                           rayleigh={0: dc},
                                           love=None)
        dc_suite = swprepost.DispersionSuite(dispersionset=expected)
        returned = dc_suite[0]
        self.assertEqual(expected, returned)

        # Invalid type
        self.assertRaises(TypeError, swprepost.DispersionSuite, ["bad dc_set"])
Ejemplo n.º 8
0
    def test_eq(self):
        dc = swprepost.DispersionCurve([1, 2], [3, 4])
        dc_set = swprepost.DispersionSet(0, rayleigh={0: dc})

        # Not Equal
        self.assertFalse(self.dc_set == dc_set)