本文整理汇总了Python中obspy.core.event.Event类的典型用法代码示例。如果您正苦于以下问题:Python Event类的具体用法?Python Event怎么用?Python Event使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Event类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_clear_method_resets_objects
def test_clear_method_resets_objects(self):
"""
Tests that the clear() method properly resets all objects. Test for
#449.
"""
# Test with basic event object.
e = Event(force_resource_id=False)
e.comments.append(Comment(text="test"))
e.event_type = "explosion"
self.assertEqual(len(e.comments), 1)
self.assertEqual(e.event_type, "explosion")
e.clear()
self.assertEqual(e, Event(force_resource_id=False))
self.assertEqual(len(e.comments), 0)
self.assertEqual(e.event_type, None)
# Test with pick object. Does not really fit in the event test case but
# it tests the same thing...
p = Pick()
p.comments.append(Comment(text="test"))
p.phase_hint = "p"
self.assertEqual(len(p.comments), 1)
self.assertEqual(p.phase_hint, "p")
# Add some more random attributes. These should disappear upon
# cleaning.
p.test_1 = "a"
p.test_2 = "b"
self.assertEqual(p.test_1, "a")
self.assertEqual(p.test_2, "b")
p.clear()
self.assertEqual(len(p.comments), 0)
self.assertEqual(p.phase_hint, None)
self.assertFalse(hasattr(p, "test_1"))
self.assertFalse(hasattr(p, "test_2"))
示例2: _parse_record_hy
def _parse_record_hy(self, line):
"""
Parses the 'hypocenter' record HY
"""
date = line[2:10]
time = line[11:20]
# unused: location_quality = line[20]
latitude = self._float(line[21:27])
lat_type = line[27]
longitude = self._float(line[29:36])
lon_type = line[36]
depth = self._float(line[38:43])
# unused: depth_quality = line[43]
standard_dev = self._float(line[44:48])
station_number = self._int(line[48:51])
# unused: version_flag = line[51]
fe_region_number = line[52:55]
fe_region_name = self._decode_fe_region_number(fe_region_number)
source_code = line[55:60].strip()
event = Event()
# FIXME: a smarter way to define evid?
evid = date + time
res_id = '/'.join((res_id_prefix, 'event', evid))
event.resource_id = ResourceIdentifier(id=res_id)
description = EventDescription(
type='region name',
text=fe_region_name)
event.event_descriptions.append(description)
description = EventDescription(
type='Flinn-Engdahl region',
text=fe_region_number)
event.event_descriptions.append(description)
origin = Origin()
res_id = '/'.join((res_id_prefix, 'origin', evid))
origin.resource_id = ResourceIdentifier(id=res_id)
origin.creation_info = CreationInfo()
if source_code:
origin.creation_info.agency_id = source_code
else:
origin.creation_info.agency_id = 'USGS-NEIC'
res_id = '/'.join((res_id_prefix, 'earthmodel/ak135'))
origin.earth_model_id = ResourceIdentifier(id=res_id)
origin.time = UTCDateTime(date + time)
origin.latitude = latitude * self._coordinate_sign(lat_type)
origin.longitude = longitude * self._coordinate_sign(lon_type)
origin.depth = depth * 1000
origin.depth_type = 'from location'
origin.quality = OriginQuality()
origin.quality.associated_station_count = station_number
origin.quality.standard_error = standard_dev
# associated_phase_count can be incremented in records 'P ' and 'S '
origin.quality.associated_phase_count = 0
# depth_phase_count can be incremented in record 'S '
origin.quality.depth_phase_count = 0
origin.origin_type = 'hypocenter'
origin.region = fe_region_name
event.origins.append(origin)
return event
示例3: test_449
def test_449(self):
"""
Very basic test for #449
"""
e = Event()
e.comments.append("test")
e.clear()
self.assertTrue(e == Event())
示例4: test_str_empty_origin
def test_str_empty_origin(self):
"""
Ensure an event with an empty origin returns a str without raising a
TypeError (#2119).
"""
event = Event(origins=[Origin()])
out = event.short_str()
self.assertIsInstance(out, str)
self.assertEqual(out, 'None | None, None')
示例5: _deserialize
def _deserialize(self, zmap_str):
catalog = Catalog()
for row in zmap_str.split('\n'):
if len(row) == 0:
continue
origin = Origin()
event = Event(origins=[origin])
event.preferred_origin_id = origin.resource_id.id
# Begin value extraction
columns = row.split('\t', 13)[:13] # ignore extra columns
values = dict(zip(_STD_ZMAP_COLUMNS + _EXT_ZMAP_COLUMNS, columns))
# Extract origin
origin.longitude = self._str2num(values.get('lon'))
origin.latitude = self._str2num(values.get('lat'))
depth = self._str2num(values.get('depth'))
if depth is not None:
origin.depth = depth * 1000.0
z_err = self._str2num(values.get('z_err'))
if z_err is not None:
origin.depth_errors.uncertainty = z_err * 1000.0
h_err = self._str2num(values.get('h_err'))
if h_err is not None:
ou = OriginUncertainty()
ou.horizontal_uncertainty = h_err
ou.preferred_description = 'horizontal uncertainty'
origin.origin_uncertainty = ou
year = self._str2num(values.get('year'))
if year is not None:
t_fields = ['year', 'month', 'day', 'hour', 'minute', 'second']
comps = [self._str2num(values.get(f)) for f in t_fields]
if year % 1 != 0:
origin.time = self._decyear2utc(year)
elif any(v > 0 for v in comps[1:]):
# no seconds involved
if len(comps) < 6:
utc_args = [int(v) for v in comps if v is not None]
# we also have to handle seconds
else:
utc_args = [int(v) if v is not None else 0
for v in comps[:-1]]
# just leave float seconds as is
utc_args.append(comps[-1])
origin.time = UTCDateTime(*utc_args)
mag = self._str2num(values.get('mag'))
# Extract magnitude
if mag is not None:
magnitude = Magnitude(mag=mag)
m_err = self._str2num(values.get('m_err'))
magnitude.mag_errors.uncertainty = m_err
event.magnitudes.append(magnitude)
event.preferred_magnitude_id = magnitude.resource_id.id
event.scope_resource_ids()
catalog.append(event)
return catalog
示例6: test_issue_2173
def test_issue_2173(self):
"""
Ensure events with empty origins are equal after round-trip to disk.
See #2173.
"""
# create event and save to disk
origin = Origin(time=UTCDateTime('2016-01-01'))
event1 = Event(origins=[origin])
bio = io.BytesIO()
event1.write(bio, 'quakeml')
# read from disk
event2 = read_events(bio)[0]
# saved and loaded event should be equal
self.assertEqual(event1, event2)
示例7: build
def build(self, evid=None, orid=None, delete=False, phase_data=False, focal_data=False, mt=None):
"""
Build up an Event object
Inputs
------
evid : int of EVID
orid : int of ORID
delete : bool of whether to mark event deleted (False)
phase_data : bool of whether to include phase arrivals for event (False)
focal_data : bool of whether to look for focal mechanisms (False)
mt : file/contents of NSL moment tensor (Ichinose)
Returns : obspy.core.event.Event
"""
#--- Build an Event based on params --------------------------------------
if evid is None and orid:
try:
evid = self._evid(orid)
except:
pass
# 1. Build a stub Event to send a delete
if delete:
self.event = Event(event_type="not existing")
self.event.creation_info = CreationInfo(version=evid, creation_time=UTCDateTime())
self.event.resource_id = self._rid(self.event)
elif mt:
# 2. Make a custom event (mt is a special-formatted text file)
#_RIDFactory = type('RIDFactory', (CustomRIDFunction,), {'authority': self.auth_id})
self.event = mt2event(mt, rid_factory=CustomRIDFunction(self.auth_id))
# 3. Use EventBuilder to get Event from the db
else:
self._build(orid=orid, phases=phase_data, focals=focal_data, event_type="not reported")
# if no EVID reported, try to get it from the db (version attribute)
if not evid:
evid = int(self.event.creation_info.version)
# Add a nearest event string, try to set event type with custom etype additions
prefor = self.event.preferred_origin()
if prefor is not None:
event_type = self.origin_event_type(prefor, emap=self.emap)
if event_type is None:
event_type = "earthquake"
self.event.event_type = event_type
ed = self.get_nearest_event_description(prefor.latitude, prefor.longitude)
self.event.event_descriptions = [ed]
# get rid of preferred if sending focalmech, so it doesn't clobber a
# better origin (This is a hack to deal with USGS splitting QuakeML
# into different products, In theory, one should be able to have a
# QuakeML file with everything, but alas)
if focal_data:
self.event.preferred_origin_id = None
self.event.preferred_magnitude_id = None
# Generate NSL namespace attributes
extra_attributes = self.quakeml_anss_attrib(evid)
self.event.extra = self.extra_anss(**extra_attributes)
示例8: test_preferred_tags
def test_preferred_tags(self):
"""
Testing preferred magnitude, origin and focal mechanism tags
"""
# testing empty event
ev = Event()
self.assertEqual(ev.preferred_origin(), None)
self.assertEqual(ev.preferred_magnitude(), None)
self.assertEqual(ev.preferred_focal_mechanism(), None)
# testing existing event
filename = os.path.join(self.path, 'preferred.xml')
catalog = read_events(filename)
self.assertEqual(len(catalog), 1)
ev_str = "Event:\t2012-12-12T05:46:24.120000Z | +38.297, +142.373 " + \
"| 2.0 MW"
self.assertIn(ev_str, str(catalog.events[0]))
# testing ids
ev = catalog.events[0]
self.assertEqual('smi:orig2', ev.preferred_origin_id)
self.assertEqual('smi:mag2', ev.preferred_magnitude_id)
self.assertEqual('smi:fm2', ev.preferred_focal_mechanism_id)
# testing objects
self.assertEqual(ev.preferred_origin(), ev.origins[1])
self.assertEqual(ev.preferred_magnitude(), ev.magnitudes[1])
self.assertEqual(
ev.preferred_focal_mechanism(), ev.focal_mechanisms[1])
示例9: _deserialize
def _deserialize(self, zmap_str):
catalog = Catalog()
for row in zmap_str.split("\n"):
if len(row) == 0:
continue
origin = Origin()
event = Event(origins=[origin])
event.preferred_origin_id = origin.resource_id.id
# Begin value extraction
columns = row.split("\t", 13)[:13] # ignore extra columns
values = dict(zip(_STD_ZMAP_COLUMNS + _EXT_ZMAP_COLUMNS, columns))
# Extract origin
origin.longitude = self._str2num(values.get("lon"))
origin.latitude = self._str2num(values.get("lat"))
depth = self._str2num(values.get("depth"))
if depth is not None:
origin.depth = depth * 1000.0
z_err = self._str2num(values.get("z_err"))
if z_err is not None:
origin.depth_errors.uncertainty = z_err * 1000.0
h_err = self._str2num(values.get("h_err"))
if h_err is not None:
ou = OriginUncertainty()
ou.horizontal_uncertainty = h_err
ou.preferred_description = "horizontal uncertainty"
origin.origin_uncertainty = ou
year = self._str2num(values.get("year"))
if year is not None:
t_fields = ["year", "month", "day", "hour", "minute", "second"]
comps = [self._str2num(values.get(f)) for f in t_fields]
if year % 1 != 0:
origin.time = self._decyear2utc(year)
elif any(v > 0 for v in comps[1:]):
utc_args = [int(v) for v in comps if v is not None]
origin.time = UTCDateTime(*utc_args)
mag = self._str2num(values.get("mag"))
# Extract magnitude
if mag is not None:
magnitude = Magnitude(mag=mag)
m_err = self._str2num(values.get("m_err"))
magnitude.mag_errors.uncertainty = m_err
event.magnitudes.append(magnitude)
event.preferred_magnitude_id = magnitude.resource_id.id
catalog.append(event)
return catalog
示例10: _parse_event
def _parse_event(self, first_line):
"""
Parse an event.
:type first_line: str
:param first_line: First line of an event block, which contains
the event id.
:rtype: :class:`~obspy.core.event.event.Event`
:return: The parsed event or None.
"""
event_id = first_line[5:].strip()
# Skip event without id
if not event_id:
self._warn('Missing event id')
return None
event = Event()
origin, origin_res_id = self._parse_origin(event)
# Skip event without origin
if not origin:
return None
line = self._skip_empty_lines()
self._parse_region_name(line, event)
self._parse_arrivals(event, origin, origin_res_id)
# Origin ResourceIdentifier should be set at the end, when
# Arrivals are already set.
origin.resource_id = origin_res_id
event.origins.append(origin)
event.preferred_origin_id = origin.resource_id.id
# Must be done after the origin parsing
event.creation_info = self._get_creation_info()
public_id = "event/%s" % event_id
event.resource_id = self._get_res_id(public_id)
return event
示例11: event_to_quakeml
def event_to_quakeml(event, filename):
"""
Write one of those events to QuakeML.
"""
# Create all objects.
cat = Catalog()
ev = Event()
org = Origin()
mag = Magnitude()
fm = FocalMechanism()
mt = MomentTensor()
t = Tensor()
# Link them together.
cat.append(ev)
ev.origins.append(org)
ev.magnitudes.append(mag)
ev.focal_mechanisms.append(fm)
fm.moment_tensor = mt
mt.tensor = t
# Fill values
ev.resource_id = "smi:inversion/%s" % str(event["identifier"])
org.time = event["time"]
org.longitude = event["longitude"]
org.latitude = event["latitude"]
org.depth = event["depth_in_km"] * 1000
mag.mag = event["Mw"]
mag.magnitude_type = "Mw"
t.m_rr = event["Mrr"]
t.m_tt = event["Mpp"]
t.m_pp = event["Mtt"]
t.m_rt = event["Mrt"]
t.m_rp = event["Mrp"]
t.m_tp = event["Mtp"]
cat.write(filename, format="quakeml")
示例12: test_clear_method_resets_objects
def test_clear_method_resets_objects(self):
"""
Tests that the clear() method properly resets all objects. Test for
#449.
"""
# Test with basic event object.
e = Event(force_resource_id=False)
e.comments.append(Comment(text="test"))
e.event_type = "explosion"
self.assertEqual(len(e.comments), 1)
self.assertEqual(e.event_type, "explosion")
e.clear()
self.assertEqual(e, Event(force_resource_id=False))
self.assertEqual(len(e.comments), 0)
self.assertEqual(e.event_type, None)
# Test with pick object. Does not really fit in the event test case but
# it tests the same thing...
p = Pick()
p.comments.append(Comment(text="test"))
p.phase_hint = "p"
self.assertEqual(len(p.comments), 1)
self.assertEqual(p.phase_hint, "p")
# Add some more random attributes. These should disappear upon
# cleaning.
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
p.test_1 = "a"
p.test_2 = "b"
# two warnings should have been issued by setting non-default keys
self.assertEqual(len(w), 2)
self.assertEqual(p.test_1, "a")
self.assertEqual(p.test_2, "b")
p.clear()
self.assertEqual(len(p.comments), 0)
self.assertEqual(p.phase_hint, None)
self.assertFalse(hasattr(p, "test_1"))
self.assertFalse(hasattr(p, "test_2"))
示例13: build
def build(self, evid=None, orid=None, delete=False, phase_data=False, focal_data=False):
"""
Build up an Event object
Inputs
------
evid : int of EVID
orid : int of ORID
delete : bool of whether to mark event deleted (False)
phase_data : bool of whether to include phase arrivals for event (False)
focal_data : bool of whether to look for focal mechanisms (False)
"""
#--- Build an Event based on params --------------------------------------
if evid is None and orid:
try:
evid = self._evid(orid)
except:
pass
# 1. Build a stub Event to send a delete
if delete:
self.event = Event(event_type="not existing")
self.event.creation_info = CreationInfo(version=evid, creation_time=UTCDateTime())
self.event.resource_id = self._rid(self.event)
else:
self._build(orid=orid, phases=phase_data, focals=focal_data, event_type="not reported")
# if no EVID reported, try to get it from the db (version attribute)
if not evid:
evid = int(self.event.creation_info.version)
# Add a nearest event string, try to set event type with custom etype additions
prefor = self.event.preferred_origin()
if prefor is not None:
self.event.event_type = self.origin_event_type(prefor, emap=self.emap)
ed = self.get_nearest_event_description(prefor.latitude, prefor.longitude)
self.event.event_descriptions = [ed]
# Generate NSL namespace attributes
extra_attributes = self.quakeml_anss_attrib(evid)
self.event.extra = self.extra_anss(**extra_attributes)
示例14: _readheader
def _readheader(f):
"""
Internal header reader.
:type f: file
:param f: File open in read-mode.
:returns: :class:`~obspy.core.event.event.Event`
"""
f.seek(0)
# Base populate to allow for empty parts of file
new_event = Event()
topline = _get_headline(f=f)
if not topline:
raise NordicParsingError('No header found, or incorrect '
'formatting: corrupt s-file')
try:
sfile_seconds = int(topline[16:18])
if sfile_seconds == 60:
sfile_seconds = 0
add_seconds = 60
else:
add_seconds = 0
new_event.origins.append(Origin())
new_event.origins[0].time = UTCDateTime(int(topline[1:5]),
int(topline[6:8]),
int(topline[8:10]),
int(topline[11:13]),
int(topline[13:15]),
sfile_seconds,
int(topline[19:20]) *
100000)\
+ add_seconds
except:
NordicParsingError("Couldn't read a date from sfile")
# new_event.loc_mod_ind=topline[20]
new_event.event_descriptions.append(EventDescription())
new_event.event_descriptions[0].text = topline[21:23]
# new_event.ev_id=topline[22]
try:
new_event.origins[0].latitude = float(topline[23:30])
new_event.origins[0].longitude = float(topline[31:38])
new_event.origins[0].depth = float(topline[39:43]) * 1000
except ValueError:
# The origin 'requires' a lat & long
new_event.origins[0].latitude = None
new_event.origins[0].longitude = None
new_event.origins[0].depth = None
# new_event.depth_ind = topline[44]
# new_event.loc_ind = topline[45]
new_event.creation_info = CreationInfo(agency_id=topline[45:48].strip())
ksta = Comment(text='Number of stations=' + topline[49:51].strip())
new_event.origins[0].comments.append(ksta)
if _float_conv(topline[51:55]) is not None:
new_event.origins[0].time_errors['Time_Residual_RMS'] = \
_float_conv(topline[51:55])
# Read in magnitudes if they are there.
for index in [59, 67, 75]:
if not topline[index].isspace():
new_event.magnitudes.append(Magnitude())
new_event.magnitudes[-1].mag = _float_conv(
topline[index - 3:index])
new_event.magnitudes[-1].magnitude_type = \
_nortoevmag(topline[index])
new_event.magnitudes[-1].creation_info = \
CreationInfo(agency_id=topline[index + 1:index + 4].strip())
new_event.magnitudes[-1].origin_id = new_event.origins[0].\
resource_id
# Set the useful things like preferred magnitude and preferred origin
new_event.preferred_origin_id = new_event.origins[0].resource_id
try:
# Select moment first, then local, then
mag_filter = ['MW', 'Mw', 'ML', 'Ml', 'MB', 'Mb',
'MS', 'Ms', 'MC', 'Mc']
_magnitudes = [(m.magnitude_type, m.resource_id)
for m in new_event.magnitudes]
preferred_magnitude = sorted(_magnitudes,
key=lambda x: mag_filter.index(x[0]))[0]
new_event.preferred_magnitude_id = preferred_magnitude[1]
except (ValueError, IndexError):
# If there is a magnitude not specified in filter
try:
new_event.preferred_magnitude_id = new_event.magnitudes[0].\
resource_id
except IndexError:
pass
return new_event
示例15: __read_single_fnetmt_entry
def __read_single_fnetmt_entry(line, **kwargs):
"""
Reads a single F-net moment tensor solution to a
:class:`~obspy.core.event.Event` object.
:param line: String containing moment tensor information.
:type line: str.
"""
a = line.split()
try:
ot = UTCDateTime().strptime(a[0], '%Y/%m/%d,%H:%M:%S.%f')
except ValueError:
ot = UTCDateTime().strptime(a[0], '%Y/%m/%d,%H:%M:%S')
lat, lon, depjma, magjma = map(float, a[1:5])
depjma *= 1000
region = a[5]
strike = tuple(map(int, a[6].split(';')))
dip = tuple(map(int, a[7].split(';')))
rake = tuple(map(int, a[8].split(';')))
mo = float(a[9])
depmt = float(a[10]) * 1000
magmt = float(a[11])
var_red = float(a[12])
mxx, mxy, mxz, myy, myz, mzz, unit = map(float, a[13:20])
event_name = util.gen_sc3_id(ot)
e = Event(event_type="earthquake")
e.resource_id = _get_resource_id(event_name, 'event')
# Standard JMA solution
o_jma = Origin(time=ot, latitude=lat, longitude=lon,
depth=depjma, depth_type="from location",
region=region)
o_jma.resource_id = _get_resource_id(event_name,
'origin', 'JMA')
m_jma = Magnitude(mag=magjma, magnitude_type='ML',
origin_id=o_jma.resource_id)
m_jma.resource_id = _get_resource_id(event_name,
'magnitude', 'JMA')
# MT solution
o_mt = Origin(time=ot, latitude=lat, longitude=lon,
depth=depmt, region=region,
depth_type="from moment tensor inversion")
o_mt.resource_id = _get_resource_id(event_name,
'origin', 'MT')
m_mt = Magnitude(mag=magmt, magnitude_type='Mw',
origin_id=o_mt.resource_id)
m_mt.resource_id = _get_resource_id(event_name,
'magnitude', 'MT')
foc_mec = FocalMechanism(triggering_origin_id=o_jma.resource_id)
foc_mec.resource_id = _get_resource_id(event_name,
"focal_mechanism")
nod1 = NodalPlane(strike=strike[0], dip=dip[0], rake=rake[0])
nod2 = NodalPlane(strike=strike[1], dip=dip[1], rake=rake[1])
nod = NodalPlanes(nodal_plane_1=nod1, nodal_plane_2=nod2)
foc_mec.nodal_planes = nod
tensor = Tensor(m_rr=mxx, m_tt=myy, m_pp=mzz, m_rt=mxy, m_rp=mxz, m_tp=myz)
cm = Comment(text="Basis system: North,East,Down (Jost and \
Herrmann 1989")
cm.resource_id = _get_resource_id(event_name, 'comment', 'mt')
mt = MomentTensor(derived_origin_id=o_mt.resource_id,
moment_magnitude_id=m_mt.resource_id,
scalar_moment=mo, comments=[cm],
tensor=tensor, variance_reduction=var_red)
mt.resource_id = _get_resource_id(event_name,
'moment_tensor')
foc_mec.moment_tensor = mt
e.origins = [o_jma, o_mt]
e.magnitudes = [m_jma, m_mt]
e.focal_mechanisms = [foc_mec]
e.preferred_magnitude_id = m_mt.resource_id.id
e.preferred_origin_id = o_mt.resource_id.id
e.preferred_focal_mechanism_id = foc_mec.resource_id.id
return e