[minor] small code changes
This commit is contained in:
parent
b4316ae717
commit
97458b5b42
@ -215,7 +215,7 @@ class PickingResults(dict):
|
|||||||
self.Mo = None
|
self.Mo = None
|
||||||
|
|
||||||
# flags for plotting
|
# flags for plotting
|
||||||
self.aicPflag = 0
|
self.p_aic_plot_flag = 0
|
||||||
self.aicSflag = 0
|
self.aicSflag = 0
|
||||||
self.Pflag = 0
|
self.Pflag = 0
|
||||||
self.Sflag = 0
|
self.Sflag = 0
|
||||||
@ -459,7 +459,7 @@ class AutopickStation(object):
|
|||||||
|
|
||||||
def get_traces_from_streams(self):
|
def get_traces_from_streams(self):
|
||||||
"""
|
"""
|
||||||
Extract Trace from Stream. If a component has data, an empty trace will be returned
|
Extract Trace from Stream. If a component has no data, an empty trace will be returned
|
||||||
:return: Tuple of obspy.Trace instances in order ZNE
|
:return: Tuple of obspy.Trace instances in order ZNE
|
||||||
:rtype: (obspy.Trace)
|
:rtype: (obspy.Trace)
|
||||||
"""
|
"""
|
||||||
@ -673,7 +673,7 @@ class AutopickStation(object):
|
|||||||
if self.p_results.Pweight < 4:
|
if self.p_results.Pweight < 4:
|
||||||
# plot CF of initial onset (HOScf or ARZcf)
|
# plot CF of initial onset (HOScf or ARZcf)
|
||||||
ax1.plot(self.cf1.getTimeArray(), self.cf1.getCF()/max(self.cf1.getCF()), 'b', label='CF1')
|
ax1.plot(self.cf1.getTimeArray(), self.cf1.getCF()/max(self.cf1.getCF()), 'b', label='CF1')
|
||||||
if self.p_results.aicPflag == 1:
|
if self.p_results.p_aic_plot_flag == 1:
|
||||||
aicpick = self.p_results.aicpick
|
aicpick = self.p_results.aicpick
|
||||||
refPpick = self.p_results.refPpick
|
refPpick = self.p_results.refPpick
|
||||||
# plot CF of precise pick (HOScf or ARZcf)
|
# plot CF of precise pick (HOScf or ARZcf)
|
||||||
@ -778,7 +778,7 @@ class AutopickStation(object):
|
|||||||
pass
|
pass
|
||||||
plt.close(fig)
|
plt.close(fig)
|
||||||
|
|
||||||
def _pick_p_qc1(self, aicpick, z_copy, tr_filt):
|
def _pick_p_qality_control(self, aicpick, z_copy, tr_filt):
|
||||||
"""
|
"""
|
||||||
Quality control of first pick using minseglength and checkZ4S.
|
Quality control of first pick using minseglength and checkZ4S.
|
||||||
:param aicpick: Instance of AICPicker to run quality control on
|
:param aicpick: Instance of AICPicker to run quality control on
|
||||||
@ -824,7 +824,7 @@ class AutopickStation(object):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if self.nstream == self.estream:
|
if self.nstream == self.estream:
|
||||||
# todo: old implementation skipped this test if one component was misisng, why not use one component?
|
# todo: old implementation skipped this test if one component was missing, why not use one component?
|
||||||
msg = 'One or more horizontal components missing!\n Skipping control function checkZ4S.'
|
msg = 'One or more horizontal components missing!\n Skipping control function checkZ4S.'
|
||||||
self.vprint(msg)
|
self.vprint(msg)
|
||||||
return 1
|
return 1
|
||||||
@ -845,9 +845,6 @@ class AutopickStation(object):
|
|||||||
:raises:
|
:raises:
|
||||||
MissingTraceException: If vertical trace is missing.
|
MissingTraceException: If vertical trace is missing.
|
||||||
"""
|
"""
|
||||||
if not self.zstream or self.zstream is None:
|
|
||||||
raise MissingTraceException('No z-component found for station {}'.format(self.station_name))
|
|
||||||
|
|
||||||
msg = '##################################################\nautopickstation:' \
|
msg = '##################################################\nautopickstation:' \
|
||||||
' Working on P onset of station {station}\nFiltering vertical ' \
|
' Working on P onset of station {station}\nFiltering vertical ' \
|
||||||
'trace ...\n{data}'.format(station=self.station_name, data=str(self.zstream))
|
'trace ...\n{data}'.format(station=self.station_name, data=str(self.zstream))
|
||||||
@ -867,18 +864,16 @@ class AutopickStation(object):
|
|||||||
|
|
||||||
# calculate first CF
|
# calculate first CF
|
||||||
if self.p_params.algoP == 'HOS':
|
if self.p_params.algoP == 'HOS':
|
||||||
cf1 = HOScf(z_copy, cuttimes, self.p_params.tlta, self.p_params.hosorder)
|
self.cf1 = HOScf(z_copy, cuttimes, self.p_params.tlta, self.p_params.hosorder)
|
||||||
elif self.p_params.algoP == 'ARZ':
|
elif self.p_params.algoP == 'ARZ':
|
||||||
cf1 = ARZcf(z_copy, cuttimes, self.p_params.tpred1z, self.p_params.Parorder, self.p_params.tdet1z,
|
self.cf1 = ARZcf(z_copy, cuttimes, self.p_params.tpred1z, self.p_params.Parorder, self.p_params.tdet1z,
|
||||||
self.p_params.addnoise)
|
self.p_params.addnoise)
|
||||||
else:
|
else:
|
||||||
cf1 = None
|
self.cf1 = None
|
||||||
# save cf1 for plotting
|
assert isinstance(self.cf1, CharacteristicFunction), 'cf1 is not set correctly: maybe the algorithm name ({})' \
|
||||||
self.cf1 = cf1
|
' is corrupted'.format(self.p_params.algoP)
|
||||||
assert isinstance(cf1, CharacteristicFunction), 'cf1 is not set correctly: maybe the algorithm name ({}) is ' \
|
|
||||||
'corrupted'.format(self.p_params.algoP)
|
|
||||||
# calculate AIC cf from first cf (either HOS or ARZ)
|
# calculate AIC cf from first cf (either HOS or ARZ)
|
||||||
z_copy[0].data = cf1.getCF()
|
z_copy[0].data = self.cf1.getCF()
|
||||||
aiccf = AICcf(z_copy, cuttimes)
|
aiccf = AICcf(z_copy, cuttimes)
|
||||||
# get preliminary onset time from AIC-CF
|
# get preliminary onset time from AIC-CF
|
||||||
fig, linecolor = get_fig_from_figdict(self.fig_dict, 'aicFig')
|
fig, linecolor = get_fig_from_figdict(self.fig_dict, 'aicFig')
|
||||||
@ -894,7 +889,7 @@ class AutopickStation(object):
|
|||||||
ax.vlines(self.p_params.pstop, ax.get_ylim()[0], ax.get_ylim()[1], color='c', linestyles='dashed', label='P stop')
|
ax.vlines(self.p_params.pstop, ax.get_ylim()[0], ax.get_ylim()[1], color='c', linestyles='dashed', label='P stop')
|
||||||
ax.legend(loc=1)
|
ax.legend(loc=1)
|
||||||
|
|
||||||
Pflag = self._pick_p_qc1(aicpick, z_copy, tr_filt)
|
Pflag = self._pick_p_qality_control(aicpick, z_copy, tr_filt)
|
||||||
# go on with processing if AIC onset passes quality control
|
# go on with processing if AIC onset passes quality control
|
||||||
slope = aicpick.getSlope()
|
slope = aicpick.getSlope()
|
||||||
if not slope: slope = 0
|
if not slope: slope = 0
|
||||||
@ -908,7 +903,7 @@ class AutopickStation(object):
|
|||||||
error_msg = 'AIC P onset SNR to small: got {}, min {}'.format(aicpick.getSNR(), self.p_params.minAICPSNR)
|
error_msg = 'AIC P onset SNR to small: got {}, min {}'.format(aicpick.getSNR(), self.p_params.minAICPSNR)
|
||||||
raise PickingFailedException(error_msg)
|
raise PickingFailedException(error_msg)
|
||||||
|
|
||||||
self.p_results.aicPflag = 1
|
self.p_results.p_aic_plot_flag = 1
|
||||||
msg = 'AIC P-pick passes quality control: Slope: {0} counts/s, SNR: {1}\nGo on with refined picking ...\n' \
|
msg = 'AIC P-pick passes quality control: Slope: {0} counts/s, SNR: {1}\nGo on with refined picking ...\n' \
|
||||||
'autopickstation: re-filtering vertical trace...'.format(aicpick.getSlope(), aicpick.getSNR())
|
'autopickstation: re-filtering vertical trace...'.format(aicpick.getSlope(), aicpick.getSNR())
|
||||||
self.vprint(msg)
|
self.vprint(msg)
|
||||||
@ -919,18 +914,16 @@ class AutopickStation(object):
|
|||||||
# determine new times around initial onset
|
# determine new times around initial onset
|
||||||
cuttimes2 = self._calculate_cuttimes('P', 2)
|
cuttimes2 = self._calculate_cuttimes('P', 2)
|
||||||
if self.p_params.algoP == 'HOS':
|
if self.p_params.algoP == 'HOS':
|
||||||
cf2 = HOScf(z_copy, cuttimes2, self.p_params.tlta, self.p_params.hosorder)
|
self.cf2 = HOScf(z_copy, cuttimes2, self.p_params.tlta, self.p_params.hosorder)
|
||||||
elif self.p_params.algoP == 'ARZ':
|
elif self.p_params.algoP == 'ARZ':
|
||||||
cf2 = ARZcf(z_copy, cuttimes2, self.p_params.tpred2z, self.p_params.Parorder, self.p_params.tdet2z, self.p_params.addnoise)
|
self.cf2 = ARZcf(z_copy, cuttimes2, self.p_params.tpred2z, self.p_params.Parorder, self.p_params.tdet2z, self.p_params.addnoise)
|
||||||
else:
|
else:
|
||||||
cf2 = None
|
self.cf2 = None
|
||||||
# save cf2 for plotting
|
assert isinstance(self.cf2, CharacteristicFunction), 'cf2 is not set correctly: maybe the algorithm name () is ' \
|
||||||
self.cf2 = cf2
|
|
||||||
assert isinstance(cf2, CharacteristicFunction), 'cf2 is not set correctly: maybe the algorithm name () is ' \
|
|
||||||
'corrupted'.format(self.p_params.algoP)
|
'corrupted'.format(self.p_params.algoP)
|
||||||
fig, linecolor = get_fig_from_figdict(self.fig_dict, 'refPpick')
|
fig, linecolor = get_fig_from_figdict(self.fig_dict, 'refPpick')
|
||||||
# get refined onset time from CF2
|
# get refined onset time from CF2
|
||||||
refPpick = PragPicker(cf2, self.p_params.tsnrz, self.p_params.pickwinP, self.iplot, self.p_params.ausP,
|
refPpick = PragPicker(self.cf2, self.p_params.tsnrz, self.p_params.pickwinP, self.iplot, self.p_params.ausP,
|
||||||
self.p_params.tsmoothP, aicpick.getpick(), fig, linecolor)
|
self.p_params.tsmoothP, aicpick.getpick(), fig, linecolor)
|
||||||
# save PragPicker result for plotting
|
# save PragPicker result for plotting
|
||||||
self.p_results.refPpick = refPpick
|
self.p_results.refPpick = refPpick
|
||||||
@ -957,10 +950,10 @@ class AutopickStation(object):
|
|||||||
self.p_results.FM = fmpicker(self.zstream, z_copy, self.first_motion_params.fmpickwin,
|
self.p_results.FM = fmpicker(self.zstream, z_copy, self.first_motion_params.fmpickwin,
|
||||||
self.p_results.mpickP, self.iplot, fig, linecolor)
|
self.p_results.mpickP, self.iplot, fig, linecolor)
|
||||||
msg = "autopickstation: P-weight: {}, SNR: {}, SNR[dB]: {}, Polarity: {}"
|
msg = "autopickstation: P-weight: {}, SNR: {}, SNR[dB]: {}, Polarity: {}"
|
||||||
msg.format(self.p_results.Pweight, self.p_results.SNRP, self.p_results.SNRPdB, self.p_results.FM)
|
msg = msg.format(self.p_results.Pweight, self.p_results.SNRP, self.p_results.SNRPdB, self.p_results.FM)
|
||||||
print(msg)
|
print(msg)
|
||||||
msg = 'autopickstation: Refined P-Pick: {} s | P-Error: {} s'
|
msg = 'autopickstation: Refined P-Pick: {} s | P-Error: {} s'
|
||||||
msg.format(self.p_results.mpickP, self.p_results.Perror)
|
msg = msg.format(self.p_results.mpickP, self.p_results.Perror)
|
||||||
print(msg)
|
print(msg)
|
||||||
self.s_results.Sflag = 1
|
self.s_results.Sflag = 1
|
||||||
|
|
||||||
@ -1070,16 +1063,14 @@ class AutopickStation(object):
|
|||||||
def _pick_s_calculate_ar_cf_2(self):
|
def _pick_s_calculate_ar_cf_2(self):
|
||||||
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])
|
||||||
|
trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1])
|
||||||
if self.s_params.algoS == 'ARH':
|
if self.s_params.algoS == 'ARH':
|
||||||
trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1])
|
|
||||||
trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1])
|
|
||||||
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 self.s_params.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, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1])
|
||||||
trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1])
|
|
||||||
trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1])
|
|
||||||
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
|
||||||
@ -1091,11 +1082,9 @@ class AutopickStation(object):
|
|||||||
|
|
||||||
# calculate second cf
|
# calculate second cf
|
||||||
if self.s_params.algoS == 'ARH':
|
if self.s_params.algoS == 'ARH':
|
||||||
arhcf2 = ARHcf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h,
|
arhcf2 = ARHcf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h, self.p_params.addnoise)
|
||||||
self.p_params.addnoise)
|
|
||||||
elif self.s_params.algoS == 'AR3':
|
elif self.s_params.algoS == 'AR3':
|
||||||
arhcf2 = AR3Ccf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h,
|
arhcf2 = AR3Ccf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h, self.p_params.addnoise)
|
||||||
self.p_params.addnoise)
|
|
||||||
# save cf for later plotting
|
# save cf for later plotting
|
||||||
self.arhcf2 = arhcf2
|
self.arhcf2 = arhcf2
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user