convenience imports and implementation of initial pick set for S phases (including zooming to re-scaled horizontal data)
This commit is contained in:
parent
a5c1f68f03
commit
97aaa0b0d3
@ -4,7 +4,7 @@ from pylot.core.util.errors import OptionsError, FormatError, DatastructureError
|
|||||||
from pylot.core.util.utils import fnConstructor, createArrival, createEvent,\
|
from pylot.core.util.utils import fnConstructor, createArrival, createEvent,\
|
||||||
createPick, createAmplitude, createOrigin, createMagnitude, getOwner, \
|
createPick, createAmplitude, createOrigin, createMagnitude, getOwner, \
|
||||||
getHash, getLogin, createCreationInfo, createResourceID, prepTimeAxis, \
|
getHash, getLogin, createCreationInfo, createResourceID, prepTimeAxis, \
|
||||||
getGlobalTimes
|
getGlobalTimes, scaleWFData, demeanWFData
|
||||||
from pylot.core.util.widgets import PickDlg, HelpForm, FilterOptionsDialog,\
|
from pylot.core.util.widgets import PickDlg, HelpForm, FilterOptionsDialog,\
|
||||||
PropertiesDlg, NewEventDlg, MPLWidget, createAction
|
PropertiesDlg, NewEventDlg, MPLWidget, createAction
|
||||||
from pylot.core.util.version import get_git_version as _getVersionString
|
from pylot.core.util.version import get_git_version as _getVersionString
|
||||||
|
@ -416,6 +416,19 @@ class PickDlg(QDialog):
|
|||||||
self.disconnectMotionEvent()
|
self.disconnectMotionEvent()
|
||||||
self.cidpress = self.connectPressEvent(self.setPick)
|
self.cidpress = self.connectPressEvent(self.setPick)
|
||||||
|
|
||||||
|
if self.selectPhase.currentText().upper().startswith('P'):
|
||||||
|
self.setIniPickP(gui_event, wfdata, trace_number)
|
||||||
|
elif self.selectPhase.currentText().upper().startswith('S'):
|
||||||
|
self.setIniPickS(gui_event, wfdata)
|
||||||
|
|
||||||
|
self.zoomAction.setEnabled(False)
|
||||||
|
|
||||||
|
# reset labels
|
||||||
|
self.setPlotLabels()
|
||||||
|
self.draw()
|
||||||
|
|
||||||
|
def setIniPickP(self, gui_event, wfdata, trace_number):
|
||||||
|
|
||||||
ini_pick = gui_event.xdata
|
ini_pick = gui_event.xdata
|
||||||
|
|
||||||
settings = QSettings()
|
settings = QSettings()
|
||||||
@ -446,20 +459,51 @@ class PickDlg(QDialog):
|
|||||||
noiselevel=(trace_number + noiselevel,
|
noiselevel=(trace_number + noiselevel,
|
||||||
trace_number - noiselevel))
|
trace_number - noiselevel))
|
||||||
|
|
||||||
self.zoomAction.setEnabled(False)
|
def setIniPickS(self, gui_event, wfdata):
|
||||||
|
|
||||||
# reset labels
|
ini_pick = gui_event.xdata
|
||||||
self.setPlotLabels()
|
|
||||||
self.draw()
|
|
||||||
|
|
||||||
def setIniPickS(self, gui_event):
|
|
||||||
settings = QSettings()
|
settings = QSettings()
|
||||||
|
|
||||||
nfac = settings.value('picking/nfac_P', 1.5)
|
nfac = settings.value('picking/nfac_P', 1.5)
|
||||||
noise_win = settings.value('picking/noise_win_P', 5.)
|
noise_win = settings.value('picking/noise_win_P', 5.)
|
||||||
gap_win = settings.value('picking/gap_win_P', .2)
|
gap_win = settings.value('picking/gap_win_P', .2)
|
||||||
signal_win = settings.value('picking/signal_win_P', 3.)
|
signal_win = settings.value('picking/signal_win_P', 3.)
|
||||||
pass
|
|
||||||
|
result = getSNR(wfdata, (noise_win, gap_win, signal_win), ini_pick)
|
||||||
|
|
||||||
|
snr = result[0]
|
||||||
|
noiselevel = result[2] * nfac
|
||||||
|
|
||||||
|
data = self.getWFData().copy()
|
||||||
|
|
||||||
|
phase = self.selectPhase.currentText()
|
||||||
|
filteroptions = self.getFilterOptions(phase).parseFilterOptions()
|
||||||
|
data.filter(**filteroptions)
|
||||||
|
|
||||||
|
data = demeanWFData(data=data, t0=ini_pick, win=noise_win, gap=gap_win)
|
||||||
|
|
||||||
|
horiz_comp = ('n', 'e')
|
||||||
|
|
||||||
|
data = scaleWFData(data, noiselevel * 2.5, horiz_comp)
|
||||||
|
|
||||||
|
x_res = getResolutionWindow(snr)
|
||||||
|
|
||||||
|
self.setXLims(tuple([ini_pick - x_res, ini_pick + x_res]))
|
||||||
|
traces = self.getTraceID(horiz_comp)
|
||||||
|
traces.sort()
|
||||||
|
self.setYLims(tuple(np.array([-0.5, +0.5]) +
|
||||||
|
np.array(traces)))
|
||||||
|
noiselevels = [trace + 1 / (2.5 * 2) for trace in traces] +\
|
||||||
|
[trace - 1 / (2.5 * 2) for trace in traces]
|
||||||
|
|
||||||
|
self.getPlotWidget().plotWFData(wfdata=data,
|
||||||
|
title=self.getStation() +
|
||||||
|
' picking mode',
|
||||||
|
zoomx=self.getXLims(),
|
||||||
|
zoomy=self.getYLims(),
|
||||||
|
noiselevel=noiselevels,
|
||||||
|
scaleddata=True)
|
||||||
|
|
||||||
def setPick(self, gui_event):
|
def setPick(self, gui_event):
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user