def mktemplates( network_code='GEONET', plot=True, publicIDs=['2016p008122', '2016p008353', '2016p008155', '2016p008194']): """Functional wrapper to make templates""" client = Client(network_code) # We want to download a few events from an earthquake sequence, these are # identified by publiID numbers, given as arguments catalog = Catalog() for publicID in publicIDs: try: catalog += client.get_events(eventid=publicID, includearrivals=True) except TypeError: # Cope with some FDSN services not implementing includearrivals catalog += client.get_events(eventid=publicID) # Lets plot the catalog to see what we have if plot: catalog.plot(projection='local', resolution='h') # We don't need all the picks, lets take the information from the # five most used stations - note that this is done to reduce computational # costs. catalog = filter_picks(catalog, top_n_picks=5) # We only want the P picks in this example, but you can use others or all # picks if you want. for event in catalog: for pick in event.picks: if pick.phase_hint == 'S': event.picks.remove(pick) # Now we can generate the templates templates = template_gen.template_gen(method='from_client', catalog=catalog, client_id=network_code, lowcut=2.0, highcut=9.0, samp_rate=20.0, filt_order=4, length=3.0, prepick=0.15, swin='all', process_len=3600, plot=plot) # We now have a series of templates! Using Obspy's Stream.write() method we # can save these to disk for later use. We will do that now for use in the # following tutorials. for i, template in enumerate(templates): template.write('tutorial_template_' + str(i) + '.ms', format='MSEED') # Note that this will warn you about data types. As we don't care # at the moment, whatever obspy chooses is fine. return
def mktemplates(network_code='GEONET', publicIDs=['2016p008122', '2016p008353', '2016p008155', '2016p008194'], plot=True): """Functional wrapper to make templates""" # We want to download some QuakeML files from the New Zealand GeoNet # network, GeoNet currently doesn't support FDSN event queries, so we # have to work around to download quakeml from their quakeml.geonet site. client = Client(network_code) # We want to download a few events from an earthquake sequence, these are # identified by publiID numbers, given as arguments catalog = Catalog() for publicID in publicIDs: if network_code == 'GEONET': data_stream = client._download( 'http://quakeml.geonet.org.nz/quakeml/1.2/' + publicID) data_stream.seek(0, 0) catalog += read_events(data_stream, format="quakeml") data_stream.close() else: catalog += client.get_events( eventid=publicID, includearrivals=True) # Lets plot the catalog to see what we have if plot: catalog.plot(projection='local', resolution='h') # We don't need all the picks, lets take the information from the # five most used stations - note that this is done to reduce computational # costs. catalog = filter_picks(catalog, top_n_picks=5) # We only want the P picks in this example, but you can use others or all # picks if you want. for event in catalog: for pick in event.picks: if pick.phase_hint == 'S': event.picks.remove(pick) # Now we can generate the templates templates = template_gen.template_gen( method='from_client', catalog=catalog, client_id=network_code, lowcut=2.0, highcut=9.0, samp_rate=20.0, filt_order=4, length=3.0, prepick=0.15, swin='all', process_len=3600, debug=0, plot=plot) # We now have a series of templates! Using Obspy's Stream.write() method we # can save these to disk for later use. We will do that now for use in the # following tutorials. for i, template in enumerate(templates): template.write('tutorial_template_' + str(i) + '.ms', format='MSEED') # Note that this will warn you about data types. As we don't care # at the moment, whatever obspy chooses is fine. return
if dist >= st_minradius and dist <= st_maxradius: cat_subset.append(cat[kk]) print(cat_subset) # ------------------------------------------------------------------------------- # Create station directory sta_dir = ev_info.network + '_' + ev_info.station odir = out_dir + sta_dir if not os.path.exists(odir): os.makedirs(odir) # save catalog subset for this station fname = odir + '_event_subset' cat_subset.write(fname,'cnv') fname = odir + '_event_subset.eps' cat_subset.plot(outfile = fname) # Event selection plot #plotme(clat,clon,ev_info.rlat,ev_info.rlon,cat,cat_subset,st_minradius,st_maxradius,sta_dir) # ------------------------------------------------------------------------------- # Loop over subset_events for kk in range(0,len(cat_subset)): ev_info.otime = cat_subset[kk].origins[0].time ev_info.elat = cat_subset[kk].origins[0].latitude ev_info.elon = cat_subset[kk].origins[0].longitude ev_info.edep = cat_subset[kk].origins[0].depth ev_info.emag = cat_subset[kk].magnitudes[0].mag ev_info.rtime = cat_subset[kk].origins[0].time ev_info.ev = cat_subset[kk] # get event object ev_info.reference_time_place() # get stations around a reference origin (rlat, rlon - each station in this case)
def mktemplates(network_code='GEONET', publicIDs=['2016p008122', '2016p008353', '2016p008155', '2016p008194']): """Functional wrapper to make templates""" from collections import Counter from eqcorrscan.core import template_gen # This import section copes with namespace changes between obspy versions import obspy if int(obspy.__version__.split('.')[0]) >= 1: from obspy.clients.fdsn import Client from obspy import read_events else: from obspy.fdsn import Client from obspy import readEvents as read_events from obspy.core.event import Catalog # We want to download some QuakeML files from the New Zealand GeoNet # network, GeoNet currently doesn't support FDSN event queries, so we # have to work around to download quakeml from their quakeml.geonet site. client = Client(network_code) # We want to download a few events from an earthquake sequence, these are # identified by publiID numbers, given as arguments catalog = Catalog() for publicID in publicIDs: if network_code == 'GEONET': data_stream = client._download('http://quakeml.geonet.org.nz/' + 'quakeml/1.2/' + publicID) data_stream.seek(0, 0) catalog += read_events(data_stream, format="quakeml") data_stream.close() else: catalog += client.get_events(eventid=publicID, includearrivals=True) # Lets plot the catalog to see what we have catalog.plot(projection='local', resolution='h') # We don't need all the picks, lets take the information from the # five most used stations all_picks = [] for event in catalog: all_picks += [(pick.waveform_id.station_code) for pick in event.picks] all_picks = Counter(all_picks).most_common(5) all_picks = [pick[0] for pick in all_picks] for event in catalog: if len(event.picks) == 0: raise IOError('No picks found') event.picks = [pick for pick in event.picks if pick.waveform_id.station_code in all_picks] # Now we can generate the templates templates = template_gen.from_client(catalog=catalog, client_id=network_code, lowcut=2.0, highcut=9.0, samp_rate=20.0, filt_order=4, length=3.0, prepick=0.15, swin='all', debug=1, plot=True) # We now have a series of templates! Using Obspys Stream.write() method we # can save these to disk for later use. We will do that now for use in the # following tutorials. for i, template in enumerate(templates): template.write('tutorial_template_' + str(i) + '.ms', format='MSEED') # Note that this will warn you about data types. As we don't care # at the moment, whatever obspy chooses is fine. return
def mktemplates(network_code='GEONET', publicIDs=['2016p008122', '2016p008353', '2016p008155', '2016p008194']): """Functional wrapper to make templates""" from collections import Counter from eqcorrscan.core import template_gen # This import section copes with namespace changes between obspy versions import obspy if int(obspy.__version__.split('.')[0]) >= 1: from obspy.clients.fdsn import Client from obspy import read_events else: from obspy.fdsn import Client from obspy import readEvents as read_events from obspy.core.event import Catalog # We want to download some QuakeML files from the New Zealand GeoNet # network, GeoNet currently doesn't support FDSN event queries, so we # have to work around to download quakeml from their quakeml.geonet site. client = Client(network_code) # We want to download a few events from an earthquake sequence, these are # identified by publiID numbers, given as arguments catalog = Catalog() for publicID in publicIDs: if network_code == 'GEONET': data_stream = client._download('http://quakeml.geonet.org.nz/' + 'quakeml/1.2/' + publicID) data_stream.seek(0, 0) catalog += read_events(data_stream, format="quakeml") data_stream.close() else: catalog += client.get_events(eventid=publicID, includearrivals=True) # Lets plot the catalog to see what we have catalog.plot(projection='local', resolution='h') # We don't need all the picks, lets take the information from the # five most used stations all_picks = [] for event in catalog: all_picks += [(pick.waveform_id.station_code, pick.waveform_id.channel_code) for pick in event.picks] all_picks = Counter(all_picks).most_common(5) all_picks = [pick[0] for pick in all_picks] for event in catalog: if len(event.picks) == 0: raise IOError('No picks found') event.picks = [pick for pick in event.picks if (pick.waveform_id.station_code, pick.waveform_id.channel_code) in all_picks] # Now we can generate the templates templates = template_gen.from_client(catalog=catalog, client_id=network_code, lowcut=2.0, highcut=9.0, samp_rate=20.0, filt_order=4, length=3.0, prepick=0.05, swin='all', debug=1, plot=True) # We now have a series of templates! Using Obspys Stream.write() method we # can save these to disk for later use. We will do that now for use in the # following tutorials. for i, template in enumerate(templates): template.write('tutorial_template_' + str(i) + '.ms', format='MSEED') # Note that this will warn you about data types. As we don't care # at the moment, whatever obspy chooses is fine. return