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")
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)
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)
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)
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)
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)
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"])
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)