def test_read_nlloc_hyp(self): """ Test reading nonlinloc hypocenter phase file. """ filename = get_example_file("nlloc_custom.hyp") cat = read_nlloc_hyp(filename, coordinate_converter=_mock_coordinate_converter) # reset pick channel codes, these got automatically mapped upon reading for pick in cat[0].picks: pick.waveform_id.channel_code = None with open(get_example_file("nlloc_custom.qml"), 'rb') as tf: quakeml_expected = tf.read().decode() with NamedTemporaryFile() as tf: cat.write(tf, format="QUAKEML") tf.seek(0) quakeml_got = tf.read().decode() # test creation times manually as they get omitted in the overall test creation_time = UTCDateTime("2014-10-17T16:30:08.000000Z") self.assertEqual(cat[0].creation_info.creation_time, creation_time) self.assertEqual(cat[0].origins[0].creation_info.creation_time, creation_time) quakeml_expected = remove_unique_ids(quakeml_expected, remove_creation_time=True) quakeml_got = remove_unique_ids(quakeml_got, remove_creation_time=True) # In python 3 float.__str__ outputs 5 decimals of precision more. # We use it in writing QuakeML, so files look different on Py2/3. # We use regex to cut off floats in the xml such that we only compare # 7 digits. pattern = r'(<.*?>[0-9]*?\.[0-9]{7})[0-9]*?(</.*?>)' quakeml_expected = re.sub(pattern, r'\1\2', quakeml_expected) quakeml_got = re.sub(pattern, r'\1\2', quakeml_got) # remove (changing) obspy version number from output re_pattern = '<version>ObsPy .*?</version>' quakeml_expected = re.sub(re_pattern, '', quakeml_expected, 1) quakeml_got = re.sub(re_pattern, '', quakeml_got, 1) compare_xml_strings(quakeml_expected, quakeml_got)
def test_read_nlloc_hyp(self): """ Test reading nonlinloc hypocenter phase file. """ filename = get_example_file("nlloc_custom.hyp") cat = read_nlloc_hyp(filename, coordinate_converter=_mock_coordinate_converter) with open(get_example_file("nlloc_custom.qml"), 'rb') as tf: quakeml_expected = tf.read().decode() with NamedTemporaryFile() as tf: cat.write(tf, format="QUAKEML") tf.seek(0) quakeml_got = tf.read().decode() # test creation times manually as they get omitted in the overall test creation_time = UTCDateTime("2014-10-17T16:30:08.000000Z") self.assertEqual(cat[0].creation_info.creation_time, creation_time) self.assertEqual(cat[0].origins[0].creation_info.creation_time, creation_time) quakeml_expected = remove_unique_ids(quakeml_expected, remove_creation_time=True) quakeml_got = remove_unique_ids(quakeml_got, remove_creation_time=True) # In python 3 float.__str__ outputs 5 decimals of precision more. # We use it in writing QuakeML, so files look different on Py2/3. # We use regex to cut off floats in the xml such that we only compare # 7 digits. pattern = r'(<.*?>[0-9]*?\.[0-9]{7})[0-9]*?(</.*?>)' quakeml_expected = re.sub(pattern, r'\1\2', quakeml_expected) quakeml_got = re.sub(pattern, r'\1\2', quakeml_got) # remove (changing) obspy version number from output re_pattern = '<version>ObsPy .*?</version>' quakeml_expected = re.sub(re_pattern, '', quakeml_expected, 1) quakeml_got = re.sub(re_pattern, '', quakeml_got, 1) compare_xml_strings(quakeml_expected, quakeml_got)