[bugfixes] several fixes relating to Channel Components, main issue: SetChannelComponents object was newly initated every time. Now: One object saved inside global QSettings. Testing needed.
This commit is contained in:
parent
0fb6e5d4df
commit
6434366e55
@ -142,6 +142,9 @@ class MainWindow(QMainWindow):
|
||||
# setup UI
|
||||
self.setupUi()
|
||||
|
||||
if settings.value('compclass', None) is None:
|
||||
settings.setValue('compclass', SetChannelComponents())
|
||||
|
||||
if settings.value("user/FullName", None) is None:
|
||||
fulluser = QInputDialog.getText(self, "Enter Name:", "Full name")
|
||||
settings.setValue("user/FullName", fulluser)
|
||||
|
@ -1 +1 @@
|
||||
0430-dirty
|
||||
0fb6-dirty
|
||||
|
@ -56,27 +56,55 @@ OUTPUTFORMATS = {'.xml': 'QUAKEML',
|
||||
LOCTOOLS = dict(nll=nll, hyposat=hyposat, velest=velest, hypo71=hypo71, hypodd=hypodd)
|
||||
|
||||
|
||||
class SetChannelComponents:
|
||||
def getdefaultCompPosition():
|
||||
class SetChannelComponents(object):
|
||||
def __init__(self):
|
||||
self.setDefaultCompPosition()
|
||||
|
||||
def setDefaultCompPosition(self):
|
||||
# default component order
|
||||
CompPosition_Map = dict(Z=2, N=1, E=0)
|
||||
CompPosition_Map['1'] = 1
|
||||
CompPosition_Map['2'] = 0
|
||||
CompPosition_Map['3'] = 2
|
||||
CompName_Map = dict(Z='3', N='1', E='2')
|
||||
CompName_Map['1'] = str(1)
|
||||
CompName_Map['2'] = str(2)
|
||||
CompName_Map['3'] = str(3)
|
||||
return CompPosition_Map, CompName_Map
|
||||
self.compPosition_Map = dict(Z=2, N=1, E=0)
|
||||
self.compName_Map = {'3': 'Z',
|
||||
'1': 'N',
|
||||
'2': 'E'}
|
||||
|
||||
def _getCurrentPosition(self, component):
|
||||
for key, value in self.compName_Map.items():
|
||||
if value == component:
|
||||
return key, value
|
||||
errMsg = 'getCurrentPosition: Could not find former position of component {}.'.format(component)
|
||||
raise ValueError(errMsg)
|
||||
|
||||
CompPosition_Map, CompName_Map = getdefaultCompPosition()
|
||||
def _switch(self, component, component_alter):
|
||||
# Without switching, multiple definitions of the same alter_comp are possible
|
||||
old_alter_comp, _ = self._getCurrentPosition(component)
|
||||
old_comp = self.compName_Map[component_alter]
|
||||
if not old_alter_comp == component_alter and not old_comp == component:
|
||||
self.compName_Map[old_alter_comp] = old_comp
|
||||
print('switch: Automatically switched component {} to {}'.format(old_alter_comp, old_comp))
|
||||
|
||||
def setCompPosition(self, component, position):
|
||||
self.CompPosition_Map[component] = position
|
||||
self.CompName_Map[component] = str(position)
|
||||
def setCompPosition(self, component_alter, component, switch=True):
|
||||
component_alter = str(component_alter)
|
||||
if not component_alter in self.compName_Map.keys():
|
||||
errMsg='setCompPosition: Unrecognized alternative component {}. Expecting one of {}.'
|
||||
raise ValueError(errMsg.format(component_alter, self.compName_Map.keys()))
|
||||
if not component in self.compPosition_Map.keys():
|
||||
errMsg='setCompPosition: Unrecognized target component {}. Expecting one of {}.'
|
||||
raise ValueError(errMsg.format(component, self.compPosition_Map.keys()))
|
||||
print('setCompPosition: set component {} to {}'.format(component_alter, component))
|
||||
if switch:
|
||||
self._switch(component, component_alter)
|
||||
self.compName_Map[component_alter] = component
|
||||
|
||||
def getCompPosition(self, component):
|
||||
self.comppos = self.CompPosition_Map[component]
|
||||
self.compname = self.CompName_Map[component]
|
||||
return self.comppos, self.compname
|
||||
def getCompPosition(self, component):
|
||||
return self._getCurrentPosition(component)[0]
|
||||
|
||||
def getPlotPosition(self, component):
|
||||
component = str(component)
|
||||
if component in self.compPosition_Map.keys():
|
||||
return self.compPosition_Map[component]
|
||||
elif component in self.compName_Map.keys():
|
||||
return self.compPosition_Map[self.compName_Map[component]]
|
||||
else:
|
||||
errMsg='getCompPosition: Unrecognized component {}. Expecting one of {} or {}.'
|
||||
raise ValueError(errMsg.format(component, self.compPosition_Map.keys(), self.compName_Map.keys()))
|
||||
|
||||
|
@ -35,8 +35,7 @@ from pylot.core.io.inputs import FilterOptions, AutoPickParameter
|
||||
from pylot.core.pick.utils import getSNR, earllatepicker, getnoisewin, \
|
||||
getResolutionWindow
|
||||
from pylot.core.pick.compare import Comparison
|
||||
from pylot.core.util.defaults import OUTPUTFORMATS, FILTERDEFAULTS, LOCTOOLS, \
|
||||
SetChannelComponents
|
||||
from pylot.core.util.defaults import OUTPUTFORMATS, FILTERDEFAULTS, LOCTOOLS
|
||||
from pylot.core.util.utils import prepTimeAxis, full_range, scaleWFData, \
|
||||
demeanTrace, isSorted, findComboBoxIndex, clims
|
||||
from autoPyLoT import autoPyLoT
|
||||
@ -437,11 +436,12 @@ class WaveformWidget(FigureCanvas):
|
||||
wfstart, wfend = full_range(wfdata)
|
||||
nmax = 0
|
||||
|
||||
compclass = SetChannelComponents()
|
||||
settings = QSettings()
|
||||
compclass = settings.value('compclass')
|
||||
|
||||
if not component == '*':
|
||||
alter_comp = compclass.getCompPosition(component)
|
||||
alter_comp = str(alter_comp[0])
|
||||
#alter_comp = str(alter_comp[0])
|
||||
|
||||
wfdata = wfdata.select(component=component)
|
||||
wfdata += wfdata.select(component=alter_comp)
|
||||
@ -458,8 +458,8 @@ class WaveformWidget(FigureCanvas):
|
||||
trace = st[0]
|
||||
if mapping:
|
||||
comp = channel[-1]
|
||||
n = compclass.getCompPosition(str(comp))
|
||||
n = n[0]
|
||||
n = compclass.getPlotPosition(str(comp))
|
||||
#n = n[0]
|
||||
if n > nmax:
|
||||
nmax = n
|
||||
msg = 'plotting %s channel of station %s' % (channel, station)
|
||||
@ -480,7 +480,7 @@ class WaveformWidget(FigureCanvas):
|
||||
if iniPick:
|
||||
ax = self.getAxes()
|
||||
ax.vlines(iniPick, ax.get_ylim()[0], ax.get_ylim()[1],
|
||||
colors='green', linestyles='dashed',
|
||||
colors='m', linestyles='dashed',
|
||||
linewidth=2)
|
||||
self.setPlotDict(n, (station, channel, network))
|
||||
xlabel = 'seconds since {0}'.format(wfstart)
|
||||
@ -1109,7 +1109,8 @@ class PickDlg(QDialog):
|
||||
stime = self.getStartTime()
|
||||
stime_diff = wfdata[0].stats.starttime-stime
|
||||
|
||||
[epp, lpp, spe] = earllatepicker(wfdata, nfac, (TSNR[0], TSNR[1], TSNR[2]), pick-stime_diff, verbosity=2)
|
||||
[epp, lpp, spe] = earllatepicker(wfdata, nfac, (TSNR[0], TSNR[1], TSNR[2]),
|
||||
pick-stime_diff, verbosity=1)
|
||||
|
||||
mpp = stime + pick
|
||||
if epp:
|
||||
@ -2077,6 +2078,14 @@ class PropertiesDlg(QDialog):
|
||||
if values is not None:
|
||||
self.setValues(values)
|
||||
|
||||
def close(self):
|
||||
self.reset_current()
|
||||
QDialog.close(self)
|
||||
|
||||
def show(self):
|
||||
self.keep_current()
|
||||
QDialog.show(self)
|
||||
|
||||
def restore(self):
|
||||
for widint in range(self.tabWidget.count()):
|
||||
curwid = self.tabWidget.widget(widint)
|
||||
@ -2084,23 +2093,35 @@ class PropertiesDlg(QDialog):
|
||||
if values is not None:
|
||||
self.setValues(values)
|
||||
|
||||
def keep_current(self):
|
||||
self._current_values = []
|
||||
for widint in range(self.tabWidget.count()):
|
||||
curwid = self.tabWidget.widget(widint)
|
||||
values = curwid.getValues()
|
||||
if values is not None:
|
||||
self._current_values.append(values)
|
||||
|
||||
def reset_current(self):
|
||||
for values in self._current_values():
|
||||
self.setValues(values)
|
||||
|
||||
|
||||
@staticmethod
|
||||
def setValues(tabValues):
|
||||
settings = QSettings()
|
||||
compclass = SetChannelComponents()
|
||||
compclass = settings.value('compclass')
|
||||
for setting, value in tabValues.items():
|
||||
settings.setValue(setting, value)
|
||||
if value is not None:
|
||||
if setting.startswith('Channel Z'):
|
||||
component = 'Z'
|
||||
compclass.setCompPosition(component, value)
|
||||
compclass.setCompPosition(value, component, False)
|
||||
elif setting.startswith('Channel E'):
|
||||
component = 'E'
|
||||
compclass.setCompPosition(component, value)
|
||||
compclass.setCompPosition(value, component, False)
|
||||
elif setting.startswith('Channel N'):
|
||||
component = 'N'
|
||||
compclass.setCompPosition(component, value)
|
||||
compclass.setCompPosition(value, component, False)
|
||||
settings.sync()
|
||||
|
||||
|
||||
@ -2254,7 +2275,8 @@ class ChannelOrderTab(PropTab):
|
||||
def __init__(self, parent=None, infile=None):
|
||||
super(ChannelOrderTab, self).__init__(parent)
|
||||
|
||||
compclass = SetChannelComponents()
|
||||
settings = QSettings()
|
||||
compclass = settings.value('compclass')
|
||||
|
||||
ChannelOrderLabelZ = QLabel("Channel Z [up/down, default=3]")
|
||||
ChannelOrderLabelN = QLabel("Channel N [north/south, default=1]")
|
||||
@ -2269,9 +2291,9 @@ class ChannelOrderTab(PropTab):
|
||||
self.ChannelOrderEEdit.setMaxLength(1)
|
||||
self.ChannelOrderEEdit.setFixedSize(20, 20)
|
||||
# get channel order settings
|
||||
zpos, zcomp = compclass.getCompPosition('Z')
|
||||
epos, ecomp = compclass.getCompPosition('E')
|
||||
npos, ncomp = compclass.getCompPosition('N')
|
||||
zcomp = compclass.getCompPosition('Z')
|
||||
ecomp = compclass.getCompPosition('E')
|
||||
ncomp = compclass.getCompPosition('N')
|
||||
self.ChannelOrderZEdit.setText("%s" % zcomp)
|
||||
self.ChannelOrderNEdit.setText("%s" % ecomp)
|
||||
self.ChannelOrderEEdit.setText("%s" % ncomp)
|
||||
@ -2285,7 +2307,34 @@ class ChannelOrderTab(PropTab):
|
||||
layout.addWidget(self.ChannelOrderEEdit, 2, 1)
|
||||
|
||||
self.setLayout(layout)
|
||||
self.connectSignals()
|
||||
|
||||
def connectSignals(self):
|
||||
self.ChannelOrderZEdit.textEdited.connect(self.checkDoubleZ)
|
||||
self.ChannelOrderNEdit.textEdited.connect(self.checkDoubleN)
|
||||
self.ChannelOrderEEdit.textEdited.connect(self.checkDoubleE)
|
||||
|
||||
def checkDoubleZ(self, text):
|
||||
self.checkDouble(text, 'Z')
|
||||
|
||||
def checkDoubleN(self, text):
|
||||
self.checkDouble(text, 'N')
|
||||
|
||||
def checkDoubleE(self, text):
|
||||
self.checkDouble(text, 'E')
|
||||
|
||||
def checkDouble(self, text, comp):
|
||||
channelOrderEdits = {
|
||||
'Z': self.ChannelOrderZEdit,
|
||||
'N': self.ChannelOrderNEdit,
|
||||
'E': self.ChannelOrderEEdit
|
||||
}
|
||||
for key in channelOrderEdits.keys():
|
||||
if key == comp:
|
||||
continue
|
||||
if str(channelOrderEdits[key].text()) == str(text):
|
||||
channelOrderEdits[key].setText('')
|
||||
|
||||
def getValues(self):
|
||||
values = {"Channel Z [up/down, default=3]": int(self.ChannelOrderZEdit.text()),
|
||||
"Channel N [north/south, default=1]": int(self.ChannelOrderNEdit.text()),
|
||||
@ -2301,10 +2350,11 @@ class ChannelOrderTab(PropTab):
|
||||
"Channel E [east/west, default=2]": self.ChannelOrderEEdit.setText("%d" % Edefault)}
|
||||
return values
|
||||
|
||||
def getComponents(self):
|
||||
|
||||
self.CompName = dict(Z='10', N='11', E='12')
|
||||
# MP MP: No idea why this function exists!?
|
||||
# def getComponents(self):
|
||||
# self.CompName = dict(Z='10', N='11', E='12')
|
||||
|
||||
|
||||
class LocalisationTab(PropTab):
|
||||
def __init__(self, parent=None, infile=None):
|
||||
super(LocalisationTab, self).__init__(parent)
|
||||
|
Loading…
Reference in New Issue
Block a user