code clean-up following several conventions

This commit is contained in:
Sebastian Wehling-Benatelli 2015-06-11 10:07:21 +02:00
parent 3d8bea8f7e
commit 546e919dc9
10 changed files with 140 additions and 136 deletions

View File

@ -43,13 +43,13 @@ import icons_rc
# Version information # Version information
__version__ = _getVersionString() __version__ = _getVersionString()
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
closing = Signal() closing = Signal()
def __init__(self, parent=None): def __init__(self, parent=None):
super(MainWindow, self).__init__(parent) super(MainWindow, self).__init__(parent)
self.createAction = createAction self.createAction = createAction
self.dirty = False self.dirty = False
settings = QSettings() settings = QSettings()
@ -58,7 +58,9 @@ class MainWindow(QMainWindow):
settings.setValue("user/FullName", fulluser) settings.setValue("user/FullName", fulluser)
settings.setValue("user/Login", getLogin()) settings.setValue("user/Login", getLogin())
if settings.value("agency_id", None) is None: if settings.value("agency_id", None) is None:
agency = QInputDialog.getText(self, "Enter authority name (e.g. BUG):", "Authority") agency = QInputDialog.getText(self,
"Enter authority name (e.g. BUG):",
"Authority")
settings.setValue("agency_id", agency) settings.setValue("agency_id", agency)
self.recentEvents = settings.value("data/recentEvents", []) self.recentEvents = settings.value("data/recentEvents", [])
self.fnames = None self.fnames = None
@ -91,7 +93,6 @@ class MainWindow(QMainWindow):
self.loadData() self.loadData()
self.updateFilterOptions() self.updateFilterOptions()
def setupUi(self): def setupUi(self):
try: try:
@ -159,21 +160,24 @@ class MainWindow(QMainWindow):
QCoreApplication.instance().quit, QCoreApplication.instance().quit,
QKeySequence.Close, quitIcon, QKeySequence.Close, quitIcon,
"Close event and quit PyLoT") "Close event and quit PyLoT")
self.filterAction = self.createAction(self, "&Filter ...", self.filterWaveformData, self.filterAction = self.createAction(self, "&Filter ...",
"Ctrl+F", QIcon(":/filter.png"), self.filterWaveformData,
"""Toggle un-/filtered waveforms "Ctrl+F", QIcon(":/filter.png"),
"""Toggle un-/filtered waveforms
to be displayed, according to the to be displayed, according to the
desired seismic phase.""", True) desired seismic phase.""", True)
filterEditAction = self.createAction(self, "&Filter parameter ...", filterEditAction = self.createAction(self, "&Filter parameter ...",
self.adjustFilterOptions, self.adjustFilterOptions,
"Alt+F", QIcon(None), "Alt+F", QIcon(None),
"""Adjust filter parameters.""") """Adjust filter parameters.""")
self.selectPAction = self.createAction(self, "&P", self.alterPhase, "Alt+P", self.selectPAction = self.createAction(self, "&P", self.alterPhase,
p_icon, "Alt+P",
"Toggle P phase.", True) p_icon,
self.selectSAction = self.createAction(self, "&S", self.alterPhase, "Alt+S", "Toggle P phase.", True)
s_icon, self.selectSAction = self.createAction(self, "&S", self.alterPhase,
"Toggle S phase", True) "Alt+S",
s_icon,
"Toggle S phase", True)
printAction = self.createAction(self, "&Print event ...", printAction = self.createAction(self, "&Print event ...",
self.printEvent, QKeySequence.Print, self.printEvent, QKeySequence.Print,
print_icon, print_icon,
@ -197,7 +201,7 @@ class MainWindow(QMainWindow):
self.addActions(self.editMenu, editActions) self.addActions(self.editMenu, editActions)
self.helpMenu = self.menuBar().addMenu('&Help') self.helpMenu = self.menuBar().addMenu('&Help')
helpActions = (helpAction, ) helpActions = (helpAction,)
self.addActions(self.helpMenu, helpActions) self.addActions(self.helpMenu, helpActions)
fileToolBar = self.addToolBar("FileTools") fileToolBar = self.addToolBar("FileTools")
@ -273,8 +277,8 @@ class MainWindow(QMainWindow):
filt = "Supported event formats (*.mat *.qml *.xml *.kor *.evt)" filt = "Supported event formats (*.mat *.qml *.xml *.kor *.evt)"
caption = "Open an event file" caption = "Open an event file"
fname = QFileDialog().getOpenFileName(self, fname = QFileDialog().getOpenFileName(self,
caption=caption, caption=caption,
filter=filt) filter=filt)
self.fname = fname[0] self.fname = fname[0]
else: else:
self.fname = unicode(action.data().toString()) self.fname = unicode(action.data().toString())
@ -303,9 +307,9 @@ class MainWindow(QMainWindow):
if self.dataStructure: if self.dataStructure:
searchPath = self.dataStructure.expandDataPath() searchPath = self.dataStructure.expandDataPath()
fnames = QFileDialog.getOpenFileNames(self, fnames = QFileDialog.getOpenFileNames(self,
"Select waveform " "Select waveform "
"files:", "files:",
dir=searchPath) dir=searchPath)
self.fnames = fnames[0] self.fnames = fnames[0]
else: else:
@ -342,7 +346,8 @@ class MainWindow(QMainWindow):
def getPlotWidget(self): def getPlotWidget(self):
return self.DataPlot return self.DataPlot
def getWFID(self, gui_event): @staticmethod
def getWFID(gui_event):
ycoord = gui_event.ydata ycoord = gui_event.ydata
@ -383,11 +388,12 @@ class MainWindow(QMainWindow):
def filterWaveformData(self): def filterWaveformData(self):
if self.getData(): if self.getData():
def hasfreq(kwargs): def hasfreq(kwdict):
for key in kwargs.keys(): for key in kwdict.keys():
if not key.startswith('freq'): if not key.startswith('freq'):
return True return True
return False return False
if self.filterAction.isChecked(): if self.filterAction.isChecked():
kwargs = {} kwargs = {}
freq = self.getFilterOptions().getFreq() freq = self.getFilterOptions().getFreq()
@ -430,11 +436,11 @@ class MainWindow(QMainWindow):
else: else:
self.getFilters()[seismicPhase] = filterOptions self.getFilters()[seismicPhase] = filterOptions
def updateFilterOptions(self): def updateFilterOptions(self):
try: try:
settings = QSettings() settings = QSettings()
if settings.value("filterdefaults", None) is None and not self.getFilters(): if settings.value("filterdefaults",
None) is None and not self.getFilters():
for key, value in FILTERDEFAULTS.iteritems(): for key, value in FILTERDEFAULTS.iteritems():
self.setFilterOptions(FilterOptions(**value), key) self.setFilterOptions(FilterOptions(**value), key)
elif settings.value("filterdefaults", None) is not None: elif settings.value("filterdefaults", None) is not None:
@ -446,7 +452,9 @@ class MainWindow(QMainWindow):
emsg.showMessage('Error: {0}'.format(e)) emsg.showMessage('Error: {0}'.format(e))
else: else:
self.updateStatus('Filter loaded ... ' self.updateStatus('Filter loaded ... '
'[{0}: {1} Hz]'.format(self.getFilterOptions().getFilterType(), self.getFilterOptions().getFreq())) '[{0}: {1} Hz]'.format(
self.getFilterOptions().getFilterType(),
self.getFilterOptions().getFreq()))
if self.filterAction.isChecked(): if self.filterAction.isChecked():
self.filterWaveformData() self.filterWaveformData()
@ -479,7 +487,6 @@ class MainWindow(QMainWindow):
else: else:
print 'picks not saved and closed dialog' print 'picks not saved and closed dialog'
def updateStatus(self, message): def updateStatus(self, message):
self.statusBar().showMessage(message, 5000) self.statusBar().showMessage(message, 5000)
if self.getData() is not None: if self.getData() is not None:
@ -493,7 +500,6 @@ class MainWindow(QMainWindow):
"PyLoT - seismic processing the python way[*]") "PyLoT - seismic processing the python way[*]")
self.setWindowModified(self.dirty) self.setWindowModified(self.dirty)
def printEvent(self): def printEvent(self):
pass pass

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# encoding: utf-8 # encoding: utf-8
''' """
makePyLoT -- build and install PyLoT makePyLoT -- build and install PyLoT
makePyLoT is a python make file in order to establish the folder structure and makePyLoT is a python make file in order to establish the folder structure and
@ -20,7 +20,7 @@ It defines
:contact: sebastian.wehling@rub.de :contact: sebastian.wehling@rub.de
updated: Updated updated: Updated
''' """
import glob import glob
import os import os
@ -38,17 +38,22 @@ DEBUG = 0
TESTRUN = 0 TESTRUN = 0
PROFILE = 0 PROFILE = 0
class CLIError(Exception): class CLIError(Exception):
'''Generic exception to raise and log different fatal errors.''' """Generic exception to raise and log different fatal errors."""
def __init__(self, msg): def __init__(self, msg):
super(CLIError).__init__(type(self)) super(CLIError).__init__(type(self))
self.msg = "E: %s" % msg self.msg = "E: %s" % msg
def __str__(self): def __str__(self):
return self.msg return self.msg
def __unicode__(self): def __unicode__(self):
return self.msg return self.msg
def main(argv=None): # IGNORE:C0111
def main(argv=None): # IGNORE:C0111
'''Command line options.''' '''Command line options.'''
if argv is None: if argv is None:
@ -59,7 +64,8 @@ def main(argv=None): # IGNORE:C0111
program_name = os.path.basename(sys.argv[0]) program_name = os.path.basename(sys.argv[0])
program_version = "v%s" % __version__ program_version = "v%s" % __version__
program_build_date = str(__updated__) program_build_date = str(__updated__)
program_version_message = '%makePyLoT %s (%s)' % (program_version, program_build_date) program_version_message = 'makePyLoT %s (%s)' % (
program_version, program_build_date)
program_shortdesc = __import__('__main__').__doc__.split("\n")[1] program_shortdesc = __import__('__main__').__doc__.split("\n")[1]
program_license = '''%s program_license = '''%s
@ -77,12 +83,19 @@ USAGE
try: try:
# Setup argument parser # Setup argument parser
parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter) parser = ArgumentParser(description=program_license,
parser.add_argument("-b", "--build", dest="build", action="store_true", help="build PyLoT") formatter_class=RawDescriptionHelpFormatter)
parser.add_argument("-v", "--verbose", dest="verbose", action="count", help="set verbosity level") parser.add_argument("-b", "--build", dest="build", action="store_true",
parser.add_argument("-i", "--install", dest="install", action="store_true", help="install PyLoT on the system") help="build PyLoT")
parser.add_argument("-d", "--directory", dest="directory", help="installation directory", metavar="RE" ) parser.add_argument("-v", "--verbose", dest="verbose", action="count",
parser.add_argument('-V', '--version', action='version', version=program_version_message) help="set verbosity level")
parser.add_argument("-i", "--install", dest="install",
action="store_true",
help="install PyLoT on the system")
parser.add_argument("-d", "--directory", dest="directory",
help="installation directory", metavar="RE")
parser.add_argument('-V', '--version', action='version',
version=program_version_message)
# Process arguments # Process arguments
args = parser.parse_args() args = parser.parse_args()
@ -112,22 +125,24 @@ USAGE
return 0 return 0
except Exception, e: except Exception, e:
if DEBUG or TESTRUN: if DEBUG or TESTRUN:
raise(e) raise e
indent = len(program_name) * " " indent = len(program_name) * " "
sys.stderr.write(program_name + ": " + repr(e) + "\n") sys.stderr.write(program_name + ": " + repr(e) + "\n")
sys.stderr.write(indent + " for help use --help") sys.stderr.write(indent + " for help use --help")
return 2 return 2
def buildPyLoT(verbosity=None): def buildPyLoT(verbosity=None):
system = sys.platform system = sys.platform
if verbosity > 1: if verbosity > 1:
msg = ("... on system: {0}\n" msg = ("... on system: {0}\n"
"\n" "\n"
" Current working directory: {1}\n" " Current working directory: {1}\n"
).format(system, os.getcwd()) ).format(system, os.getcwd())
print msg print msg
if system.startswith(('win', 'microsoft')): if system.startswith(('win', 'microsoft')):
raise CLIError("building on Windows system not tested yet; implementation pending") raise CLIError(
"building on Windows system not tested yet; implementation pending")
elif system == 'darwin': elif system == 'darwin':
# create a symbolic link to the desired python interpreter in order to # create a symbolic link to the desired python interpreter in order to
# display the right application name # display the right application name
@ -141,19 +156,23 @@ def buildPyLoT(verbosity=None):
def installPyLoT(verbosity=None): def installPyLoT(verbosity=None):
pass pass
def cleanUp(verbosity=None): def cleanUp(verbosity=None):
pass pass
if __name__ == "__main__": if __name__ == "__main__":
if DEBUG: if DEBUG:
sys.argv.append("-h") sys.argv.append("-h")
sys.argv.append("-v") sys.argv.append("-v")
if TESTRUN: if TESTRUN:
import doctest import doctest
doctest.testmod() doctest.testmod()
if PROFILE: if PROFILE:
import cProfile import cProfile
import pstats import pstats
profile_filename = 'makePyLoT_profile.txt' profile_filename = 'makePyLoT_profile.txt'
cProfile.run('main()', profile_filename) cProfile.run('main()', profile_filename)
statsfile = open("profile_stats.txt", "wb") statsfile = open("profile_stats.txt", "wb")

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
#-------------------------------------------------------- # --------------------------------------------------------
# Purpose: Convience imports for PyLoT # Purpose: Convience imports for PyLoT
# #
''' '''

View File

@ -161,7 +161,7 @@ def fmpicker(Xraw, Xfilt, pickwin, Pick, iplot=None):
index1 = [] index1 = []
i = 0 i = 0
for j in range(ipick[0][1], ipick[0][len(t[ipick]) - 1]): for j in range(ipick[0][1], ipick[0][len(t[ipick]) - 1]):
i = i + 1 i += 1
if xraw[j - 1] <= 0 and xraw[j] >= 0: if xraw[j - 1] <= 0 and xraw[j] >= 0:
zc1.append(t[ipick][i]) zc1.append(t[ipick][i])
index1.append(i) index1.append(i)
@ -196,7 +196,7 @@ def fmpicker(Xraw, Xfilt, pickwin, Pick, iplot=None):
index2 = [] index2 = []
i = 0 i = 0
for j in range(ipick[0][1], ipick[0][len(t[ipick]) - 1]): for j in range(ipick[0][1], ipick[0][len(t[ipick]) - 1]):
i = i + 1 i += 1
if xfilt[j - 1] <= 0 and xfilt[j] >= 0: if xfilt[j - 1] <= 0 and xfilt[j] >= 0:
zc2.append(t[ipick][i]) zc2.append(t[ipick][i])
index2.append(i) index2.append(i)

View File

@ -2,5 +2,3 @@ from pylot.core.read.inputs import AutoPickParameter, FilterOptions
from pylot.core.read.io import readPILOTEvent from pylot.core.read.io import readPILOTEvent
from pylot.core.read.data import GenericDataStructure, SeiscompDataStructure, \ from pylot.core.read.data import GenericDataStructure, SeiscompDataStructure, \
PilotDataStructure, Data PilotDataStructure, Data

View File

@ -124,20 +124,10 @@ class AutoPickParameter(object):
for key, value in self.__parameter.iteritems(): for key, value in self.__parameter.iteritems():
yield key, value yield key, value
def hasParam(self, *args): def hasParam(self, parameter):
if self.__parameter.has_key(parameter):
def test(param): return True
try: return False
self.__parameter[param]
return True
except KeyError:
return False
try:
for param in args:
return test(param)
except TypeError:
return test(args)
def getParam(self, *args): def getParam(self, *args):
try: try:
@ -157,7 +147,8 @@ class AutoPickParameter(object):
self.__setitem__(param, value) self.__setitem__(param, value)
print self print self
def _printParameterError(self, errmsg): @staticmethod
def _printParameterError(errmsg):
print 'ParameterError:\n non-existent parameter %s' % errmsg print 'ParameterError:\n non-existent parameter %s' % errmsg
def export2File(self, fnout): def export2File(self, fnout):

View File

@ -9,8 +9,10 @@ Created on Thu Mar 20 09:47:04 2014
class OptionsError(Exception): class OptionsError(Exception):
pass pass
class FormatError(Exception): class FormatError(Exception):
pass pass
class DatastructureError(Exception): class DatastructureError(Exception):
pass pass

View File

@ -8,5 +8,5 @@ Created on Wed Jan 26 17:47:25 2015
from pylot.core.read import SeiscompDataStructure, PilotDataStructure from pylot.core.read import SeiscompDataStructure, PilotDataStructure
DATASTRUCTURE = {'PILOT':PilotDataStructure, 'SeisComP':SeiscompDataStructure, DATASTRUCTURE = {'PILOT': PilotDataStructure, 'SeisComP': SeiscompDataStructure,
None:None} None: None}

View File

@ -31,7 +31,7 @@
# #
# include RELEASE-VERSION # include RELEASE-VERSION
__all__ = ("get_git_version") __all__ = "get_git_version"
# NO IMPORTS FROM PYLOT IN THIS FILE! (file gets used at installation time) # NO IMPORTS FROM PYLOT IN THIS FILE! (file gets used at installation time)
import os import os

View File

@ -16,9 +16,9 @@ from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvas from matplotlib.backends.backend_qt4agg import FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg
from matplotlib.widgets import MultiCursor from matplotlib.widgets import MultiCursor
from PySide.QtGui import QAction, QApplication,QComboBox, QDateTimeEdit,\ from PySide.QtGui import QAction, QApplication, QComboBox, QDateTimeEdit, \
QDialog, QDialogButtonBox, QDoubleSpinBox, QGroupBox, QGridLayout,\ QDialog, QDialogButtonBox, QDoubleSpinBox, QGroupBox, QGridLayout, \
QIcon, QKeySequence, QLabel, QLineEdit, QMessageBox, QPixmap, QSpinBox,\ QIcon, QKeySequence, QLabel, QLineEdit, QMessageBox, QPixmap, QSpinBox, \
QTabWidget, QToolBar, QVBoxLayout, QWidget QTabWidget, QToolBar, QVBoxLayout, QWidget
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
@ -48,8 +48,8 @@ def createAction(parent, text, slot=None, shortcut=None, icon=None,
action.setCheckable(True) action.setCheckable(True)
return action return action
class MPLWidget(FigureCanvas):
class MPLWidget(FigureCanvas):
def __init__(self, parent=None, xlabel='x', ylabel='y', title='Title'): def __init__(self, parent=None, xlabel='x', ylabel='y', title='Title'):
self._parent = None self._parent = None
@ -65,7 +65,8 @@ class MPLWidget(FigureCanvas):
# initialize super class # initialize super class
FigureCanvas.__init__(self, self.figure) FigureCanvas.__init__(self, self.figure)
# add an cursor for station selection # add an cursor for station selection
self.multiCursor = MultiCursor(self.figure.canvas, (self.axes,), horizOn=True, self.multiCursor = MultiCursor(self.figure.canvas, (self.axes,),
horizOn=True,
color='m', lw=1) color='m', lw=1)
# update labels of the entire widget # update labels of the entire widget
self.updateWidget(xlabel, ylabel, title) self.updateWidget(xlabel, ylabel, title)
@ -126,7 +127,6 @@ class MPLWidget(FigureCanvas):
self.axes.set_xlabel(text) self.axes.set_xlabel(text)
self.draw() self.draw()
def updateYLabel(self, text): def updateYLabel(self, text):
self.axes.set_ylabel(text) self.axes.set_ylabel(text)
self.draw() self.draw()
@ -142,12 +142,12 @@ class MPLWidget(FigureCanvas):
def insertLabel(self, pos, text): def insertLabel(self, pos, text):
pos = pos / max(self.axes.ylim) pos = pos / max(self.axes.ylim)
axann = self.axes.annotate(text, xy=(.03, pos), xycoords='axes fraction') axann = self.axes.annotate(text, xy=(.03, pos),
xycoords='axes fraction')
axann.set_bbox(dict(facecolor='lightgrey', alpha=.6)) axann.set_bbox(dict(facecolor='lightgrey', alpha=.6))
class multiComponentPlot(FigureCanvas): class multiComponentPlot(FigureCanvas):
def __init__(self, data, parent=None, components='ZNE'): def __init__(self, data, parent=None, components='ZNE'):
self.data = data self.data = data
@ -211,7 +211,7 @@ class multiComponentPlot(FigureCanvas):
# plot individual component traces in separate subplots # plot individual component traces in separate subplots
for n, comp in enumerate(components): for n, comp in enumerate(components):
nsub = '{0}1{1}'.format(self.noc, n+1) nsub = '{0}1{1}'.format(self.noc, n + 1)
if n >= 1: if n >= 1:
subax = self.figure.add_subplot(nsub, sharex=self.axesdict[0]) subax = self.figure.add_subplot(nsub, sharex=self.axesdict[0])
else: else:
@ -239,7 +239,6 @@ class multiComponentPlot(FigureCanvas):
class PickDlg(QDialog): class PickDlg(QDialog):
def __init__(self, parent=None, data=None, station=None, rotate=False): def __init__(self, parent=None, data=None, station=None, rotate=False):
super(PickDlg, self).__init__(parent) super(PickDlg, self).__init__(parent)
@ -275,8 +274,8 @@ class PickDlg(QDialog):
# plot data # plot data
self.getPlotWidget().plotWFData(wfdata=self.getWFData(), self.getPlotWidget().plotWFData(wfdata=self.getWFData(),
title=self.getStation()) title=self.getStation())
self.limits = {'xlims' : self.getPlotWidget().axes.get_xlim(), self.limits = {'xlims': self.getPlotWidget().axes.get_xlim(),
'ylims' : self.getPlotWidget().axes.get_ylim()} 'ylims': self.getPlotWidget().axes.get_ylim()}
self.apd = self.getWFData() self.apd = self.getWFData()
# set plot labels # set plot labels
@ -420,9 +419,10 @@ class PickDlg(QDialog):
def selectWFData(self, channel): def selectWFData(self, channel):
component = channel[-1].upper() component = channel[-1].upper()
wfdata = Stream() wfdata = Stream()
def selectTrace(trace, components):
if trace.stats.channel[-1].upper() in components: def selectTrace(tr, components):
return trace if tr.stats.channel[-1].upper() in components:
return tr
if component == 'E' or component == 'N': if component == 'E' or component == 'N':
for trace in self.getWFData(): for trace in self.getWFData():
@ -462,10 +462,10 @@ class PickDlg(QDialog):
# see also Diehl et al. 2009 # see also Diehl et al. 2009
res_wins = { res_wins = {
'HRW' : 2., 'HRW': 2.,
'MRW' : 5., 'MRW': 5.,
'LRW' : 10., 'LRW': 10.,
'VLRW' : 15. 'VLRW': 15.
} }
result = getSNR(wfdata, (5., .5, 2.), ini_pick) result = getSNR(wfdata, (5., .5, 2.), ini_pick)
@ -501,7 +501,7 @@ class PickDlg(QDialog):
def setPick(self, gui_event): def setPick(self, gui_event):
# setting pick # setting pick
pick = gui_event.xdata # get pick time relative to the traces timeaxis not to the global pick = gui_event.xdata # get pick time relative to the traces timeaxis not to the global
channel = self.getChannelID(round(gui_event.ydata)) channel = self.getChannelID(round(gui_event.ydata))
wfdata = self.getAPD().copy().select(channel=channel) wfdata = self.getAPD().copy().select(channel=channel)
@ -512,12 +512,7 @@ class PickDlg(QDialog):
phase = self.selectPhase.currentText() phase = self.selectPhase.currentText()
# save pick times for actual phase # save pick times for actual phase
phasepicks = {} phasepicks = {'epp': epp, 'lpp': lpp, 'mpp': pick, 'spe': spe}
phasepicks['epp'] = epp
phasepicks['lpp'] = lpp
phasepicks['mpp'] = pick
phasepicks['spe'] = spe
try: try:
oldphasepick = self.picks[phase] oldphasepick = self.picks[phase]
@ -570,10 +565,10 @@ class PickDlg(QDialog):
lpp = picks['lpp'] lpp = picks['lpp']
spe = picks['spe'] spe = picks['spe']
ax.fill_between([epp, lpp],ylims[0], ylims[1], alpha=.5, color='c') ax.fill_between([epp, lpp], ylims[0], ylims[1], alpha=.5, color='c')
ax.plot([mpp-spe, mpp-spe], ylims, 'c--', ax.plot([mpp - spe, mpp - spe], ylims, 'c--',
[mpp, mpp], ylims, 'b-', [mpp, mpp], ylims, 'b-',
[mpp+spe, mpp+spe], ylims, 'c--') [mpp + spe, mpp + spe], ylims, 'c--')
self.getPlotWidget().draw() self.getPlotWidget().draw()
@ -648,7 +643,7 @@ class PickDlg(QDialog):
curr_ylim = widget.axes.get_ylim() curr_ylim = widget.axes.get_ylim()
if gui_event.button == 'up': if gui_event.button == 'up':
scale_factor = 1/factor scale_factor = 1 / factor
elif gui_event.button == 'down': elif gui_event.button == 'down':
# deal with zoom out # deal with zoom out
scale_factor = factor scale_factor = factor
@ -682,8 +677,8 @@ class PickDlg(QDialog):
self.apply() self.apply()
QDialog.accept(self) QDialog.accept(self)
class PropertiesDlg(QDialog):
class PropertiesDlg(QDialog):
def __init__(self, parent=None): def __init__(self, parent=None):
super(PropertiesDlg, self).__init__(parent) super(PropertiesDlg, self).__init__(parent)
@ -707,7 +702,8 @@ class PropertiesDlg(QDialog):
self.buttonBox.accepted.connect(self.accept) self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject) self.buttonBox.rejected.connect(self.reject)
self.buttonBox.button(QDialogButtonBox.Apply).clicked.connect(self.apply) self.buttonBox.button(QDialogButtonBox.Apply).clicked.connect(
self.apply)
def accept(self, *args, **kwargs): def accept(self, *args, **kwargs):
self.apply() self.apply()
@ -728,7 +724,6 @@ class PropertiesDlg(QDialog):
class PropTab(QWidget): class PropTab(QWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super(PropTab, self).__init__(parent) super(PropTab, self).__init__(parent)
@ -737,7 +732,6 @@ class PropTab(QWidget):
class InputsTab(PropTab): class InputsTab(PropTab):
def __init__(self, parent): def __init__(self, parent):
super(InputsTab, self).__init__(parent) super(InputsTab, self).__init__(parent)
@ -775,15 +769,13 @@ class InputsTab(PropTab):
self.setLayout(layout) self.setLayout(layout)
def getValues(self): def getValues(self):
values = {} values = {"data/dataRoot": self.dataDirEdit.text(),
values["data/dataRoot"] = self.dataDirEdit.text() "user/FullName": self.fullNameEdit.text(),
values["user/FullName"] = self.fullNameEdit.text() "data/Structure": self.structureSelect.currentText()}
values["data/Structure"] = self.structureSelect.currentText()
return values return values
class OutputsTab(PropTab): class OutputsTab(PropTab):
def __init__(self, parent=None): def __init__(self, parent=None):
super(OutputsTab, self).__init__(parent) super(OutputsTab, self).__init__(parent)
@ -808,12 +800,11 @@ class OutputsTab(PropTab):
self.setLayout(layout) self.setLayout(layout)
def getValues(self): def getValues(self):
values = {} values = {"output/Format": self.eventOutputComboBox.currentText()}
values["output/Format"] = self.eventOutputComboBox.currentText()
return values return values
class PhasesTab(PropTab):
class PhasesTab(PropTab):
def __init__(self, parent=None): def __init__(self, parent=None):
super(PhasesTab, self).__init__(parent) super(PhasesTab, self).__init__(parent)
@ -821,7 +812,6 @@ class PhasesTab(PropTab):
class GraphicsTab(PropTab): class GraphicsTab(PropTab):
def __init__(self, parent=None): def __init__(self, parent=None):
super(GraphicsTab, self).__init__(parent) super(GraphicsTab, self).__init__(parent)
@ -850,13 +840,12 @@ class NewEventDlg(QDialog):
self.buttonBox.rejected.connect(self.reject) self.buttonBox.rejected.connect(self.reject)
def getValues(self): def getValues(self):
return {'origintime' : self.eventTimeEdit.dateTime().toPython(), return {'origintime': self.eventTimeEdit.dateTime().toPython(),
'latitude' : self.latEdit.text(), 'latitude': self.latEdit.text(),
'longitude' : self.lonEdit.text(), 'longitude': self.lonEdit.text(),
'depth' : self.depEdit.text()} 'depth': self.depEdit.text()}
def setupUI(self): def setupUI(self):
# create widget objects # create widget objects
timeLabel = QLabel() timeLabel = QLabel()
timeLabel.setText("Select time: ") timeLabel.setText("Select time: ")
@ -887,8 +876,8 @@ class NewEventDlg(QDialog):
self.setLayout(grid) self.setLayout(grid)
class FilterOptionsDialog(QDialog):
class FilterOptionsDialog(QDialog):
def __init__(self, parent=None, titleString="Filter options", def __init__(self, parent=None, titleString="Filter options",
filterOptions=None): filterOptions=None):
""" """
@ -925,8 +914,10 @@ class FilterOptionsDialog(QDialog):
if _enable: if _enable:
self.freqminSpinBox.setValue(self.getFilterOptions().getFreq()[0]) self.freqminSpinBox.setValue(self.getFilterOptions().getFreq()[0])
if self.getFilterOptions().getFilterType() in ['bandpass', 'bandstop']: if self.getFilterOptions().getFilterType() in ['bandpass',
self.freqmaxSpinBox.setValue(self.getFilterOptions().getFreq()[1]) 'bandstop']:
self.freqmaxSpinBox.setValue(
self.getFilterOptions().getFreq()[1])
else: else:
try: try:
self.freqmaxSpinBox.setValue(self.getFilterOptions().getFreq()) self.freqmaxSpinBox.setValue(self.getFilterOptions().getFreq())
@ -963,7 +954,7 @@ class FilterOptionsDialog(QDialog):
self.freqmaxSpinBox.setEnabled(_enable) self.freqmaxSpinBox.setEnabled(_enable)
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok| self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok |
QDialogButtonBox.Cancel) QDialogButtonBox.Cancel)
grid = QGridLayout() grid = QGridLayout()
@ -980,7 +971,6 @@ class FilterOptionsDialog(QDialog):
self.buttonBox.accepted.connect(self.accept) self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject) self.buttonBox.rejected.connect(self.reject)
def updateUi(self): def updateUi(self):
_enable = False _enable = False
if self.selectTypeCombo.currentText() not in ['bandpass', 'bandstop']: if self.selectTypeCombo.currentText() not in ['bandpass', 'bandstop']:
@ -993,10 +983,9 @@ class FilterOptionsDialog(QDialog):
self.freqmaxLabel.setEnabled(_enable) self.freqmaxLabel.setEnabled(_enable)
self.freqmaxSpinBox.setEnabled(_enable) self.freqmaxSpinBox.setEnabled(_enable)
self.getFilterOptions().setFilterType(
self.getFilterOptions().setFilterType(self.selectTypeCombo.currentText()) self.selectTypeCombo.currentText())
freq = [] freq = [self.freqminSpinBox.value()]
freq.append(self.freqminSpinBox.value())
if _enable: if _enable:
if self.freqminSpinBox.value() > self.freqmaxSpinBox.value(): if self.freqminSpinBox.value() > self.freqmaxSpinBox.value():
QMessageBox.warning(self, "Value error", QMessageBox.warning(self, "Value error",
@ -1019,7 +1008,6 @@ class FilterOptionsDialog(QDialog):
class LoadDataDlg(QDialog): class LoadDataDlg(QDialog):
def __init__(self, parent=None): def __init__(self, parent=None):
super(LoadDataDlg, self).__init__(parent) super(LoadDataDlg, self).__init__(parent)
@ -1027,8 +1015,8 @@ class LoadDataDlg(QDialog):
class HelpForm(QDialog): class HelpForm(QDialog):
def __init__(self, page=QUrl('https://ariadne.geophysik.rub.de/trac/PyLoT'),
def __init__(self, page=QUrl('https://ariadne.geophysik.rub.de/trac/PyLoT'), parent=None): parent=None):
super(HelpForm, self).__init__(parent) super(HelpForm, self).__init__(parent)
self.setAttribute(Qt.WA_DeleteOnClose) self.setAttribute(Qt.WA_DeleteOnClose)
self.setAttribute(Qt.WA_GroupLeader) self.setAttribute(Qt.WA_GroupLeader)