def _arrivals_from_origin(origin: ev.Origin): extras = {} arrivals = origin.arrivals event_dict = dict(origin_id=str(origin.resource_id), origin_time=get_reference_time(origin)) extras.update({id(arr): event_dict for arr in arrivals}) return arrivals_to_df(origin.arrivals, extras=extras)
def __call__( self, time_arg: event_time_type, time_before: Optional[float] = None, time_after: Optional[float] = None, *args, **kwargs, ) -> obspy.Stream: """ Using a reference time, return a waveforms that encompasses that time. Parameters ---------- time_arg The argument that will indicate a start time. Can be a one length events, and event, a float, or a UTCDatetime object time_before The time before time_arg to include in waveforms time_after The time after time_arg to include in waveforms Returns ------- obspy.Stream """ tbefore = to_timedelta64(time_before, default=self.time_before) tafter = to_timedelta64(time_after, default=self.time_after) assert (tbefore is not None) and (tafter is not None) # get the reference time from the object time = to_datetime64(get_reference_time(time_arg)) t1 = time - tbefore t2 = time + tafter return self.get_waveforms(starttime=to_utc(t1), endtime=to_utc(t2), **kwargs)
def _get_event_info(cat, attr): """Extract event_id and time for an extractor""" extras = {} for event in cat: iterable = event.__dict__[attr] if not len(iterable): continue event_dict = dict(event_id=str(event.resource_id), event_time=get_reference_time(event)) extras.update({id(item): event_dict for item in iterable}) return extras
def _arrivals_from_event(event: ev.Event): """return a dataframe of arrivals from an event""" cat = [event] if isinstance(event, ev.Event) else event origins = [e.preferred_origin() for e in cat if e.preferred_origin()] arr_list = [] for o in origins: extras = {} arrivals = o.arrivals event_dict = dict(origin_id=str(o.resource_id), origin_time=get_reference_time(o)) extras.update({id(arr): event_dict for arr in arrivals}) arrivals = arrivals_to_df(o.arrivals, extras=extras) arr_list.append(arrivals) if not len(arr_list): return pd.DataFrame(columns=ARRIVAL_COLUMNS) else: return pd.concat(arr_list).reset_index(drop=True)