def fromParams(self, id, time, lat, lon, depth, magnitude, mag_type=None): """Create a ScalarEvent (subclass of Event). Args: id (str): Desired ID for the event, usually ComCat ID. time (UTCDateTime): Origin time of the event. lat (float): Latitude of origin. lon (float): Longitude of origin. depth (float): Depth of origin in **kilometers**. magnitude (float): Magnitude of earthquake. mag_type (str): Magnitude type of earthqake. """ if isinstance(time, str): try: time = UTCDateTime(time) except BaseException as e: fmt = 'Can\'t make UTCDateTime from string "%s" - error "%s"' raise TypeError(fmt % (time, str(e))) origin = Origin( resource_id=id, time=time, longitude=lon, latitude=lat, depth=depth * 1000 ) self.origins = [origin] magnitude = Magnitude(resource_id=id, mag=magnitude, magnitude_type=mag_type) self.magnitudes = [magnitude] self.resource_id = id
def make_event(catalog_entry): """ Creates an ObsPy Event object from a line of STP event output. """ #print(catalog_entry) fields = catalog_entry.split() evid = fields[0] etype = fields[1] origin_time = UTCDateTime( datetime.strptime(fields[3], "%Y/%m/%d,%H:%M:%S.%f")) lat = float(fields[4]) lon = float(fields[5]) depth = float(fields[6]) mag = float(fields[7]) magtype = fields[8] res_id = ResourceIdentifier(id=evid) origin = Origin(latitude=lat, longitude=lon, depth=depth, time=origin_time) magnitude = Magnitude(mag=mag, magnitude_type=MAGTYPE_MAPPING[magtype]) event = Event(resource_id=res_id, event_type=ETYPE_MAPPING[etype], origins=[origin], magnitudes=[magnitude]) return event
def get_event_object(dict_or_id): """Get Obspy Event object using event ID or dictionary (see get_event_dict). Args: eventid (dict_or_id): Event ID that can be found in ComCat, or dict. Returns: Event: Obspy Event object. """ if isinstance(dict_or_id, str): event_dict = get_event_dict(dict_or_id) elif isinstance(dict_or_id, dict): event_dict = dict_or_id.copy() else: raise Exception('Unknown input parameter to get_event_info()') origin = Origin() origin.resource_id = event_dict['id'] origin.latitude = event_dict['lat'] origin.longitude = event_dict['lon'] origin.depth = event_dict['depth'] magnitude = Magnitude(mag=event_dict['magnitude']) event = Event() event.resource_id = event_dict['id'] event.origins = [origin] event.magnitudes = [magnitude] return event
def test_scalar(): eid = "usp000hat0" time = UTCDateTime("2010-04-06 22:15:01.580") lat = 2.383 lon = 97.048 depth = 31.0 mag = 7.8 mag_type = "Mwc" event = ScalarEvent() origin = Origin(resource_id=eid, time=time, latitude=lat, longitude=lon, depth=depth * 1000) magnitude = Magnitude(mag=mag, magnitude_type=mag_type) event.origins = [origin] event.magnitudes = [magnitude] assert event.id == eid assert event.time == time assert event.latitude == lat assert event.longitude == lon assert event.depth_km == depth assert event.magnitude == mag assert event.magnitude_type == mag_type subdir = os.path.join("data", "testdata", "usp000hat0_quakeml.xml") quakeml = pkg_resources.resource_filename("gmprocess", subdir) catalog = read_events(quakeml) tevent = catalog.events[0] event = ScalarEvent.fromEvent(tevent) assert event.id == "quakeml:us.anss.org/origin/pde20100406221501580_31" assert event.time == time assert event.latitude == lat assert event.longitude == lon assert event.depth_km == depth assert event.magnitude == mag assert event.magnitude_type == mag_type event = ScalarEvent() event.fromParams(eid, time, lat, lon, depth, mag, mag_type) assert isinstance(event, Event) assert event.origins[0].resource_id == eid assert event.origins[0].time == time assert event.origins[0].latitude == lat assert event.origins[0].longitude == lon assert event.origins[0].depth == depth * 1000 assert event.magnitudes[0].mag == mag assert event.magnitudes[0].magnitude_type == mag_type tevent = Event() origin = Origin(resource_id=eid, time=time, longitude=lon, latitude=lat, depth=depth * 1000) magnitude = Magnitude(resource_id=eid, mag=mag, magnitude_type=mag_type) tevent.origins = [origin] tevent.magnitudes = [magnitude] event2 = ScalarEvent.fromEvent(tevent) assert isinstance(event2, Event) assert event2.origins[0].resource_id == eid assert event2.origins[0].time == time assert event2.origins[0].latitude == lat assert event2.origins[0].longitude == lon assert event2.origins[0].depth == depth * 1000 assert event2.magnitudes[0].mag == mag assert event2.magnitudes[0].magnitude_type == mag_type
def test_scalar(): eid = 'usp000hat0' time = UTCDateTime('2010-04-06 22:15:01.580') lat = 2.383 lon = 97.048 depth = 31.0 mag = 7.8 event = ScalarEvent() origin = Origin(resource_id=eid, time=time, latitude=lat, longitude=lon, depth=depth * 1000) magnitude = Magnitude(mag=mag) event.origins = [origin] event.magnitudes = [magnitude] assert event.id == eid assert event.time == time assert event.latitude == lat assert event.longitude == lon assert event.depth_km == depth assert event.magnitude == mag subdir = os.path.join('data', 'testdata', 'usp000hat0_quakeml.xml') quakeml = pkg_resources.resource_filename('gmprocess', subdir) catalog = read_events(quakeml) tevent = catalog.events[0] event = ScalarEvent.fromEvent(tevent) assert event.id == 'quakeml:us.anss.org/origin/pde20100406221501580_31' assert event.time == time assert event.latitude == lat assert event.longitude == lon assert event.depth_km == depth assert event.magnitude == mag event = ScalarEvent() event.fromParams(eid, time, lat, lon, depth, mag) assert isinstance(event, Event) assert event.origins[0].resource_id == eid assert event.origins[0].time == time assert event.origins[0].latitude == lat assert event.origins[0].longitude == lon assert event.origins[0].depth == depth * 1000 assert event.magnitudes[0].mag == mag tevent = Event() origin = Origin(resource_id=eid, time=time, longitude=lon, latitude=lat, depth=depth * 1000) magnitude = Magnitude(resource_id=eid, mag=mag) tevent.origins = [origin] tevent.magnitudes = [magnitude] event2 = ScalarEvent.fromEvent(tevent) assert isinstance(event2, Event) assert event2.origins[0].resource_id == eid assert event2.origins[0].time == time assert event2.origins[0].latitude == lat assert event2.origins[0].longitude == lon assert event2.origins[0].depth == depth * 1000 assert event2.magnitudes[0].mag == mag