diff --git a/QtPyLoT.py b/QtPyLoT.py index 7afd2991..8e558b5c 100755 --- a/QtPyLoT.py +++ b/QtPyLoT.py @@ -44,8 +44,8 @@ from obspy import UTCDateTime try: import pyqtgraph as pg -except: - print('QtPyLoT: Could not import pyqtgraph.') +except Exception as e: + print('QtPyLoT: Could not import pyqtgraph. {}'.format(e)) pg = None try: @@ -943,9 +943,9 @@ class MainWindow(QMainWindow): settings = QSettings() fbasename = self.getEventFileName() exform = settings.value('data/exportFormat', 'QUAKEML') - # try: - # self.get_data().applyEVTData(self.getPicks()) - # except OverwriteError: + try: + self.get_data().applyEVTData(self.getPicks()) + except OverwriteError: # msgBox = QMessageBox() # msgBox.setText("Picks have been modified!") # msgBox.setInformativeText( @@ -955,11 +955,11 @@ class MainWindow(QMainWindow): # msgBox.setDefaultButton(QMessageBox.Save) # ret = msgBox.exec_() # if ret == QMessageBox.Save: - # self.get_data().resetPicks() - # return self.saveData() + self.get_data().resetPicks() + return self.saveData() # elif ret == QMessageBox.Cancel: # return False - # MP MP changed due to new event structure not uniquely refering to data object + # MP MP changed to suppress unnecessary user prompt try: self.get_data().exportEvent(fbasename, exform) except FormatError as e: @@ -985,7 +985,6 @@ class MainWindow(QMainWindow): # export to given path self.get_data().exportEvent(fbasename, exform) # all files save (ui clean) - self.setDirty(False) self.update_status('Picks saved as %s' % (fbasename + exform)) self.disableSaveManualPicksAction() return True diff --git a/autoPyLoT.py b/autoPyLoT.py index dc597110..0df1e2cb 100755 --- a/autoPyLoT.py +++ b/autoPyLoT.py @@ -130,21 +130,35 @@ def autoPyLoT(input_dict=None, parameter=None, inputfile=None, fnames=None, even print("!!No source parameter estimation possible!!") print(" !!! ") - datapath = datastructure.expandDataPath() - if fnames == 'None' and not parameter.hasParam('eventID'): - # multiple event processing - # read each event in database - events = [events for events in glob.glob(os.path.join(datapath, '*')) if os.path.isdir(events)] - elif fnames == 'None' and parameter.hasParam('eventID'): - # single event processing - events = glob.glob(os.path.join(datapath, parameter.get('eventID'))) + if not input_dict: + # started in production mode + datapath = datastructure.expandDataPath() + if fnames == 'None' and not parameter['eventID']: + # multiple event processing + # read each event in database + events = [events for events in glob.glob(os.path.join(datapath, '*')) if os.path.isdir(events)] + elif fnames == 'None' and parameter['eventID']: + # single event processing + events = glob.glob(os.path.join(datapath, parameter.get('eventID'))) + else: + # autoPyLoT was initialized from GUI + events = [] + events.append(eventid) + evID = os.path.split(eventid)[-1] + locflag = 2 else: - # autoPyLoT was initialized from GUI + # started in tune mode + datapath = os.path.join(parameter['rootpath'], + parameter['datapath']) events = [] - events.append(eventid) - evID = os.path.split(eventid)[-1] - locflag = 2 + events.append(os.path.join(datapath, + parameter['database'], + parameter['eventID'])) + if not events: + print('autoPyLoT: No events given. Return!') + return + for event in events: if fnames == 'None': data.setWFData(glob.glob(os.path.join(datapath, event, '*'))) @@ -385,9 +399,5 @@ if __name__ == "__main__": cla = parser.parse_args() - try: - picks, mainFig = autoPyLoT(inputfile=str(cla.inputfile), fnames=str(cla.fnames), - eventid=str(cla.eventid), savepath=str(cla.spath)) - except ValueError: - print("autoPyLoT was running in production mode.") - + picks = autoPyLoT(inputfile=str(cla.inputfile), fnames=str(cla.fnames), + eventid=str(cla.eventid), savepath=str(cla.spath)) diff --git a/pylot/RELEASE-VERSION b/pylot/RELEASE-VERSION index 85433583..e1085601 100644 --- a/pylot/RELEASE-VERSION +++ b/pylot/RELEASE-VERSION @@ -1 +1 @@ -1b17-dirty +ab97-dirty diff --git a/pylot/core/io/default_parameters.py b/pylot/core/io/default_parameters.py index f304c8e0..1ae7caad 100644 --- a/pylot/core/io/default_parameters.py +++ b/pylot/core/io/default_parameters.py @@ -275,7 +275,11 @@ defaults = {'rootpath': {'type': str, 'wdttolerance': {'type': float, 'tooltip': 'maximum allowed deviation from Wadati-diagram', - 'value': 1.0} + 'value': 1.0}, + + 'localMag': {'type': float, + 'tooltip': 'maximum allowed deviation from Wadati-diagram', + 'value': 1.0} } settings_main={ @@ -297,7 +301,8 @@ settings_main={ 'smoment':[ 'vp', 'rho', - 'Qp'], + 'Qp', + 'localMag'], 'pick':[ 'extent', 'pstart', diff --git a/pylot/core/pick/picker.py b/pylot/core/pick/picker.py index 3c27e221..a6cd7452 100644 --- a/pylot/core/pick/picker.py +++ b/pylot/core/pick/picker.py @@ -239,8 +239,8 @@ class AICPicker(AutoPicker): fig = self.fig ax = fig.add_subplot(111) x = self.Data[0].data - ax.plot(self.Tcf, x / max(x), 'k', legend='(HOS-/AR-) Data') - ax.plot(self.Tcf, aicsmooth / max(aicsmooth), 'r', legend='Smoothed AIC-CF') + ax.plot(self.Tcf, x / max(x), 'k', label='(HOS-/AR-) Data') + ax.plot(self.Tcf, aicsmooth / max(aicsmooth), 'r', label='Smoothed AIC-CF') ax.legend() ax.set_xlabel('Time [s] since %s' % self.Data[0].stats.starttime) ax.set_yticks([]) diff --git a/pylot/core/util/thread.py b/pylot/core/util/thread.py index 609cf9df..5928ace3 100644 --- a/pylot/core/util/thread.py +++ b/pylot/core/util/thread.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -import sys +import sys, os from PySide.QtCore import QThread, Signal, Qt from PySide.QtGui import QDialog, QProgressBar, QLabel, QHBoxLayout @@ -64,7 +64,9 @@ class Thread(QThread): except Exception as e: self._executed = False self._executedError = e - print(e) + exc_type, exc_obj, exc_tb = sys.exc_info() + fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] + print('Exception: {}, file: {}, line: {}'.format(exc_type, fname, exc_tb.tb_lineno)) sys.stdout = sys.__stdout__ def __del__(self): diff --git a/pylot/core/util/widgets.py b/pylot/core/util/widgets.py index 46984de9..a92a7940 100644 --- a/pylot/core/util/widgets.py +++ b/pylot/core/util/widgets.py @@ -2228,6 +2228,8 @@ class AutoPickParaBox(QtGui.QWidget): if type(box) == QtGui.QLineEdit: box.setText(str(value)) elif type(box) == QtGui.QSpinBox or type(box) == QtGui.QDoubleSpinBox: + if not value: + value = 0. box.setValue(value) elif type(box) == QtGui.QCheckBox: if value == 'True':