[add] handling missing traces
either a missing vertical or missing both vertical traces in the wfstream will fail picking and return None. This is the same behaviour as before refactoring.
This commit is contained in:
parent
27f5a0d50c
commit
318ca25ef8
@ -264,25 +264,38 @@ class AutopickStation(object):
|
|||||||
self.metadata = metadata
|
self.metadata = metadata
|
||||||
self.origin = origin
|
self.origin = origin
|
||||||
|
|
||||||
|
# initialize picking results
|
||||||
|
self.p_results = PickingResults()
|
||||||
|
self.s_results = PickingResults()
|
||||||
|
|
||||||
# extract additional information
|
# extract additional information
|
||||||
pickparams = self.extract_pickparams(pickparam)
|
pickparams = self.extract_pickparams(pickparam)
|
||||||
self.p_params, self.s_params, self.first_motion_params, self.signal_length_params = pickparams
|
self.p_params, self.s_params, self.first_motion_params, self.signal_length_params = pickparams
|
||||||
self.results = PickingResults()
|
self.results = PickingResults()
|
||||||
self.channelorder = {'Z': 3, 'N': 1, 'E': 2} # TODO get this from the pylot preferences
|
# TODO get channelorder from the pylot preferences
|
||||||
|
self.channelorder = {'Z': 3, 'N': 1, 'E': 2}
|
||||||
self.station_name = wfstream[0].stats.station
|
self.station_name = wfstream[0].stats.station
|
||||||
self.network_name = wfstream[0].stats.network
|
self.network_name = wfstream[0].stats.network
|
||||||
self.station_id = '{}.{}'.format(self.network_name, self.station_name)
|
self.station_id = '{}.{}'.format(self.network_name, self.station_name)
|
||||||
|
|
||||||
# save streams and traces
|
# save streams and traces
|
||||||
# TODO: error handling of missing traces
|
|
||||||
self.zstream, self.nstream, self.estream = self.get_components_from_waveformstream()
|
self.zstream, self.nstream, self.estream = self.get_components_from_waveformstream()
|
||||||
|
if len(self.zstream) == 0:
|
||||||
|
msg = 'No Z-component found for station {}. STOP'.format(self.wfstream[0].stats.station)
|
||||||
|
raise MissingTraceException(msg)
|
||||||
|
if len(self.nstream) == len(self.estream) == 0:
|
||||||
|
#TODO correct handling of missing both horizontal traces
|
||||||
|
msg = 'No horizontal traces found for station {}. STOP'.format(self.wfstream[0].stats.station)
|
||||||
|
raise MissingTraceException(msg)
|
||||||
self.ztrace = self.zstream[0]
|
self.ztrace = self.zstream[0]
|
||||||
try:
|
try:
|
||||||
self.ntrace = self.nstream[0]
|
self.ntrace = self.nstream[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
|
# if N trace is misisng, copy E trace
|
||||||
self.nstream = self.estream
|
self.nstream = self.estream
|
||||||
self.ntrace = self.nstream[0]
|
self.ntrace = self.nstream[0]
|
||||||
try:
|
try:
|
||||||
|
# if E trace is missing, copy N trace
|
||||||
self.etrace = self.estream[0]
|
self.etrace = self.estream[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
self.estream = self.nstream
|
self.estream = self.nstream
|
||||||
@ -295,10 +308,6 @@ class AutopickStation(object):
|
|||||||
self.taper_max_percentage = 0.05
|
self.taper_max_percentage = 0.05
|
||||||
self.taper_type = 'hann'
|
self.taper_type = 'hann'
|
||||||
|
|
||||||
# initialize picking results
|
|
||||||
self.p_results = PickingResults()
|
|
||||||
self.s_results = PickingResults()
|
|
||||||
|
|
||||||
def vprint(self, s):
|
def vprint(self, s):
|
||||||
"""Only print statement if verbose picking is set to true."""
|
"""Only print statement if verbose picking is set to true."""
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
@ -1039,8 +1048,13 @@ def get_fig_from_figdict(figdict, figkey):
|
|||||||
|
|
||||||
|
|
||||||
def autopickstation(wfstream, pickparam, verbose=False, iplot=0, fig_dict=None, metadata=None, origin=None):
|
def autopickstation(wfstream, pickparam, verbose=False, iplot=0, fig_dict=None, metadata=None, origin=None):
|
||||||
|
try:
|
||||||
station = AutopickStation(wfstream, pickparam, verbose, iplot, fig_dict, metadata, origin)
|
station = AutopickStation(wfstream, pickparam, verbose, iplot, fig_dict, metadata, origin)
|
||||||
return station.autopickstation()
|
return station.autopickstation()
|
||||||
|
except MissingTraceException as e:
|
||||||
|
# Either vertical or both horizontal traces are missing, autopickstation() will return default results
|
||||||
|
print(e)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def nautopickstation(wfstream, pickparam, verbose=False,
|
def nautopickstation(wfstream, pickparam, verbose=False,
|
||||||
|
Loading…
Reference in New Issue
Block a user