[bugfix] saving data did not work properly due to changed variable signature; picking on just one horizontal component now possible, crash was caused by mismatching component labels -> new function added to find these labels from the available data
This commit is contained in:
parent
d953609419
commit
49b07163ad
33
QtPyLoT.py
33
QtPyLoT.py
@ -493,18 +493,18 @@ class MainWindow(QMainWindow):
|
|||||||
fname = str(action.data().toString())
|
fname = str(action.data().toString())
|
||||||
return fname
|
return fname
|
||||||
|
|
||||||
def get_fnames(self):
|
def get_fnames(self, type='manual'):
|
||||||
return self.fname
|
return self.fname[type]
|
||||||
|
|
||||||
def set_fname(self, fname, type):
|
def set_fname(self, fname, type):
|
||||||
if self.get_fnames()[type] is not None:
|
if self.get_fnames(type) is not None:
|
||||||
self.add_recentfile(self.get_fnames())
|
self.add_recentfile(self.get_fnames(type))
|
||||||
self.fname[type] = fname
|
self.fname[type] = fname
|
||||||
|
|
||||||
def getEventFileName(self):
|
def getEventFileName(self, type='manual'):
|
||||||
if self.get_fnames() is None:
|
if self.get_fnames(type) is None:
|
||||||
self.set_fname(self.get_data().getEventFileName())
|
self.set_fname(self.get_data().getEventFileName(), type)
|
||||||
return self.get_fnames()
|
return self.get_fnames(type)
|
||||||
|
|
||||||
def saveData(self):
|
def saveData(self):
|
||||||
|
|
||||||
@ -551,9 +551,26 @@ class MainWindow(QMainWindow):
|
|||||||
fbasename, exform = getSavePath(e)
|
fbasename, exform = getSavePath(e)
|
||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
fbasename, exform = getSavePath(e)
|
fbasename, exform = getSavePath(e)
|
||||||
|
|
||||||
|
# catch all possible cases before going on
|
||||||
if not fbasename:
|
if not fbasename:
|
||||||
return False
|
return False
|
||||||
|
# warn overwriting
|
||||||
|
elif os.path.exists(fbasename + exform):
|
||||||
|
ans = QMessageBox.question(self, self.tr("Overwrite file..."),
|
||||||
|
self.tr("File already exists: {0}\n".format(fbasename + exform) + \
|
||||||
|
"Overwrite file anyway?"),
|
||||||
|
QMessageBox.Cancel, QMessageBox.Yes | QMessageBox.No,
|
||||||
|
QMessageBox.Cancel)
|
||||||
|
# only negative answers have to be caught
|
||||||
|
if ans == QMessageBox.No:
|
||||||
|
self.saveData()
|
||||||
|
elif ans == QMessageBox.Cancel:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# export to given path
|
||||||
self.get_data().exportEvent(fbasename, exform)
|
self.get_data().exportEvent(fbasename, exform)
|
||||||
|
# all files save (ui clean)
|
||||||
self.setDirty(False)
|
self.setDirty(False)
|
||||||
self.update_status('Event saved as %s' % (fbasename + exform))
|
self.update_status('Event saved as %s' % (fbasename + exform))
|
||||||
return True
|
return True
|
||||||
|
@ -8,7 +8,7 @@ import os
|
|||||||
import pwd
|
import pwd
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
from obspy.core import UTCDateTime
|
from obspy import UTCDateTime, read
|
||||||
|
|
||||||
|
|
||||||
def _pickle_method(m):
|
def _pickle_method(m):
|
||||||
@ -354,6 +354,29 @@ def prepTimeAxis(stime, trace):
|
|||||||
return time_ax
|
return time_ax
|
||||||
|
|
||||||
|
|
||||||
|
def find_horizontals(data):
|
||||||
|
"""
|
||||||
|
takes `obspy.core.stream.Stream` object and returns a list containing the component labels of the horizontal components available
|
||||||
|
:param data: waveform data
|
||||||
|
:type data: `obspy.core.stream.Stream`
|
||||||
|
:return: components list
|
||||||
|
:rtype: list
|
||||||
|
|
||||||
|
..example::
|
||||||
|
|
||||||
|
>>> st = read()
|
||||||
|
>>> find_horizontals(st)
|
||||||
|
[u'N', u'E']
|
||||||
|
"""
|
||||||
|
rval = []
|
||||||
|
for tr in data:
|
||||||
|
if tr.stats.channel[-1].upper() in ['Z', '3']:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
rval.append(tr.stats.channel[-1].upper())
|
||||||
|
return rval
|
||||||
|
|
||||||
|
|
||||||
def scaleWFData(data, factor=None, components='all'):
|
def scaleWFData(data, factor=None, components='all'):
|
||||||
"""
|
"""
|
||||||
produce scaled waveforms from given waveform data and a scaling factor,
|
produce scaled waveforms from given waveform data and a scaling factor,
|
||||||
|
@ -33,7 +33,7 @@ from pylot.core.pick.compare import Comparison
|
|||||||
from pylot.core.util.defaults import OUTPUTFORMATS, FILTERDEFAULTS, LOCTOOLS, \
|
from pylot.core.util.defaults import OUTPUTFORMATS, FILTERDEFAULTS, LOCTOOLS, \
|
||||||
COMPPOSITION_MAP
|
COMPPOSITION_MAP
|
||||||
from pylot.core.util.utils import prepTimeAxis, getGlobalTimes, scaleWFData, \
|
from pylot.core.util.utils import prepTimeAxis, getGlobalTimes, scaleWFData, \
|
||||||
demeanTrace, isSorted, findComboBoxIndex, clims
|
demeanTrace, isSorted, findComboBoxIndex, clims, find_horizontals
|
||||||
|
|
||||||
|
|
||||||
def getDataType(parent):
|
def getDataType(parent):
|
||||||
@ -898,14 +898,9 @@ class PickDlg(QDialog):
|
|||||||
inoise = getnoisewin(t, ini_pick, noise_win, gap_win)
|
inoise = getnoisewin(t, ini_pick, noise_win, gap_win)
|
||||||
trace = demeanTrace(trace, inoise)
|
trace = demeanTrace(trace, inoise)
|
||||||
|
|
||||||
# account for non-oriented horizontal waveforms
|
# scale waveform for plotting
|
||||||
try:
|
horiz_comp = find_horizontals(data)
|
||||||
horiz_comp = ('n', 'e')
|
data = scaleWFData(data, noiselevel * 2.5, horiz_comp)
|
||||||
data = scaleWFData(data, noiselevel * 2.5, horiz_comp)
|
|
||||||
except IndexError as e:
|
|
||||||
print('warning: {0}'.format(e))
|
|
||||||
horiz_comp = ('1', '2')
|
|
||||||
data = scaleWFData(data, noiselevel * 2.5, horiz_comp)
|
|
||||||
|
|
||||||
x_res = getResolutionWindow(snr)
|
x_res = getResolutionWindow(snr)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user