本文整理汇总了Python中obspy.core.event.Pick.extra方法的典型用法代码示例。如果您正苦于以下问题:Python Pick.extra方法的具体用法?Python Pick.extra怎么用?Python Pick.extra使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类obspy.core.event.Pick
的用法示例。
在下文中一共展示了Pick.extra方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_write_with_extra_tags_and_read
# 需要导入模块: from obspy.core.event import Pick [as 别名]
# 或者: from obspy.core.event.Pick import extra [as 别名]
def test_write_with_extra_tags_and_read(self):
"""
Tests that a QuakeML file with additional custom "extra" tags gets
written correctly and that when reading it again the extra tags are
parsed correctly.
"""
filename = os.path.join(self.path, "quakeml_1.2_origin.xml")
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
cat = _read_quakeml(filename)
self.assertEqual(len(w), 0)
# add some custom tags to first event:
# - tag with explicit namespace but no explicit ns abbreviation
# - tag without explicit namespace (gets obspy default ns)
# - tag with explicit namespace and namespace abbreviation
my_extra = AttribDict(
{'public': {'value': False,
'namespace': 'http://some-page.de/xmlns/1.0',
'attrib': {'some_attrib': 'some_value',
'another_attrib': 'another_value'}},
'custom': {'value': 'True',
'namespace': 'http://test.org/xmlns/0.1'},
'new_tag': {'value': 1234,
'namespace': 'http://test.org/xmlns/0.1'},
'tX': {'value': UTCDateTime('2013-01-02T13:12:14.600000Z'),
'namespace': 'http://test.org/xmlns/0.1'},
'dataid': {'namespace': 'http://anss.org/xmlns/catalog/0.1',
'type': 'attribute', 'value': '00999999'},
# some nested tags :
'quantity': {'namespace': 'http://some-page.de/xmlns/1.0',
'attrib': {'attrib1': 'attrib_value1',
'attrib2': 'attrib_value2'},
'value': {
'my_nested_tag1': {
'namespace': 'http://some-page.de/xmlns/1.0',
'value': 1.23E10},
'my_nested_tag2': {
'namespace': 'http://some-page.de/xmlns/1.0',
'value': False}}}})
nsmap = {'ns0': 'http://test.org/xmlns/0.1',
'catalog': 'http://anss.org/xmlns/catalog/0.1'}
cat[0].extra = my_extra.copy()
# insert a pick with an extra field
p = Pick()
p.extra = {'weight': {'value': 2,
'namespace': 'http://test.org/xmlns/0.1'}}
cat[0].picks.append(p)
with NamedTemporaryFile() as tf:
tmpfile = tf.name
# write file
cat.write(tmpfile, format='QUAKEML', nsmap=nsmap)
# check contents
with open(tmpfile, 'rb') as fh:
# enforce reproducible attribute orders through write_c14n
obj = etree.fromstring(fh.read()).getroottree()
buf = io.BytesIO()
obj.write_c14n(buf)
buf.seek(0, 0)
content = buf.read()
# check namespace definitions in root element
expected = [b'<q:quakeml',
b'xmlns:catalog="http://anss.org/xmlns/catalog/0.1"',
b'xmlns:ns0="http://test.org/xmlns/0.1"',
b'xmlns:ns1="http://some-page.de/xmlns/1.0"',
b'xmlns:q="http://quakeml.org/xmlns/quakeml/1.2"',
b'xmlns="http://quakeml.org/xmlns/bed/1.2"']
for line in expected:
self.assertIn(line, content)
# check additional tags
expected = [
b'<ns0:custom>True</ns0:custom>',
b'<ns0:new_tag>1234</ns0:new_tag>',
b'<ns0:tX>2013-01-02T13:12:14.600000Z</ns0:tX>',
b'<ns1:public '
b'another_attrib="another_value" '
b'some_attrib="some_value">false</ns1:public>'
]
for line in expected:
self.assertIn(line, content)
# now, read again to test if it's parsed correctly..
cat = _read_quakeml(tmpfile)
# when reading..
# - namespace abbreviations should be disregarded
# - we always end up with a namespace definition, even if it was
# omitted when originally setting the custom tag
# - custom namespace abbreviations should attached to Catalog
self.assertTrue(hasattr(cat[0], 'extra'))
def _tostr(x):
if isinstance(x, bool):
if x:
return str('true')
else:
return str('false')
elif isinstance(x, AttribDict):
for key, value in x.items():
x[key].value = _tostr(value['value'])
#.........这里部分代码省略.........
示例2: __toPick
# 需要导入模块: from obspy.core.event import Pick [as 别名]
# 或者: from obspy.core.event.Pick import extra [as 别名]
def __toPick(parser, pick_el, evaluation_mode):
"""
"""
pick = Pick()
pick.resource_id = ResourceIdentifier(prefix="/".join([RESOURCE_ROOT, "pick"]))
# Raise a warnings if there is a phase delay
phase_delay = parser.xpath2obj("phase_delay", pick_el, float)
if phase_delay is not None:
msg = "The pick has a phase_delay!"
raise Exception(msg)
waveform = pick_el.xpath("waveform")[0]
network = waveform.get("networkCode")
station = fix_station_name(waveform.get("stationCode"))
# Map some station names.
if station in STATION_DICT:
station = STATION_DICT[station]
if not network:
network = NETWORK_DICT[station]
location = waveform.get("locationCode") or ""
channel = waveform.get("channelCode") or ""
pick.waveform_id = WaveformStreamID(
network_code=network,
station_code=station,
channel_code=channel,
location_code=location)
pick.time, pick.time_errors = __toTimeQuantity(parser, pick_el, "time")
# Picks without time are not quakeml conform
if pick.time is None:
print "Pick has no time and is ignored: %s" % station
return None
pick.phase_hint = parser.xpath2obj('phaseHint', pick_el, str)
onset = parser.xpath2obj('onset', pick_el)
# Fixing bad and old typo ...
if onset == "implusive":
onset = "impulsive"
if onset:
pick.onset = onset.lower()
# Evaluation mode of a pick is global in the SeisHub Event file format.
#pick.evaluation_mode = evaluation_mode
# The polarity needs to be mapped.
polarity = parser.xpath2obj('polarity', pick_el)
pol_map_dict = {'up': 'positive', 'positive': 'positive',
'forward': 'positive',
'forwards': 'positive',
'right': 'positive',
'backward': 'negative',
'backwards': 'negative',
'left': 'negative',
'down': 'negative', 'negative': 'negative',
'undecidable': 'undecidable',
'poorup': 'positive',
'poordown': 'negative'}
if polarity:
if polarity.lower() in pol_map_dict:
pick.polarity = pol_map_dict[polarity.lower()]
else:
pick.polarity = polarity.lower()
pick_weight = parser.xpath2obj('weight', pick_el, int)
if pick_weight is not None:
pick.extra = AttribDict()
pick.extra.weight = {'value': pick_weight, 'namespace': NAMESPACE}
return pick
示例3: test_write_with_extra_tags_and_read
# 需要导入模块: from obspy.core.event import Pick [as 别名]
# 或者: from obspy.core.event.Pick import extra [as 别名]
def test_write_with_extra_tags_and_read(self):
"""
Tests that a QuakeML file with additional custom "extra" tags gets
written correctly and that when reading it again the extra tags are
parsed correctly.
"""
filename = os.path.join(self.path, "quakeml_1.2_origin.xml")
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
cat = readQuakeML(filename)
self.assertEqual(len(w), 0)
# add some custom tags to first event:
# - tag with explicit namespace but no explicit ns abbreviation
# - tag without explicit namespace (gets obspy default ns)
# - tag with explicit namespace and namespace abbreviation
my_extra = AttribDict(
{'public': {'value': False,
'namespace': r"http://some-page.de/xmlns/1.0",
'attrib': {u"some_attrib": u"some_value",
u"another_attrib": u"another_value"}},
'custom': {'value': u"True",
'namespace': r'http://test.org/xmlns/0.1'},
'new_tag': {'value': 1234,
'namespace': r"http://test.org/xmlns/0.1"},
'tX': {'value': UTCDateTime('2013-01-02T13:12:14.600000Z'),
'namespace': r'http://test.org/xmlns/0.1'},
'dataid': {'namespace': r'http://anss.org/xmlns/catalog/0.1',
'type': 'attribute', 'value': '00999999'}})
nsmap = {"ns0": r"http://test.org/xmlns/0.1",
"catalog": r'http://anss.org/xmlns/catalog/0.1'}
cat[0].extra = my_extra.copy()
# insert a pick with an extra field
p = Pick()
p.extra = {'weight': {'value': 2,
'namespace': r"http://test.org/xmlns/0.1"}}
cat[0].picks.append(p)
with NamedTemporaryFile() as tf:
tmpfile = tf.name
# write file
cat.write(tmpfile, format="QUAKEML", nsmap=nsmap)
# check contents
with open(tmpfile, "r") as fh:
content = fh.read()
# check namespace definitions in root element
expected = ['<q:quakeml',
'xmlns:catalog="http://anss.org/xmlns/catalog/0.1"',
'xmlns:ns0="http://test.org/xmlns/0.1"',
'xmlns:ns1="http://some-page.de/xmlns/1.0"',
'xmlns:q="http://quakeml.org/xmlns/quakeml/1.2"',
'xmlns="http://quakeml.org/xmlns/bed/1.2"']
for line in expected:
self.assertTrue(line in content)
# check additional tags
expected = [
'<ns0:custom>True</ns0:custom>',
'<ns0:new_tag>1234</ns0:new_tag>',
'<ns0:tX>2013-01-02T13:12:14.600000Z</ns0:tX>',
'<ns1:public '
'another_attrib="another_value" '
'some_attrib="some_value">false</ns1:public>'
]
for lines in expected:
self.assertTrue(line in content)
# now, read again to test if its parsed correctly..
cat = readQuakeML(tmpfile)
# when reading..
# - namespace abbreviations should be disregarded
# - we always end up with a namespace definition, even if it was
# omitted when originally setting the custom tag
# - custom namespace abbreviations should attached to Catalog
self.assertTrue(hasattr(cat[0], "extra"))
def _tostr(x):
if isinstance(x, bool):
if x:
return str("true")
else:
return str("false")
return str(x)
for key, value in my_extra.items():
my_extra[key]['value'] = _tostr(value['value'])
self.assertEqual(cat[0].extra, my_extra)
self.assertTrue(hasattr(cat[0].picks[0], "extra"))
self.assertEqual(
cat[0].picks[0].extra,
{'weight': {'value': '2',
'namespace': r'http://test.org/xmlns/0.1'}})
self.assertTrue(hasattr(cat, "nsmap"))
self.assertTrue(getattr(cat, "nsmap")['ns0'] == nsmap['ns0'])
示例4: test_write_with_extra_tags_and_read
# 需要导入模块: from obspy.core.event import Pick [as 别名]
# 或者: from obspy.core.event.Pick import extra [as 别名]
def test_write_with_extra_tags_and_read(self):
"""
Tests that a QuakeML file with additional custom "extra" tags gets
written correctly and that when reading it again the extra tags are
parsed correctly.
"""
filename = os.path.join(self.path, "quakeml_1.2_origin.xml")
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
cat = _read_quakeml(filename)
self.assertEqual(len(w), 0)
# add some custom tags to first event:
# - tag with explicit namespace but no explicit ns abbreviation
# - tag without explicit namespace (gets obspy default ns)
# - tag with explicit namespace and namespace abbreviation
my_extra = AttribDict(
{
"public": {
"value": False,
"namespace": "http://some-page.de/xmlns/1.0",
"attrib": {"some_attrib": "some_value", "another_attrib": "another_value"},
},
"custom": {"value": "True", "namespace": "http://test.org/xmlns/0.1"},
"new_tag": {"value": 1234, "namespace": "http://test.org/xmlns/0.1"},
"tX": {"value": UTCDateTime("2013-01-02T13:12:14.600000Z"), "namespace": "http://test.org/xmlns/0.1"},
"dataid": {"namespace": "http://anss.org/xmlns/catalog/0.1", "type": "attribute", "value": "00999999"},
# some nested tags :
"quantity": {
"namespace": "http://some-page.de/xmlns/1.0",
"attrib": {"attrib1": "attrib_value1", "attrib2": "attrib_value2"},
"value": {
"my_nested_tag1": {"namespace": "http://some-page.de/xmlns/1.0", "value": 1.23e10},
"my_nested_tag2": {"namespace": "http://some-page.de/xmlns/1.0", "value": False},
},
},
}
)
nsmap = {"ns0": "http://test.org/xmlns/0.1", "catalog": "http://anss.org/xmlns/catalog/0.1"}
cat[0].extra = my_extra.copy()
# insert a pick with an extra field
p = Pick()
p.extra = {"weight": {"value": 2, "namespace": "http://test.org/xmlns/0.1"}}
cat[0].picks.append(p)
with NamedTemporaryFile() as tf:
tmpfile = tf.name
# write file
cat.write(tmpfile, format="QUAKEML", nsmap=nsmap)
# check contents
with open(tmpfile, "rb") as fh:
# enforce reproducible attribute orders through write_c14n
obj = etree.fromstring(fh.read()).getroottree()
buf = io.BytesIO()
obj.write_c14n(buf)
buf.seek(0, 0)
content = buf.read()
# check namespace definitions in root element
expected = [
b"<q:quakeml",
b'xmlns:catalog="http://anss.org/xmlns/catalog/0.1"',
b'xmlns:ns0="http://test.org/xmlns/0.1"',
b'xmlns:ns1="http://some-page.de/xmlns/1.0"',
b'xmlns:q="http://quakeml.org/xmlns/quakeml/1.2"',
b'xmlns="http://quakeml.org/xmlns/bed/1.2"',
]
for line in expected:
self.assertIn(line, content)
# check additional tags
expected = [
b"<ns0:custom>True</ns0:custom>",
b"<ns0:new_tag>1234</ns0:new_tag>",
b"<ns0:tX>2013-01-02T13:12:14.600000Z</ns0:tX>",
b"<ns1:public " b'another_attrib="another_value" ' b'some_attrib="some_value">false</ns1:public>',
]
for line in expected:
self.assertIn(line, content)
# now, read again to test if it's parsed correctly..
cat = _read_quakeml(tmpfile)
# when reading..
# - namespace abbreviations should be disregarded
# - we always end up with a namespace definition, even if it was
# omitted when originally setting the custom tag
# - custom namespace abbreviations should attached to Catalog
self.assertTrue(hasattr(cat[0], "extra"))
def _tostr(x):
if isinstance(x, bool):
if x:
return str("true")
else:
return str("false")
elif isinstance(x, AttribDict):
for key, value in x.items():
x[key].value = _tostr(value["value"])
return x
else:
return str(x)
#.........这里部分代码省略.........