Exemplo n.º 1
0
 def dummy_cat(self):
     scnls1 = ["UK.STA1..HHZ", "UK.STA2..HHZ"]
     cat = ev.Catalog()
     eve1 = ev.Event()
     eve1.origins.append(ev.Origin(time=UTCDateTime()))
     eve1.amplitudes = make_amplitudes(scnls1)
     eve1.station_magnitudes = sm_generator(amplitudes=eve1.amplitudes)
     scnls2 = ["UK.STA3..HHZ", "UK.STA4..HHZ", "UK.STA5..HHZ"]
     eve2 = ev.Event()
     eve2.origins.append(ev.Origin(time=UTCDateTime()))
     eve2.station_magnitudes = sm_generator(scnls=scnls2)
     cat.events = [eve1, eve2]
     return cat
Exemplo n.º 2
0
 def dummy_cat(self):
     scnls1 = ["UK.STA1..HHZ", "UK.STA2..HHZ"]
     cat = ev.Catalog()
     eve1 = ev.Event()
     eve1.origins.append(ev.Origin(time=UTCDateTime()))
     eve1.picks = pick_generator(scnls1)
     eve1.amplitudes = amp_generator(picks=eve1.picks)
     scnls2 = ["UK.STA3..HHZ", "UK.STA4..HHZ", "UK.STA5..HHZ"]
     eve2 = ev.Event()
     eve2.origins.append(ev.Origin(time=UTCDateTime()))
     eve2.amplitudes = amp_generator(scnls=scnls2)
     cat.events = [eve1, eve2]
     return cat
Exemplo n.º 3
0
 def dummy_cat(self):
     cat = ev.Catalog()
     eve = ev.Event()
     eve.origins.append(ev.Origin(time=UTCDateTime()))
     eve.magnitudes = mag_generator(["ML", "Md", "MW"])
     cat.append(eve)
     return cat
Exemplo n.º 4
0
 def strange_picks_added_origins(self, inv):
     """ make sure "rejected" picks and oddball phase hints get skipped """
     # Pick w/ good phase hint but bad evaluation status
     pick1 = ev.Pick(
         time=obspy.UTCDateTime(),
         phase_hint="P",
         evaluation_status="rejected",
         waveform_id=ev.WaveformStreamID(seed_string="UU.TMU..HHZ"),
     )
     # Pick w/ bad phase hint but good evaluation status
     pick2 = ev.Pick(
         time=obspy.UTCDateTime(),
         phase_hint="junk",
         evaluation_status="reviewed",
         waveform_id=ev.WaveformStreamID(seed_string="UU.CTU..HHZ"),
     )
     # Pick w/ good phase hint and evaluation status
     pick3 = ev.Pick(
         time=obspy.UTCDateTime(),
         phase_hint="S",
         waveform_id=ev.WaveformStreamID(seed_string="UU.SRU..HHN"),
     )
     eve = ev.Event()
     eve.picks = [pick1, pick2, pick3]
     return make_origins(events=eve, inventory=inv,
                         phase_hints=["P", "S"]), pick3
Exemplo n.º 5
0
 def catalog_no_magnitude(self):
     """ get a events with no magnitudes (should just fill with NaN) """
     t1 = obspy.UTCDateTime("2099-04-01T00-01-00")
     ori = ev.Origin(time=t1, latitude=47.1, longitude=-100.22)
     event = ev.Event(origins=[ori])
     cat = ev.Catalog(events=[event])
     return events_to_df(cat)
Exemplo n.º 6
0
def _create_event(ser):
    """ create an event from a row from the event dataframe """
    event = oe.Event(
        resource_id=rid(ser.evid),
        creation=oe.CreationInfo(agency_id=ser.auth,
                                 creation_time=UTC(ser.lddate)),
        preferred_origin_id=str(ser.prefor),
    )
    return event
Exemplo n.º 7
0
 def test_put_new_events(self, bing_ebank):
     """ ensure a new event can be put into the bank """
     ori = ev.Origin(time=obspy.UTCDateTime("2016-01-01"))
     event = ev.Event(origins=[ori])
     event.origins[0].depth_errors = None  # see obspy 2173
     bing_ebank.put_events(event)
     event_out = bing_ebank.get_events(event_id=event.resource_id)
     assert len(event_out) == 1
     assert event_out[0] == event
Exemplo n.º 8
0
 def dummy_cat(self):
     scnls1 = ["UK.STA1..HHZ", "UK.STA2..HHZ"]
     cat = ev.Catalog()
     eve1 = ev.Event()
     eve1.origins.append(ev.Origin(time=UTCDateTime()))
     eve1.preferred_origin_id = eve1.origins[0].resource_id
     picks = pick_generator(scnls1)
     eve1.picks = picks
     eve1.preferred_origin().arrivals = make_arrivals(picks)
     scnls2 = ["UK.STA3..HHZ", "UK.STA4..HHZ", "UK.STA5..HHZ"]
     eve2 = ev.Event()
     eve2.origins.append(ev.Origin(time=UTCDateTime()))
     eve2.preferred_origin_id = eve2.origins[0].resource_id
     picks = pick_generator(scnls2)
     eve2.picks = picks
     eve2.preferred_origin().arrivals = make_arrivals(picks)
     cat.events = [eve1, eve2]
     return cat
Exemplo n.º 9
0
 def event_rejected_pick(self):
     """ Create an event with a rejected pick. """
     wid = ev.WaveformStreamID(seed_string="UU.TMU.01.ENZ")
     time = obspy.UTCDateTime("2019-01-01")
     pick1 = ev.Pick(
         time=time, waveform_id=wid, phase_hint="P", evaluation_status="rejected"
     )
     pick2 = ev.Pick(time=time, waveform_id=wid, phase_hint="P")
     return ev.Event(picks=[pick1, pick2])
Exemplo n.º 10
0
 def _saveCatalog(self, filename=None):
     '''
     Saves the catalog to filename
     '''
     if self.savefile is None and filename is None:
         return self._saveCatalogDlg()
     if filename is not None:
         savefile = filename
     else:
         savefile = self.savefile
     cat = event.Catalog()
     cat.events.append(event.Event(picks=self._picks))
Exemplo n.º 11
0
 def dummy_mag(self):
     scnls = ["UK.STA1..HHZ", "UK.STA2..HHZ"]
     eve = ev.Event()
     sms = sm_generator(scnls=scnls)
     smcs = []
     for sm in sms:
         smcs.append(
             ev.StationMagnitudeContribution(
                 station_magnitude_id=sm.resource_id))
     mag = ev.Magnitude(mag=1, station_magnitude_contributions=smcs)
     eve.magnitudes = [mag]
     eve.station_magnitudes = sms
     return eve
Exemplo n.º 12
0
    def picks_no_origin(self):
        """ create a events that has picks but no origin """
        t0 = UTCDateTime("2016-01-01T10:12:15.222")

        def wave_id(seed_str):
            return ev.WaveformStreamID(seed_string=seed_str)

        picks = [
            ev.Pick(time=t0 + 2, waveform_id=wave_id("UU.TMU..HHZ")),
            ev.Pick(time=t0 + 1.2, waveform_id=wave_id("UU.BOB.01.ELZ")),
            ev.Pick(time=t0 + 3.2, waveform_id=wave_id("UU.TEX..EHZ")),
        ]
        return picks_to_dataframe(ev.Event(picks=picks))
Exemplo n.º 13
0
 def _saveCatalog(self, filename=None):
     '''
     Saves the catalog to filename
     '''
     if self.savefile is None and filename is None:
         return self._saveCatalogDlg()
     if filename is not None:
         savefile = filename
     else:
         savefile = self.savefile
     cat = event.Catalog()
     cat.events.append(event.Event(picks=self._picks))
     cat.write(savefile, format='QUAKEML')
     print 'Picks saved as %s' % savefile
Exemplo n.º 14
0
def create_event(origintime,
                 cinfo,
                 originloc=None,
                 etype='earthquake',
                 resID=None,
                 authority_id=None):
    '''
    create_event - funtion to create an ObsPy Event

    :param origintime: the events origintime
    :type origintime: :class: `~obspy.core.utcdatetime.UTCDateTime` object
    :param cinfo: An ObsPy :class: `~obspy.core.event.CreationInfo` object
        holding information on the creation of the returned object
    :type cinfo: :class: `~obspy.core.event.CreationInfo` object
    :param originloc: tuple containing the location of the origin
        (LAT, LON, DEP) affiliated with the event which is created
    :type originloc: tuple, list
    :param etype: Event type str object. converted via ObsPy to a valid event
        type string.
    :type etype: str
    :param resID: Resource identifier of the created event
    :type resID: :class: `~obspy.core.event.ResourceIdentifier` object, str
    :param authority_id: name of the institution carrying out the processing
    :type authority_id: str
    :return: An ObsPy :class: `~obspy.core.event.Event` object
    '''

    if originloc is not None:
        o = create_origin(origintime, cinfo, originloc[0], originloc[1],
                          originloc[2])
    else:
        o = None
    if not resID:
        resID = create_resourceID(origintime, etype, authority_id)
    elif isinstance(resID, str):
        resID = create_resourceID(origintime, etype, authority_id, resID)
    elif not isinstance(resID, ope.ResourceIdentifier):
        raise TypeError("unsupported type(resID) for resource identifier "
                        "generation: %s" % type(resID))
    event = ope.Event(resource_id=resID)
    event.creation_info = cinfo
    event.event_type = etype
    if o:
        event.origins = [o]
    return event
Exemplo n.º 15
0
    def _create_event():
        event = ev.Event(
            event_type='mining explosion',
            event_descriptions=[_get_event_description()],
            picks=[_create_pick()],
            origins=[_create_origins()],
            station_magnitudes=[_get_station_mag()],
            magnitudes=[_create_magnitudes()],
            amplitudes=[_get_amplitudes()],
            focal_mechanisms=[_get_focal_mechanisms()],
        )
        # set preferred origin, focal mechanism, magnitude
        preferred_objects = dict(
            origin=event.origins[-1].resource_id,
            focal_mechanism=event.focal_mechanisms[-1].resource_id,
            magnitude=event.magnitudes[-1].resource_id,
        )
        for item, value in preferred_objects.items():
            setattr(event, 'preferred_' + item + '_id', value)

        event.scope_resource_ids()
        return event
Exemplo n.º 16
0
 def make_resouce_id():
     some_obj = event.Event()
     return ResourceIdentifier(referred_object=some_obj)
Exemplo n.º 17
0
 def catalog_empty(self):
     """ get a with one blank event """
     event = ev.Event()
     cat = ev.Catalog(events=[event])
     return events_to_df(cat)
Exemplo n.º 18
0
 def event_only_picks(self, picks):
     return ev.Event(picks=picks)
Exemplo n.º 19
0
 def no_origin(self):
     cat = ev.Catalog()
     cat.append(ev.Event())
     return cat
Exemplo n.º 20
0
def empty_catalog():
    """ run an empty events through the picks_to_df function """
    event = ev.Event()
    cat = obspy.Catalog(events=[event])
    return picks_to_dataframe(cat)
Exemplo n.º 21
0
 def event_only_picks(self, picks):
     """Return an event with only picks."""
     return ev.Event(picks=picks)
Exemplo n.º 22
0
def reassess_pilot_event(root_dir,
                         db_dir,
                         event_id,
                         out_dir=None,
                         fn_param=None,
                         verbosity=0):
    from obspy import read

    from pylot.core.io.inputs import PylotParameter
    from pylot.core.pick.utils import earllatepicker

    if fn_param is None:
        fn_param = defaults.AUTOMATIC_DEFAULTS

    default = PylotParameter(fn_param, verbosity)

    search_base = os.path.join(root_dir, db_dir, event_id)
    phases_file = glob.glob(os.path.join(search_base, 'PHASES.mat'))
    if not phases_file:
        return
    if verbosity > 1:
        print('Opening PILOT phases file: {fn}'.format(fn=phases_file[0]))
    picks_dict = picksdict_from_pilot(phases_file[0])
    if verbosity > 0:
        print('Dictionary read from PHASES.mat:\n{0}'.format(picks_dict))
    datacheck = list()
    info = None
    for station in picks_dict.keys():
        fn_pattern = os.path.join(search_base, '{0}*'.format(station))
        try:
            st = read(fn_pattern)
        except TypeError as e:
            if 'Unknown format for file' in e.message:
                try:
                    st = read(fn_pattern, format='GSE2')
                except ValueError as e:
                    if e.message == 'second must be in 0..59':
                        info = 'A known Error was raised. Please find the list of corrupted files and double-check these files.'
                        datacheck.append(fn_pattern + ' (time info)\n')
                        continue
                    else:
                        raise ValueError(e.message)
                except Exception as e:
                    if 'No file matching file pattern:' in e.message:
                        if verbosity > 0:
                            warnings.warn(
                                'no waveform data found for station {station}'.
                                format(station=station), RuntimeWarning)
                        datacheck.append(fn_pattern + ' (no data)\n')
                        continue
                    else:
                        raise e
            else:
                raise e
        for phase in picks_dict[station].keys():
            try:
                mpp = picks_dict[station][phase]['mpp']
            except KeyError as e:
                print(e.message, station)
                continue
            sel_st = select_for_phase(st, phase)
            if not sel_st:
                msg = 'no waveform data found for station {station}'.format(
                    station=station)
                warnings.warn(msg, RuntimeWarning)
                continue
            stime, etime = full_range(sel_st)
            rel_pick = mpp - stime
            epp, lpp, spe = earllatepicker(
                sel_st,
                default.get('nfac{0}'.format(phase)),
                default.get('tsnrz' if phase == 'P' else 'tsnrh'),
                Pick1=rel_pick,
                iplot=0,
                verbosity=0)
            if epp is None or lpp is None:
                continue
            epp = stime + epp
            lpp = stime + lpp
            min_diff = 3 * st[0].stats.delta
            if lpp - mpp < min_diff:
                lpp = mpp + min_diff
            if mpp - epp < min_diff:
                epp = mpp - min_diff
            picks_dict[station][phase] = dict(epp=epp,
                                              mpp=mpp,
                                              lpp=lpp,
                                              spe=spe)
    if datacheck:
        if info:
            if verbosity > 0:
                print(info + ': {0}'.format(search_base))
        fncheck = open(os.path.join(search_base, 'datacheck_list'), 'w')
        fncheck.writelines(datacheck)
        fncheck.close()
        del datacheck
    # create Event object for export
    evt = ope.Event(resource_id=event_id)
    evt.picks = picks_from_picksdict(picks_dict)
    # write phase information to file
    if not out_dir:
        fnout_prefix = os.path.join(root_dir, db_dir, event_id,
                                    'PyLoT_{0}.'.format(event_id))
    else:
        out_dir = os.path.join(out_dir, db_dir)
        if not os.path.isdir(out_dir):
            os.makedirs(out_dir)
        fnout_prefix = os.path.join(out_dir, 'PyLoT_{0}.'.format(event_id))
    evt.write(fnout_prefix + 'xml', format='QUAKEML')
Exemplo n.º 23
0
 def no_origin(self):
     """Return a catalog with no origin."""
     cat = ev.Catalog()
     cat.append(ev.Event())
     return cat
Exemplo n.º 24
0
 def bingham_cat_only_picks(self, bingham_dataset):
     """ return bingham_test catalog with everything but picks removed """
     events = []
     for eve in bingham_dataset.event_client.get_events().copy():
         events.append(ev.Event(picks=eve.picks))
     return obspy.Catalog(events=events)
Exemplo n.º 25
0
 def test_empty_event_raises(self):
     """ensure an empty event will raise"""
     event = ev.Event()
     with pytest.raises(ValueError):
         get_reference_time(event)
Exemplo n.º 26
0
 def cat_w_two_events(self, empty_cat):
     """Return a catalog with two empty events"""
     empty_cat.append(ev.Event())
     empty_cat.append(ev.Event())
     return empty_cat