Replace all usages of s_params with corresponding pickparams

This commit is contained in:
Darius Arnold 2019-04-09 18:41:41 +02:00
parent 076c498fab
commit dce00caf25

View File

@ -618,8 +618,8 @@ class AutopickStation(object):
else: else:
# dummy values (start of seismic trace) in order to derive # dummy values (start of seismic trace) in order to derive
# theoretical onset times for iteratve picking # theoretical onset times for iteratve picking
self.s_results.lpp = hdat.stats.starttime + self.s_params.timeerrorsS[3] self.s_results.lpp = hdat.stats.starttime + self.pickparams["timeerrorsS"][3]
self.s_results.epp = hdat.stats.starttime - self.s_params.timeerrorsS[3] self.s_results.epp = hdat.stats.starttime - self.pickparams["timeerrorsS"][3]
self.s_results.mpp = hdat.stats.starttime self.s_results.mpp = hdat.stats.starttime
self.s_results.channel = self.etrace.stats.channel self.s_results.channel = self.etrace.stats.channel
@ -782,8 +782,8 @@ class AutopickStation(object):
minsiglength = self.signal_length_params.minsiglength / 2 minsiglength = self.signal_length_params.minsiglength / 2
else: else:
# filter, taper other traces as well since signal length is compared on all traces # filter, taper other traces as well since signal length is compared on all traces
trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.pickparams["bph1"][0], freqmax=self.pickparams["bph1"][1])
trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.pickparams["bph1"][0], freqmax=self.pickparams["bph1"][1])
zne += trH1_filt zne += trH1_filt
zne += trH2_filt zne += trH2_filt
minsiglength = self.signal_length_params.minsiglength minsiglength = self.signal_length_params.minsiglength
@ -974,19 +974,21 @@ class AutopickStation(object):
raise ValueError('Wrong type given, can only be P or S') raise ValueError('Wrong type given, can only be P or S')
def _calculate_autoregressive_cf_s_pick(self, cuttimesh): def _calculate_autoregressive_cf_s_pick(self, cuttimesh):
algoS = self.pickparams["algoS"]
filter_freq_min, filter_freq_max = self.pickparams["bph1"]
# prepare traces for picking by filtering, taper # prepare traces for picking by filtering, taper
if self.s_params.algoS == 'ARH': if algoS == 'ARH':
self.hdat = self.nstream.copy() + self.estream.copy() self.hdat = self.nstream.copy() + self.estream.copy()
trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH1_filt, _ = self.prepare_wfstream(self.estream, filter_freq_min, filter_freq_max)
trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH2_filt, _ = self.prepare_wfstream(self.nstream, filter_freq_min, filter_freq_max)
h_copy = self.hdat.copy() h_copy = self.hdat.copy()
h_copy[0].data = trH1_filt.data h_copy[0].data = trH1_filt.data
h_copy[1].data = trH2_filt.data h_copy[1].data = trH2_filt.data
if self.s_params.algoS == 'AR3': if algoS == 'AR3':
self.hdat = self.zstream.copy() + self.estream.copy() + self.nstream.copy() self.hdat = self.zstream.copy() + self.estream.copy() + self.nstream.copy()
trH1_filt, _ = self.prepare_wfstream(self.zstream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH1_filt, _ = self.prepare_wfstream(self.zstream, filter_freq_min, filter_freq_max)
trH2_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH2_filt, _ = self.prepare_wfstream(self.estream, filter_freq_min, filter_freq_max)
trH3_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph1[0], freqmax=self.s_params.bph1[1]) trH3_filt, _ = self.prepare_wfstream(self.nstream, filter_freq_min, filter_freq_max)
h_copy =self. hdat.copy() h_copy =self. hdat.copy()
h_copy[0].data = trH1_filt.data h_copy[0].data = trH1_filt.data
h_copy[1].data = trH2_filt.data h_copy[1].data = trH2_filt.data
@ -996,10 +998,10 @@ class AutopickStation(object):
self.h_copy = h_copy self.h_copy = h_copy
# calculate initial CF based on autoregression # calculate initial CF based on autoregression
if self.s_params.algoS == 'ARH': if algoS == 'ARH':
arhcf1 = ARHcf(h_copy, cuttimesh, self.s_params.tdet1h, self.s_params.tpred1h, self.pickparams) arhcf1 = ARHcf(h_copy, cuttimesh, self.pickparams["tdet1h"], self.pickparams["tpred1h"], self.pickparams)
elif self.s_params.algoS == 'AR3': elif algoS == 'AR3':
arhcf1 = AR3Ccf(h_copy, cuttimesh, self.s_params.tdet1h, self.s_params.tpred1h, self.pickparams) arhcf1 = AR3Ccf(h_copy, cuttimesh, self.pickparams["tdet1h"], self.pickparams["tpred1h"], self.pickparams)
return arhcf1 return arhcf1
def _calculate_aic_cf_s_pick(self, cuttimesh): def _calculate_aic_cf_s_pick(self, cuttimesh):
@ -1015,16 +1017,17 @@ class AutopickStation(object):
""" """
# go on with processing if AIC onset passes quality control # go on with processing if AIC onset passes quality control
slope = self.aicarhpick.getSlope() slope = self.aicarhpick.getSlope()
minSlope = self.pickparams["minAICSslope"]
minSNR = self.pickparams["minAICSSNR"]
if not slope: if not slope:
slope = 0 slope = 0
if slope < self.s_params.minAICSslope: if slope < minSlope:
error_msg = error_msg = 'AIC S onset slope to small: got {}, min {}'.format(slope, error_msg = error_msg = 'AIC S onset slope to small: got {}, min {}'.format(slope, minSlope)
self.s_params.minAICSslope)
raise PickingFailedException(error_msg) raise PickingFailedException(error_msg)
if self.aicarhpick.getSNR() < self.s_params.minAICSSNR: if self.aicarhpick.getSNR() < minSNR:
error_msg = 'AIC S onset SNR to small: got {}, min {}'.format(self.aicarhpick.getSNR(), self.s_params.minAICSSNR) error_msg = 'AIC S onset SNR to small: got {}, min {}'.format(self.aicarhpick.getSNR(), minSNR)
raise PickingFailedException(error_msg) raise PickingFailedException(error_msg)
if self.aicarhpick.getpick() is None: if self.aicarhpick.getpick() is None:
error_msg = 'Invalid AIC S pick!' error_msg = 'Invalid AIC S pick!'
@ -1037,16 +1040,18 @@ class AutopickStation(object):
self.vprint(msg) self.vprint(msg)
def _pick_s_calculate_ar_cf_2(self): def _pick_s_calculate_ar_cf_2(self):
algoS = self.pickparams["algoS"]
filter_freq_min, filter_freq_max = self.pickparams["bph2"]
cuttimesh2 = self._calculate_cuttimes('S', 2) cuttimesh2 = self._calculate_cuttimes('S', 2)
# refilter waveform with larger bandpass # refilter waveform with larger bandpass
trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) trH1_filt, _ = self.prepare_wfstream(self.estream, filter_freq_min, filter_freq_max)
trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) trH2_filt, _ = self.prepare_wfstream(self.nstream, filter_freq_min, filter_freq_max)
if self.s_params.algoS == 'ARH': if algoS == 'ARH':
h_copy = self.hdat.copy() h_copy = self.hdat.copy()
h_copy[0].data = trH1_filt.data h_copy[0].data = trH1_filt.data
h_copy[1].data = trH2_filt.data h_copy[1].data = trH2_filt.data
elif self.s_params.algoS == 'AR3': elif algoS == 'AR3':
trH3_filt, _ = self.prepare_wfstream(self.zstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) trH3_filt, _ = self.prepare_wfstream(self.zstream, filter_freq_min, filter_freq_max)
h_copy = self.hdat.copy() h_copy = self.hdat.copy()
h_copy[0].data = trH3_filt.data h_copy[0].data = trH3_filt.data
h_copy[1].data = trH1_filt.data h_copy[1].data = trH1_filt.data
@ -1057,10 +1062,10 @@ class AutopickStation(object):
self.nstream_bph2 = trH2_filt self.nstream_bph2 = trH2_filt
# calculate second cf # calculate second cf
if self.s_params.algoS == 'ARH': if algoS == 'ARH':
arhcf2 = ARHcf(h_copy, cuttimesh2, self.s_params.tdet2h, self.s_params.tpred2h, self.pickparams) arhcf2 = ARHcf(h_copy, cuttimesh2, self.pickparams["tdet2h"], self.pickparams["tpred2h"], self.pickparams)
elif self.s_params.algoS == 'AR3': elif algoS == 'AR3':
arhcf2 = AR3Ccf(h_copy, cuttimesh2, self.s_params.tdet2h, self.s_params.tpred2h, self.pickparams) arhcf2 = AR3Ccf(h_copy, cuttimesh2, self.pickparams["tdet2h"], self.pickparams["tpred2h"], self.pickparams)
# save cf for later plotting # save cf for later plotting
self.arhcf2 = arhcf2 self.arhcf2 = arhcf2
@ -1074,7 +1079,7 @@ class AutopickStation(object):
h_copy[0].data = self.estream_bph2.data h_copy[0].data = self.estream_bph2.data
if self.iplot: if self.iplot:
self.set_current_figure('el_S1pick') self.set_current_figure('el_S1pick')
epickS1, lpickS1, Serror1 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, epickS1, lpickS1, Serror1 = earllatepicker(h_copy, self.pickparams["nfacS"], self.pickparams["tsnrh"],
self.s_results.mpp, self.iplot, fig=self.current_figure, self.s_results.mpp, self.iplot, fig=self.current_figure,
linecolor=self.current_linecolor) linecolor=self.current_linecolor)
@ -1084,19 +1089,19 @@ class AutopickStation(object):
else: else:
# why is it set to empty here? DA # why is it set to empty here? DA
linecolor = '' linecolor = ''
epickS2, lpickS2, Serror2 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, epickS2, lpickS2, Serror2 = earllatepicker(h_copy, self.pickparams["nfacS"], self.pickparams["tsnrh"],
self.s_results.mpp, self.iplot, fig=self.current_figure, self.s_results.mpp, self.iplot, fig=self.current_figure,
linecolor=self.current_linecolor) linecolor=self.current_linecolor)
if epickS1 is not None and epickS2 is not None: if epickS1 is not None and epickS2 is not None:
if self.s_params.algoS == 'ARH': if self.pickparams["algoS"] == 'ARH':
# get earliest pick of both earliest possible picks # get earliest pick of both earliest possible picks
epick = [epickS1, epickS2] epick = [epickS1, epickS2]
lpick = [lpickS1, lpickS2] lpick = [lpickS1, lpickS2]
pickerr = [Serror1, Serror2] pickerr = [Serror1, Serror2]
ipick = np.argmin(epick) ipick = np.argmin(epick)
if self.s_params.algoS == 'AR3': if self.pickparams["algoS"] == 'AR3':
epickS3, lpickS3, Serror3 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, epickS3, lpickS3, Serror3 = earllatepicker(h_copy, self.pickparams["nfacS"], self.pickparams["tsnrh"],
self.s_results.mpp, self.iplot) self.s_results.mpp, self.iplot)
# get earliest of all three picks # get earliest of all three picks
epick = [epickS1, epickS2, epickS3] epick = [epickS1, epickS2, epickS3]
@ -1116,9 +1121,9 @@ class AutopickStation(object):
print(msg) print(msg)
# get SNR # get SNR
self.s_results.snr, self.s_results.snrdb, _ = getSNR(h_copy, self.s_params.tsnrh, self.s_results.mpp) self.s_results.snr, self.s_results.snrdb, _ = getSNR(h_copy, self.pickparams["tsnrh"], self.s_results.mpp)
self.s_results.weight = get_quality_class(self.s_results.spe, self.s_params.timeerrorsS) self.s_results.weight = get_quality_class(self.s_results.spe, self.pickparams["timeerrorsS"])
print('autopickstation: S-weight: {0}, SNR: {1}, ' print('autopickstation: S-weight: {0}, SNR: {1}, '
'SNR[dB]: {2}\n' 'SNR[dB]: {2}\n'
@ -1138,8 +1143,8 @@ class AutopickStation(object):
# get preliminary onset time from AIC cf # get preliminary onset time from AIC cf
self.set_current_figure('aicARHfig') self.set_current_figure('aicARHfig')
aicarhpick = AICPicker(haiccf, self.s_params.tsnrh, self.s_params.pickwinS, self.iplot, aicarhpick = AICPicker(haiccf, self.pickparams["tsnrh"], self.pickparams["pickwinS"], self.iplot,
Tsmooth=self.s_params.aictsmoothS, fig=self.current_figure, linecolor=self.current_linecolor) Tsmooth=self.pickparams["aictsmoothS"], fig=self.current_figure, linecolor=self.current_linecolor)
# save pick for later plotting # save pick for later plotting
self.aicarhpick = aicarhpick self.aicarhpick = aicarhpick
@ -1150,8 +1155,8 @@ class AutopickStation(object):
# get refined onset time from CF2 # get refined onset time from CF2
self.set_current_figure('refSpick') self.set_current_figure('refSpick')
refSpick = PragPicker(arhcf2, self.s_params.tsnrh, self.s_params.pickwinS, self.iplot, self.s_params.ausS, refSpick = PragPicker(arhcf2, self.pickparams["tsnrh"], self.pickparams["pickwinS"], self.iplot, self.pickparams["ausS"],
self.s_params.tsmoothS, aicarhpick.getpick(), self.current_figure, self.current_linecolor) self.pickparams["tsmoothS"], aicarhpick.getpick(), self.current_figure, self.current_linecolor)
# save refSpick for later plotitng # save refSpick for later plotitng
self.refSpick = refSpick self.refSpick = refSpick
self.s_results.mpp = refSpick.getpick() self.s_results.mpp = refSpick.getpick()