Merge branch 'develop' of ariadne.geophysik.rub.de:/data/git/pylot into develop

This commit is contained in:
Ludger Küperkoch 2015-06-24 15:47:14 +02:00
commit 1abcb9d9a9
3 changed files with 39 additions and 17 deletions

View File

@ -209,7 +209,7 @@ class FilterOptions(object):
def parseFilterOptions(self): def parseFilterOptions(self):
if self.getFilterType(): if self.getFilterType():
robject = {'type':self.getFilterType()} robject = {'type':self.getFilterType()}
robject['order'] = self.getOrder() robject['corners'] = self.getOrder()
if len(self.getFreq()) > 1: if len(self.getFreq()) > 1:
robject['freqmin'] = self.getFreq()[0] robject['freqmin'] = self.getFreq()[0]
robject['freqmax'] = self.getFreq()[1] robject['freqmax'] = self.getFreq()[1]

View File

@ -93,9 +93,9 @@ def getGlobalTimes(stream):
for trace in stream: for trace in stream:
if trace.stats.starttime < min_start: if trace.stats.starttime < min_start:
min_start = trace.stats.starttime min_start = trace.stats.starttime
if max_end is None or trace.stats.endtime > max_end: if max_end is None or trace.stats.endtime > max_end:
max_end = trace.stats.endtime max_end = trace.stats.endtime
return [min_start, max_end] return min_start, max_end
def createCreationInfo(agency_id=None, creation_time=None, author=None): def createCreationInfo(agency_id=None, creation_time=None, author=None):

View File

@ -23,10 +23,9 @@ from PySide.QtGui import QAction, QApplication, QComboBox, QDateTimeEdit, \
from PySide.QtCore import QSettings, Qt, QUrl, Signal, Slot from PySide.QtCore import QSettings, Qt, QUrl, Signal, Slot
from PySide.QtWebKit import QWebView from PySide.QtWebKit import QWebView
from obspy import Stream, UTCDateTime from obspy import Stream, UTCDateTime
from obspy.core.event import Pick, WaveformStreamID
from pylot.core.read import FilterOptions from pylot.core.read import FilterOptions
from pylot.core.pick.utils import getSNR, earllatepicker, getnoisewin from pylot.core.pick.utils import getSNR, earllatepicker, getnoisewin
from pylot.core.util.defaults import OUTPUTFORMATS from pylot.core.util.defaults import OUTPUTFORMATS, FILTERDEFAULTS
from pylot.core.util import prepTimeAxis, getGlobalTimes from pylot.core.util import prepTimeAxis, getGlobalTimes
@ -90,7 +89,7 @@ class MPLWidget(FigureCanvas):
noiselevel=None): noiselevel=None):
self.getAxes().cla() self.getAxes().cla()
self.clearPlotDict() self.clearPlotDict()
wfstart = getGlobalTimes(wfdata)[0] wfstart, wfend = getGlobalTimes(wfdata)
for n, trace in enumerate(wfdata): for n, trace in enumerate(wfdata):
channel = trace.stats.channel channel = trace.stats.channel
station = trace.stats.station station = trace.stats.station
@ -109,7 +108,8 @@ class MPLWidget(FigureCanvas):
ylabel = '' ylabel = ''
self.updateWidget(xlabel, ylabel, title) self.updateWidget(xlabel, ylabel, title)
self.setPlotDict(n, (station, channel)) self.setPlotDict(n, (station, channel))
self.axes.autoscale(tight=True) self.setXLims([0, wfend - wfstart])
self.setYLims([-0.5, n + 0.5])
if zoomx is not None: if zoomx is not None:
self.setXLims(zoomx) self.setXLims(zoomx)
if zoomy is not None: if zoomy is not None:
@ -168,6 +168,7 @@ class PickDlg(QDialog):
self.rotate = rotate self.rotate = rotate
self.components = 'ZNE' self.components = 'ZNE'
self.picks = {} self.picks = {}
self.filteroptions = FILTERDEFAULTS
# initialize panning attributes # initialize panning attributes
self.press = None self.press = None
@ -238,7 +239,8 @@ class PickDlg(QDialog):
' waveforms', ' waveforms',
checkable=True) checkable=True)
self.selectPhase = QComboBox() self.selectPhase = QComboBox()
self.selectPhase.addItems([None, 'Pn', 'Pg', 'Sn', 'Sg']) phaseitems = [None] + FILTERDEFAULTS.keys()
self.selectPhase.addItems(phaseitems)
self.zoomAction = createAction(parent=self, text='Zoom', self.zoomAction = createAction(parent=self, text='Zoom',
slot=self.zoom, icon=zoom_icon, slot=self.zoom, icon=zoom_icon,
@ -320,7 +322,7 @@ class PickDlg(QDialog):
self.disconnectMotionEvent() self.disconnectMotionEvent()
self.disconnectPressEvent() self.disconnectPressEvent()
self.cidpress = self.connectPressEvent(self.setIniPick) self.cidpress = self.connectPressEvent(self.setIniPick)
self.filterWFData(phase) self.filterWFData()
else: else:
self.disconnectPressEvent() self.disconnectPressEvent()
self.cidpress = self.connectPressEvent(self.panPress) self.cidpress = self.connectPressEvent(self.panPress)
@ -340,6 +342,10 @@ class PickDlg(QDialog):
def getChannelID(self, key): def getChannelID(self, key):
return self.getPlotWidget().getPlotDict()[int(key)][1] return self.getPlotWidget().getPlotDict()[int(key)][1]
def getFilterOptions(self, phase):
options = self.filteroptions[phase]
return FilterOptions(**options)
def getXLims(self): def getXLims(self):
return self.cur_xlim return self.cur_xlim
@ -565,19 +571,28 @@ class PickDlg(QDialog):
ax.figure.canvas.draw() ax.figure.canvas.draw()
def filterWFData(self, phase): def filterWFData(self):
self.updateCurrentLimits() self.updateCurrentLimits()
data = self.getWFData().copy() data = self.getWFData().copy()
old_title = self.getPlotWidget().getAxes().get_title() old_title = self.getPlotWidget().getAxes().get_title()
title = None title = None
phase = self.selectPhase.currentText()
if self.filterAction.isChecked(): if self.filterAction.isChecked():
filteroptions = self.getFilterOptions(phase).parseFilterOptions() if phase:
data.filter(**filteroptions) filtoptions = self.getFilterOptions(phase).parseFilterOptions()
if old_title.endswith(')'):
title = old_title[:-1] + ', filtered)'
else: else:
title = old_title + ' (filtered)' filtoptions = FilterOptionsDialog.getFilterObject()
if not title: filtoptions = filtoptions.parseFilterOptions()
if filtoptions is not None:
data.filter(**filtoptions)
if old_title.endswith(')'):
title = old_title[:-1] + ', filtered)'
else:
title = old_title + ' (filtered)'
else:
if old_title.endswith(' (filtered)'):
title = old_title.replace(' (filtered)', '')
if title is None:
title = old_title title = old_title
self.getPlotWidget().plotWFData(wfdata=data, title=title, self.getPlotWidget().plotWFData(wfdata=data, title=title,
zoomx=self.getXLims(), zoomx=self.getXLims(),
@ -978,6 +993,13 @@ class FilterOptionsDialog(QDialog):
def getFilterOptions(self): def getFilterOptions(self):
return self.filterOptions return self.filterOptions
@staticmethod
def getFilterObject():
dlg = FilterOptionsDialog()
if dlg.exec_():
return dlg.getFilterOptions()
return None
def accept(self): def accept(self):
self.updateUi() self.updateUi()
QDialog.accept(self) QDialog.accept(self)