Merge branch 'develop'
Conflicts: pylot/core/pick/autopick.py
This commit is contained in:
commit
bfc745dd30
14
PyLoT.py
14
PyLoT.py
@ -2454,12 +2454,14 @@ class MainWindow(QMainWindow):
|
|||||||
canvas.setZoomBorders2content()
|
canvas.setZoomBorders2content()
|
||||||
if self.tap.pylot_picks:
|
if self.tap.pylot_picks:
|
||||||
station = self.tap.get_current_station()
|
station = self.tap.get_current_station()
|
||||||
p_pick = self.tap.pylot_picks[station]['P']
|
p_pick = self.tap.pylot_picks[station].get('P')
|
||||||
s_pick = self.tap.pylot_picks[station]['S']
|
if p_pick:
|
||||||
self.tap.pickDlg.autopicks['P_tuning'] = p_pick
|
self.tap.pickDlg.autopicks['P_tuning'] = p_pick
|
||||||
self.tap.pickDlg.autopicks['S_tuning'] = s_pick
|
self.tap.pickDlg.drawPicks(phase='P_tuning', picktype='auto', picks=p_pick)
|
||||||
self.tap.pickDlg.drawPicks(phase='P_tuning', picktype='auto', picks=p_pick)
|
s_pick = self.tap.pylot_picks[station].get('S')
|
||||||
self.tap.pickDlg.drawPicks(phase='S_tuning', picktype='auto', picks=s_pick)
|
if s_pick:
|
||||||
|
self.tap.pickDlg.autopicks['S_tuning'] = s_pick
|
||||||
|
self.tap.pickDlg.drawPicks(phase='S_tuning', picktype='auto', picks=s_pick)
|
||||||
|
|
||||||
def autoPick(self):
|
def autoPick(self):
|
||||||
autosave = self.get_current_event_path()
|
autosave = self.get_current_event_path()
|
||||||
|
@ -8,6 +8,7 @@ function conglomerate utils.
|
|||||||
|
|
||||||
:author: MAGS2 EP3 working group / Ludger Kueperkoch
|
:author: MAGS2 EP3 working group / Ludger Kueperkoch
|
||||||
"""
|
"""
|
||||||
|
import traceback
|
||||||
|
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -136,7 +137,8 @@ def call_autopickstation(input_tuple):
|
|||||||
return autopickstation(wfstream, pickparam, verbose, fig_dict=fig_dict, iplot=iplot, metadata=metadata,
|
return autopickstation(wfstream, pickparam, verbose, fig_dict=fig_dict, iplot=iplot, metadata=metadata,
|
||||||
origin=origin)
|
origin=origin)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return e, wfstream[0].stats.station
|
traceback.print_exc()
|
||||||
|
return traceback.format_exc(), wfstream[0].stats.station
|
||||||
|
|
||||||
|
|
||||||
def autopickstation(wfstream, pickparam, verbose=False,
|
def autopickstation(wfstream, pickparam, verbose=False,
|
||||||
@ -966,115 +968,114 @@ def autopickstation(wfstream, pickparam, verbose=False,
|
|||||||
ax1.set_ylim([-1.5, 1.5])
|
ax1.set_ylim([-1.5, 1.5])
|
||||||
ax1.set_ylabel('Normalized Counts')
|
ax1.set_ylabel('Normalized Counts')
|
||||||
# fig.suptitle(tr_filt.stats.starttime)
|
# fig.suptitle(tr_filt.stats.starttime)
|
||||||
try:
|
# only continue if one horizontal stream exists
|
||||||
len(edat[0])
|
if (ndat or edat) and Sflag == 1:
|
||||||
except:
|
# mirror components in case one does not exist
|
||||||
edat = ndat
|
if not edat:
|
||||||
try:
|
edat = ndat
|
||||||
len(ndat[0])
|
if not ndat:
|
||||||
except:
|
ndat = edat
|
||||||
ndat = edat
|
if len(edat[0]) > 1 and len(ndat[0]) > 1:
|
||||||
if len(edat[0]) > 1 and len(ndat[0]) > 1 and Sflag == 1:
|
# plot horizontal traces
|
||||||
# plot horizontal traces
|
ax2 = fig.add_subplot(3, 1, 2, sharex=ax1)
|
||||||
ax2 = fig.add_subplot(3, 1, 2, sharex=ax1)
|
th1data = np.arange(0,
|
||||||
th1data = np.arange(0,
|
trH1_filt.stats.npts /
|
||||||
trH1_filt.stats.npts /
|
trH1_filt.stats.sampling_rate,
|
||||||
trH1_filt.stats.sampling_rate,
|
trH1_filt.stats.delta)
|
||||||
trH1_filt.stats.delta)
|
# check equal length of arrays, sometimes they are different!?
|
||||||
# check equal length of arrays, sometimes they are different!?
|
wfldiff = len(trH1_filt.data) - len(th1data)
|
||||||
wfldiff = len(trH1_filt.data) - len(th1data)
|
if wfldiff < 0:
|
||||||
if wfldiff < 0:
|
th1data = th1data[0:len(th1data) - abs(wfldiff)]
|
||||||
th1data = th1data[0:len(th1data) - abs(wfldiff)]
|
ax2.plot(th1data, trH1_filt.data / max(trH1_filt.data), color=linecolor, linewidth=0.7, label='Data')
|
||||||
ax2.plot(th1data, trH1_filt.data / max(trH1_filt.data), color=linecolor, linewidth=0.7, label='Data')
|
if Pweight < 4:
|
||||||
if Pweight < 4:
|
ax2.plot(arhcf1.getTimeArray(),
|
||||||
ax2.plot(arhcf1.getTimeArray(),
|
arhcf1.getCF() / max(arhcf1.getCF()), 'b', label='CF1')
|
||||||
arhcf1.getCF() / max(arhcf1.getCF()), 'b', label='CF1')
|
if aicSflag == 1 and Sweight < 4:
|
||||||
if aicSflag == 1 and Sweight < 4:
|
ax2.plot(arhcf2.getTimeArray(),
|
||||||
ax2.plot(arhcf2.getTimeArray(),
|
arhcf2.getCF() / max(arhcf2.getCF()), 'm', label='CF2')
|
||||||
arhcf2.getCF() / max(arhcf2.getCF()), 'm', label='CF2')
|
ax2.plot(
|
||||||
ax2.plot(
|
[aicarhpick.getpick(), aicarhpick.getpick()],
|
||||||
[aicarhpick.getpick(), aicarhpick.getpick()],
|
[-1, 1], 'g', label='Initial S Onset')
|
||||||
[-1, 1], 'g', label='Initial S Onset')
|
ax2.plot(
|
||||||
ax2.plot(
|
[aicarhpick.getpick() - 0.5,
|
||||||
[aicarhpick.getpick() - 0.5,
|
aicarhpick.getpick() + 0.5],
|
||||||
aicarhpick.getpick() + 0.5],
|
[1, 1], 'g')
|
||||||
[1, 1], 'g')
|
ax2.plot(
|
||||||
ax2.plot(
|
[aicarhpick.getpick() - 0.5,
|
||||||
[aicarhpick.getpick() - 0.5,
|
aicarhpick.getpick() + 0.5],
|
||||||
aicarhpick.getpick() + 0.5],
|
[-1, -1], 'g')
|
||||||
[-1, -1], 'g')
|
ax2.plot([refSpick.getpick(), refSpick.getpick()],
|
||||||
ax2.plot([refSpick.getpick(), refSpick.getpick()],
|
[-1.3, 1.3], 'g', linewidth=2, label='Final S Pick')
|
||||||
[-1.3, 1.3], 'g', linewidth=2, label='Final S Pick')
|
ax2.plot(
|
||||||
ax2.plot(
|
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
||||||
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
[1.3, 1.3], 'g', linewidth=2)
|
||||||
[1.3, 1.3], 'g', linewidth=2)
|
ax2.plot(
|
||||||
ax2.plot(
|
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
||||||
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
[-1.3, -1.3], 'g', linewidth=2)
|
||||||
[-1.3, -1.3], 'g', linewidth=2)
|
ax2.plot([lpickS, lpickS], [-1.1, 1.1], 'g--', label='lpp')
|
||||||
ax2.plot([lpickS, lpickS], [-1.1, 1.1], 'g--', label='lpp')
|
ax2.plot([epickS, epickS], [-1.1, 1.1], 'g--', label='epp')
|
||||||
ax2.plot([epickS, epickS], [-1.1, 1.1], 'g--', label='epp')
|
ax2.set_title('%s, S Weight=%d, SNR=%7.2f, SNR[dB]=%7.2f' % (
|
||||||
ax2.set_title('%s, S Weight=%d, SNR=%7.2f, SNR[dB]=%7.2f' % (
|
trH1_filt.stats.channel,
|
||||||
trH1_filt.stats.channel,
|
Sweight, SNRS, SNRSdB))
|
||||||
Sweight, SNRS, SNRSdB))
|
else:
|
||||||
else:
|
ax2.set_title('%s, S Weight=%d, SNR=None, SNRdB=None' % (
|
||||||
ax2.set_title('%s, S Weight=%d, SNR=None, SNRdB=None' % (
|
trH1_filt.stats.channel, Sweight))
|
||||||
trH1_filt.stats.channel, Sweight))
|
ax2.legend(loc=1)
|
||||||
ax2.legend(loc=1)
|
ax2.set_yticks([])
|
||||||
ax2.set_yticks([])
|
ax2.set_ylim([-1.5, 1.5])
|
||||||
ax2.set_ylim([-1.5, 1.5])
|
ax2.set_ylabel('Normalized Counts')
|
||||||
ax2.set_ylabel('Normalized Counts')
|
# fig.suptitle(trH1_filt.stats.starttime)
|
||||||
# fig.suptitle(trH1_filt.stats.starttime)
|
|
||||||
|
|
||||||
ax3 = fig.add_subplot(3, 1, 3, sharex=ax1)
|
ax3 = fig.add_subplot(3, 1, 3, sharex=ax1)
|
||||||
th2data = np.arange(0,
|
th2data = np.arange(0,
|
||||||
trH2_filt.stats.npts /
|
trH2_filt.stats.npts /
|
||||||
trH2_filt.stats.sampling_rate,
|
trH2_filt.stats.sampling_rate,
|
||||||
trH2_filt.stats.delta)
|
trH2_filt.stats.delta)
|
||||||
# check equal length of arrays, sometimes they are different!?
|
# check equal length of arrays, sometimes they are different!?
|
||||||
wfldiff = len(trH2_filt.data) - len(th2data)
|
wfldiff = len(trH2_filt.data) - len(th2data)
|
||||||
if wfldiff < 0:
|
if wfldiff < 0:
|
||||||
th2data = th2data[0:len(th2data) - abs(wfldiff)]
|
th2data = th2data[0:len(th2data) - abs(wfldiff)]
|
||||||
ax3.plot(th2data, trH2_filt.data / max(trH2_filt.data), color=linecolor, linewidth=0.7, label='Data')
|
ax3.plot(th2data, trH2_filt.data / max(trH2_filt.data), color=linecolor, linewidth=0.7, label='Data')
|
||||||
if Pweight < 4:
|
if Pweight < 4:
|
||||||
p22, = ax3.plot(arhcf1.getTimeArray(),
|
p22, = ax3.plot(arhcf1.getTimeArray(),
|
||||||
arhcf1.getCF() / max(arhcf1.getCF()), 'b', label='CF1')
|
arhcf1.getCF() / max(arhcf1.getCF()), 'b', label='CF1')
|
||||||
if aicSflag == 1:
|
if aicSflag == 1:
|
||||||
ax3.plot(arhcf2.getTimeArray(),
|
ax3.plot(arhcf2.getTimeArray(),
|
||||||
arhcf2.getCF() / max(arhcf2.getCF()), 'm', label='CF2')
|
arhcf2.getCF() / max(arhcf2.getCF()), 'm', label='CF2')
|
||||||
ax3.plot(
|
ax3.plot(
|
||||||
[aicarhpick.getpick(), aicarhpick.getpick()],
|
[aicarhpick.getpick(), aicarhpick.getpick()],
|
||||||
[-1, 1], 'g', label='Initial S Onset')
|
[-1, 1], 'g', label='Initial S Onset')
|
||||||
ax3.plot(
|
ax3.plot(
|
||||||
[aicarhpick.getpick() - 0.5,
|
[aicarhpick.getpick() - 0.5,
|
||||||
aicarhpick.getpick() + 0.5],
|
aicarhpick.getpick() + 0.5],
|
||||||
[1, 1], 'g')
|
[1, 1], 'g')
|
||||||
ax3.plot(
|
ax3.plot(
|
||||||
[aicarhpick.getpick() - 0.5,
|
[aicarhpick.getpick() - 0.5,
|
||||||
aicarhpick.getpick() + 0.5],
|
aicarhpick.getpick() + 0.5],
|
||||||
[-1, -1], 'g')
|
[-1, -1], 'g')
|
||||||
ax3.plot([refSpick.getpick(), refSpick.getpick()],
|
ax3.plot([refSpick.getpick(), refSpick.getpick()],
|
||||||
[-1.3, 1.3], 'g', linewidth=2, label='Final S Pick')
|
[-1.3, 1.3], 'g', linewidth=2, label='Final S Pick')
|
||||||
ax3.plot(
|
ax3.plot(
|
||||||
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
||||||
[1.3, 1.3], 'g', linewidth=2)
|
[1.3, 1.3], 'g', linewidth=2)
|
||||||
ax3.plot(
|
ax3.plot(
|
||||||
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
[refSpick.getpick() - 0.5, refSpick.getpick() + 0.5],
|
||||||
[-1.3, -1.3], 'g', linewidth=2)
|
[-1.3, -1.3], 'g', linewidth=2)
|
||||||
ax3.plot([lpickS, lpickS], [-1.1, 1.1], 'g--', label='lpp')
|
ax3.plot([lpickS, lpickS], [-1.1, 1.1], 'g--', label='lpp')
|
||||||
ax3.plot([epickS, epickS], [-1.1, 1.1], 'g--', label='epp')
|
ax3.plot([epickS, epickS], [-1.1, 1.1], 'g--', label='epp')
|
||||||
ax3.legend(loc=1)
|
ax3.legend(loc=1)
|
||||||
ax3.set_yticks([])
|
ax3.set_yticks([])
|
||||||
ax3.set_ylim([-1.5, 1.5])
|
ax3.set_ylim([-1.5, 1.5])
|
||||||
ax3.set_xlabel('Time [s] after %s' % tr_filt.stats.starttime)
|
ax3.set_xlabel('Time [s] after %s' % tr_filt.stats.starttime)
|
||||||
ax3.set_ylabel('Normalized Counts')
|
ax3.set_ylabel('Normalized Counts')
|
||||||
ax3.set_title(trH2_filt.stats.channel)
|
ax3.set_title(trH2_filt.stats.channel)
|
||||||
if plt_flag == 1:
|
if plt_flag == 1:
|
||||||
fig.show()
|
fig.show()
|
||||||
try:
|
try:
|
||||||
input()
|
input()
|
||||||
except SyntaxError:
|
except SyntaxError:
|
||||||
pass
|
pass
|
||||||
plt.close(fig)
|
plt.close(fig)
|
||||||
##########################################################################
|
##########################################################################
|
||||||
# calculate "real" onset times
|
# calculate "real" onset times
|
||||||
if lpickP is not None and lpickP == mpickP:
|
if lpickP is not None and lpickP == mpickP:
|
||||||
@ -1092,11 +1093,21 @@ def autopickstation(wfstream, pickparam, verbose=False,
|
|||||||
epickP = zdat[0].stats.starttime - timeerrorsP[3]
|
epickP = zdat[0].stats.starttime - timeerrorsP[3]
|
||||||
mpickP = zdat[0].stats.starttime
|
mpickP = zdat[0].stats.starttime
|
||||||
|
|
||||||
|
# create dictionary
|
||||||
|
# for P phase
|
||||||
|
ccode = zdat[0].stats.channel
|
||||||
|
ncode = zdat[0].stats.network
|
||||||
|
ppick = dict(channel=ccode, network=ncode, lpp=lpickP, epp=epickP, mpp=mpickP, spe=Perror, snr=SNRP,
|
||||||
|
snrdb=SNRPdB, weight=Pweight, fm=FM, w0=None, fc=None, Mo=None,
|
||||||
|
Mw=None, picker=picker, marked=Pmarker)
|
||||||
|
|
||||||
if edat:
|
if edat:
|
||||||
hdat = edat[0]
|
hdat = edat[0]
|
||||||
elif ndat:
|
elif ndat:
|
||||||
hdat = ndat[0]
|
hdat = ndat[0]
|
||||||
else:
|
else:
|
||||||
|
# no horizontal components given
|
||||||
|
picks = dict(P=ppick)
|
||||||
return picks, station
|
return picks, station
|
||||||
|
|
||||||
if lpickS is not None and lpickS == mpickS:
|
if lpickS is not None and lpickS == mpickS:
|
||||||
@ -1114,13 +1125,6 @@ def autopickstation(wfstream, pickparam, verbose=False,
|
|||||||
epickS = hdat.stats.starttime - timeerrorsS[3]
|
epickS = hdat.stats.starttime - timeerrorsS[3]
|
||||||
mpickS = hdat.stats.starttime
|
mpickS = hdat.stats.starttime
|
||||||
|
|
||||||
# create dictionary
|
|
||||||
# for P phase
|
|
||||||
ccode = zdat[0].stats.channel
|
|
||||||
ncode = zdat[0].stats.network
|
|
||||||
ppick = dict(channel=ccode, network=ncode, lpp=lpickP, epp=epickP, mpp=mpickP, spe=Perror, snr=SNRP,
|
|
||||||
snrdb=SNRPdB, weight=Pweight, fm=FM, w0=None, fc=None, Mo=None,
|
|
||||||
Mw=None, picker=picker, marked=Pmarker)
|
|
||||||
# add S phase
|
# add S phase
|
||||||
ccode = hdat.stats.channel
|
ccode = hdat.stats.channel
|
||||||
ncode = hdat.stats.network
|
ncode = hdat.stats.network
|
||||||
|
Loading…
Reference in New Issue
Block a user