[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
|
# setup UI
|
||||||
self.setupUi()
|
self.setupUi()
|
||||||
|
|
||||||
|
if settings.value('compclass', None) is None:
|
||||||
|
settings.setValue('compclass', SetChannelComponents())
|
||||||
|
|
||||||
if settings.value("user/FullName", None) is None:
|
if settings.value("user/FullName", None) is None:
|
||||||
fulluser = QInputDialog.getText(self, "Enter Name:", "Full name")
|
fulluser = QInputDialog.getText(self, "Enter Name:", "Full name")
|
||||||
settings.setValue("user/FullName", fulluser)
|
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)
|
LOCTOOLS = dict(nll=nll, hyposat=hyposat, velest=velest, hypo71=hypo71, hypodd=hypodd)
|
||||||
|
|
||||||
|
|
||||||
class SetChannelComponents:
|
class SetChannelComponents(object):
|
||||||
def getdefaultCompPosition():
|
def __init__(self):
|
||||||
|
self.setDefaultCompPosition()
|
||||||
|
|
||||||
|
def setDefaultCompPosition(self):
|
||||||
# default component order
|
# default component order
|
||||||
CompPosition_Map = dict(Z=2, N=1, E=0)
|
self.compPosition_Map = dict(Z=2, N=1, E=0)
|
||||||
CompPosition_Map['1'] = 1
|
self.compName_Map = {'3': 'Z',
|
||||||
CompPosition_Map['2'] = 0
|
'1': 'N',
|
||||||
CompPosition_Map['3'] = 2
|
'2': 'E'}
|
||||||
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
|
|
||||||
|
|
||||||
CompPosition_Map, CompName_Map = getdefaultCompPosition()
|
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)
|
||||||
|
|
||||||
def setCompPosition(self, component, position):
|
def _switch(self, component, component_alter):
|
||||||
self.CompPosition_Map[component] = position
|
# Without switching, multiple definitions of the same alter_comp are possible
|
||||||
self.CompName_Map[component] = str(position)
|
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_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):
|
def getCompPosition(self, component):
|
||||||
self.comppos = self.CompPosition_Map[component]
|
return self._getCurrentPosition(component)[0]
|
||||||
self.compname = self.CompName_Map[component]
|
|
||||||
return self.comppos, self.compname
|
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, \
|
from pylot.core.pick.utils import getSNR, earllatepicker, getnoisewin, \
|
||||||
getResolutionWindow
|
getResolutionWindow
|
||||||
from pylot.core.pick.compare import Comparison
|
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
|
||||||
SetChannelComponents
|
|
||||||
from pylot.core.util.utils import prepTimeAxis, full_range, scaleWFData, \
|
from pylot.core.util.utils import prepTimeAxis, full_range, scaleWFData, \
|
||||||
demeanTrace, isSorted, findComboBoxIndex, clims
|
demeanTrace, isSorted, findComboBoxIndex, clims
|
||||||
from autoPyLoT import autoPyLoT
|
from autoPyLoT import autoPyLoT
|
||||||
@ -437,11 +436,12 @@ class WaveformWidget(FigureCanvas):
|
|||||||
wfstart, wfend = full_range(wfdata)
|
wfstart, wfend = full_range(wfdata)
|
||||||
nmax = 0
|
nmax = 0
|
||||||
|
|
||||||
compclass = SetChannelComponents()
|
settings = QSettings()
|
||||||
|
compclass = settings.value('compclass')
|
||||||
|
|
||||||
if not component == '*':
|
if not component == '*':
|
||||||
alter_comp = compclass.getCompPosition(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=component)
|
||||||
wfdata += wfdata.select(component=alter_comp)
|
wfdata += wfdata.select(component=alter_comp)
|
||||||
@ -458,8 +458,8 @@ class WaveformWidget(FigureCanvas):
|
|||||||
trace = st[0]
|
trace = st[0]
|
||||||
if mapping:
|
if mapping:
|
||||||
comp = channel[-1]
|
comp = channel[-1]
|
||||||
n = compclass.getCompPosition(str(comp))
|
n = compclass.getPlotPosition(str(comp))
|
||||||
n = n[0]
|
#n = n[0]
|
||||||
if n > nmax:
|
if n > nmax:
|
||||||
nmax = n
|
nmax = n
|
||||||
msg = 'plotting %s channel of station %s' % (channel, station)
|
msg = 'plotting %s channel of station %s' % (channel, station)
|
||||||
@ -480,7 +480,7 @@ class WaveformWidget(FigureCanvas):
|
|||||||
if iniPick:
|
if iniPick:
|
||||||
ax = self.getAxes()
|
ax = self.getAxes()
|
||||||
ax.vlines(iniPick, ax.get_ylim()[0], ax.get_ylim()[1],
|
ax.vlines(iniPick, ax.get_ylim()[0], ax.get_ylim()[1],
|
||||||
colors='green', linestyles='dashed',
|
colors='m', linestyles='dashed',
|
||||||
linewidth=2)
|
linewidth=2)
|
||||||
self.setPlotDict(n, (station, channel, network))
|
self.setPlotDict(n, (station, channel, network))
|
||||||
xlabel = 'seconds since {0}'.format(wfstart)
|
xlabel = 'seconds since {0}'.format(wfstart)
|
||||||
@ -1109,7 +1109,8 @@ class PickDlg(QDialog):
|
|||||||
stime = self.getStartTime()
|
stime = self.getStartTime()
|
||||||
stime_diff = wfdata[0].stats.starttime-stime
|
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
|
mpp = stime + pick
|
||||||
if epp:
|
if epp:
|
||||||
@ -2077,6 +2078,14 @@ class PropertiesDlg(QDialog):
|
|||||||
if values is not None:
|
if values is not None:
|
||||||
self.setValues(values)
|
self.setValues(values)
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.reset_current()
|
||||||
|
QDialog.close(self)
|
||||||
|
|
||||||
|
def show(self):
|
||||||
|
self.keep_current()
|
||||||
|
QDialog.show(self)
|
||||||
|
|
||||||
def restore(self):
|
def restore(self):
|
||||||
for widint in range(self.tabWidget.count()):
|
for widint in range(self.tabWidget.count()):
|
||||||
curwid = self.tabWidget.widget(widint)
|
curwid = self.tabWidget.widget(widint)
|
||||||
@ -2084,23 +2093,35 @@ class PropertiesDlg(QDialog):
|
|||||||
if values is not None:
|
if values is not None:
|
||||||
self.setValues(values)
|
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
|
@staticmethod
|
||||||
def setValues(tabValues):
|
def setValues(tabValues):
|
||||||
settings = QSettings()
|
settings = QSettings()
|
||||||
compclass = SetChannelComponents()
|
compclass = settings.value('compclass')
|
||||||
for setting, value in tabValues.items():
|
for setting, value in tabValues.items():
|
||||||
settings.setValue(setting, value)
|
settings.setValue(setting, value)
|
||||||
if value is not None:
|
if value is not None:
|
||||||
if setting.startswith('Channel Z'):
|
if setting.startswith('Channel Z'):
|
||||||
component = 'Z'
|
component = 'Z'
|
||||||
compclass.setCompPosition(component, value)
|
compclass.setCompPosition(value, component, False)
|
||||||
elif setting.startswith('Channel E'):
|
elif setting.startswith('Channel E'):
|
||||||
component = 'E'
|
component = 'E'
|
||||||
compclass.setCompPosition(component, value)
|
compclass.setCompPosition(value, component, False)
|
||||||
elif setting.startswith('Channel N'):
|
elif setting.startswith('Channel N'):
|
||||||
component = 'N'
|
component = 'N'
|
||||||
compclass.setCompPosition(component, value)
|
compclass.setCompPosition(value, component, False)
|
||||||
settings.sync()
|
settings.sync()
|
||||||
|
|
||||||
|
|
||||||
@ -2254,7 +2275,8 @@ class ChannelOrderTab(PropTab):
|
|||||||
def __init__(self, parent=None, infile=None):
|
def __init__(self, parent=None, infile=None):
|
||||||
super(ChannelOrderTab, self).__init__(parent)
|
super(ChannelOrderTab, self).__init__(parent)
|
||||||
|
|
||||||
compclass = SetChannelComponents()
|
settings = QSettings()
|
||||||
|
compclass = settings.value('compclass')
|
||||||
|
|
||||||
ChannelOrderLabelZ = QLabel("Channel Z [up/down, default=3]")
|
ChannelOrderLabelZ = QLabel("Channel Z [up/down, default=3]")
|
||||||
ChannelOrderLabelN = QLabel("Channel N [north/south, default=1]")
|
ChannelOrderLabelN = QLabel("Channel N [north/south, default=1]")
|
||||||
@ -2269,9 +2291,9 @@ class ChannelOrderTab(PropTab):
|
|||||||
self.ChannelOrderEEdit.setMaxLength(1)
|
self.ChannelOrderEEdit.setMaxLength(1)
|
||||||
self.ChannelOrderEEdit.setFixedSize(20, 20)
|
self.ChannelOrderEEdit.setFixedSize(20, 20)
|
||||||
# get channel order settings
|
# get channel order settings
|
||||||
zpos, zcomp = compclass.getCompPosition('Z')
|
zcomp = compclass.getCompPosition('Z')
|
||||||
epos, ecomp = compclass.getCompPosition('E')
|
ecomp = compclass.getCompPosition('E')
|
||||||
npos, ncomp = compclass.getCompPosition('N')
|
ncomp = compclass.getCompPosition('N')
|
||||||
self.ChannelOrderZEdit.setText("%s" % zcomp)
|
self.ChannelOrderZEdit.setText("%s" % zcomp)
|
||||||
self.ChannelOrderNEdit.setText("%s" % ecomp)
|
self.ChannelOrderNEdit.setText("%s" % ecomp)
|
||||||
self.ChannelOrderEEdit.setText("%s" % ncomp)
|
self.ChannelOrderEEdit.setText("%s" % ncomp)
|
||||||
@ -2285,6 +2307,33 @@ class ChannelOrderTab(PropTab):
|
|||||||
layout.addWidget(self.ChannelOrderEEdit, 2, 1)
|
layout.addWidget(self.ChannelOrderEEdit, 2, 1)
|
||||||
|
|
||||||
self.setLayout(layout)
|
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):
|
def getValues(self):
|
||||||
values = {"Channel Z [up/down, default=3]": int(self.ChannelOrderZEdit.text()),
|
values = {"Channel Z [up/down, default=3]": int(self.ChannelOrderZEdit.text()),
|
||||||
@ -2301,9 +2350,10 @@ class ChannelOrderTab(PropTab):
|
|||||||
"Channel E [east/west, default=2]": self.ChannelOrderEEdit.setText("%d" % Edefault)}
|
"Channel E [east/west, default=2]": self.ChannelOrderEEdit.setText("%d" % Edefault)}
|
||||||
return values
|
return values
|
||||||
|
|
||||||
def getComponents(self):
|
# MP MP: No idea why this function exists!?
|
||||||
|
# def getComponents(self):
|
||||||
|
# self.CompName = dict(Z='10', N='11', E='12')
|
||||||
|
|
||||||
self.CompName = dict(Z='10', N='11', E='12')
|
|
||||||
|
|
||||||
class LocalisationTab(PropTab):
|
class LocalisationTab(PropTab):
|
||||||
def __init__(self, parent=None, infile=None):
|
def __init__(self, parent=None, infile=None):
|
||||||
|
Loading…
Reference in New Issue
Block a user