[update]added class for pick qualities window
added QComboBox to pick qualities window to enable user to choose which events to analyze
This commit is contained in:
parent
aef67407c1
commit
1d5d346cb2
20
PyLoT.py
20
PyLoT.py
@ -60,7 +60,7 @@ except ImportError:
|
|||||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||||
from matplotlib.figure import Figure
|
from matplotlib.figure import Figure
|
||||||
|
|
||||||
from pylot.core.analysis.magnitude import LocalMagnitude, MomentMagnitude
|
from pylot.core.analysis.magnitude import LocalMagnitude, MomentMagnitude, calcsourcespec
|
||||||
from pylot.core.io.data import Data
|
from pylot.core.io.data import Data
|
||||||
from pylot.core.io.inputs import FilterOptions, PylotParameter
|
from pylot.core.io.inputs import FilterOptions, PylotParameter
|
||||||
from autoPyLoT import autoPyLoT
|
from autoPyLoT import autoPyLoT
|
||||||
@ -83,7 +83,7 @@ from pylot.core.io.location import create_creation_info, create_event
|
|||||||
from pylot.core.util.widgets import FilterOptionsDialog, NewEventDlg, \
|
from pylot.core.util.widgets import FilterOptionsDialog, NewEventDlg, \
|
||||||
PylotCanvas, WaveformWidgetPG, PropertiesDlg, HelpForm, createAction, PickDlg, \
|
PylotCanvas, WaveformWidgetPG, PropertiesDlg, HelpForm, createAction, PickDlg, \
|
||||||
ComparisonWidget, TuneAutopicker, PylotParaBox, AutoPickDlg, CanvasWidget, AutoPickWidget, \
|
ComparisonWidget, TuneAutopicker, PylotParaBox, AutoPickDlg, CanvasWidget, AutoPickWidget, \
|
||||||
CompareEventsWidget, ProgressBarWidget, AddMetadataWidget, SingleTextLineDialog, LogWidget
|
CompareEventsWidget, ProgressBarWidget, AddMetadataWidget, SingleTextLineDialog, LogWidget, PickQualitiesFromXml
|
||||||
from pylot.core.util.array_map import Array_map
|
from pylot.core.util.array_map import Array_map
|
||||||
from pylot.core.util.structure import DATASTRUCTURE
|
from pylot.core.util.structure import DATASTRUCTURE
|
||||||
from pylot.core.util.thread import Thread, Worker
|
from pylot.core.util.thread import Thread, Worker
|
||||||
@ -480,9 +480,9 @@ class MainWindow(QMainWindow):
|
|||||||
"automatic pick "
|
"automatic pick "
|
||||||
"data.", False)
|
"data.", False)
|
||||||
self.compare_action.setEnabled(False)
|
self.compare_action.setEnabled(False)
|
||||||
self.qualities_action = self.createAction(parent=self, text='Show pick qualitites...',
|
self.qualities_action = self.createAction(self, 'Show pick qualitites...',
|
||||||
slot=self.pickQualities, shortcut='Alt+Q',
|
self.pickQualities, 'Alt+Q',
|
||||||
icon=qualities_icon, tip='Histogram of pick qualities')
|
qualities_icon, 'Histogram of pick qualities')
|
||||||
self.qualities_action.setEnabled(False)
|
self.qualities_action.setEnabled(False)
|
||||||
# MP MP not yet implemented, therefore hide:
|
# MP MP not yet implemented, therefore hide:
|
||||||
# LK will be implemented soon, basic script has already (03/2021) been finished
|
# LK will be implemented soon, basic script has already (03/2021) been finished
|
||||||
@ -742,6 +742,9 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
self.setCentralWidget(_widget)
|
self.setCentralWidget(_widget)
|
||||||
|
|
||||||
|
# Need to store PickQualities Window somewhere so it doesnt disappear
|
||||||
|
self.pickQualitiesWindow = None
|
||||||
|
|
||||||
def init_wfWidget(self):
|
def init_wfWidget(self):
|
||||||
xlab = self.startTime.strftime('seconds since %Y/%m/%d %H:%M:%S (%Z)')
|
xlab = self.startTime.strftime('seconds since %Y/%m/%d %H:%M:%S (%Z)')
|
||||||
plottitle = None # "Overview: {0} components ".format(self.getComponent())
|
plottitle = None # "Overview: {0} components ".format(self.getComponent())
|
||||||
@ -1670,8 +1673,10 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
def pickQualities(self):
|
def pickQualities(self):
|
||||||
path = self.get_current_event_path()
|
path = self.get_current_event_path()
|
||||||
getQualitiesfromxml(path, self._inputs.get('timeerrorsP'), self._inputs.get('timeerrorsS'), plotflag=1)
|
(_, _, plot) = getQualitiesfromxml(path, self._inputs.get('timeerrorsP'), self._inputs.get('timeerrorsS'),plotflag=1)
|
||||||
return
|
self.pickQualitiesWindow = PickQualitiesFromXml(figure=plot, path=self.get_current_event_path(),inputVar=self._inputs)
|
||||||
|
self.pickQualitiesWindow.showUI()
|
||||||
|
return
|
||||||
|
|
||||||
def eventlistXml(self):
|
def eventlistXml(self):
|
||||||
path = self._inputs['rootpath'] + '/' + self._inputs['datapath'] + '/' + self._inputs['database']
|
path = self._inputs['rootpath'] + '/' + self._inputs['datapath'] + '/' + self._inputs['database']
|
||||||
@ -3999,6 +4004,7 @@ def create_window():
|
|||||||
def main(args=None):
|
def main(args=None):
|
||||||
project_filename = None
|
project_filename = None
|
||||||
# args.project_filename = 'C:/Shared/AlpArray/alparray_data/project_alparray_test.plp'
|
# args.project_filename = 'C:/Shared/AlpArray/alparray_data/project_alparray_test.plp'
|
||||||
|
# args.project_filename = 'E:/PyLoTProjects/project1.plp'
|
||||||
pylot_infile = None
|
pylot_infile = None
|
||||||
if args:
|
if args:
|
||||||
if args.project_filename:
|
if args.project_filename:
|
||||||
|
@ -1055,7 +1055,7 @@ def merge_picks(event, picks):
|
|||||||
return event
|
return event
|
||||||
|
|
||||||
|
|
||||||
def getQualitiesfromxml(path, errorsP, errorsS, plotflag=1, figure=None, verbosity=0):
|
def getQualitiesfromxml(path, errorsP, errorsS, plotflag=1, figure=None, verbosity=0, xmlnames=[]):
|
||||||
"""
|
"""
|
||||||
Script to get onset uncertainties from Quakeml.xml files created by PyLoT.
|
Script to get onset uncertainties from Quakeml.xml files created by PyLoT.
|
||||||
Uncertainties are tranformed into quality classes and visualized via histogram if desired.
|
Uncertainties are tranformed into quality classes and visualized via histogram if desired.
|
||||||
@ -1092,7 +1092,8 @@ def getQualitiesfromxml(path, errorsP, errorsS, plotflag=1, figure=None, verbosi
|
|||||||
return plot_list, numWeights
|
return plot_list, numWeights
|
||||||
|
|
||||||
# get all xmlfiles in path (maybe this should be changed to one xml file for this function, selectable via GUI?)
|
# get all xmlfiles in path (maybe this should be changed to one xml file for this function, selectable via GUI?)
|
||||||
xmlnames = glob.glob(os.path.join(path, '*.xml'))
|
if not xmlnames:
|
||||||
|
xmlnames = glob.glob(os.path.join(os.path.dirname(path) + "/*/", '*.xml'))
|
||||||
if len(xmlnames) == 0:
|
if len(xmlnames) == 0:
|
||||||
print(f'No files found in path {path}.')
|
print(f'No files found in path {path}.')
|
||||||
return False
|
return False
|
||||||
@ -1173,6 +1174,7 @@ def getQualitiesfromxml(path, errorsP, errorsS, plotflag=1, figure=None, verbosi
|
|||||||
ax.set_title('{0} P-Qualities, {1} S-Qualities'.format(numPweights, numSweights))
|
ax.set_title('{0} P-Qualities, {1} S-Qualities'.format(numPweights, numSweights))
|
||||||
|
|
||||||
if not figure:
|
if not figure:
|
||||||
fig.show()
|
#fig.show()
|
||||||
|
pass
|
||||||
|
|
||||||
return listP, listS
|
return listP, listS, fig
|
||||||
|
@ -8,6 +8,7 @@ Created on Wed Mar 19 11:27:35 2014
|
|||||||
import copy
|
import copy
|
||||||
import datetime
|
import datetime
|
||||||
import getpass
|
import getpass
|
||||||
|
import glob
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -18,6 +19,8 @@ import traceback
|
|||||||
import matplotlib
|
import matplotlib
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
from pylot.core.io.phases import getQualitiesfromxml
|
||||||
|
|
||||||
matplotlib.use('QT5Agg')
|
matplotlib.use('QT5Agg')
|
||||||
|
|
||||||
from matplotlib.figure import Figure
|
from matplotlib.figure import Figure
|
||||||
@ -5556,6 +5559,64 @@ class HelpForm(QDialog):
|
|||||||
self.pageLabel.setText(self.webBrowser.title())
|
self.pageLabel.setText(self.webBrowser.title())
|
||||||
|
|
||||||
|
|
||||||
|
class PickQualitiesFromXml(QWidget):
|
||||||
|
"""
|
||||||
|
PyLoT widget PickQualitiesFromXml is a QWidget object. It is an UI that enables the user
|
||||||
|
to create a plot showing the pick qualities in the event selected inside the QComboBox created
|
||||||
|
by this Widget. The user can also choose to select all Events.
|
||||||
|
The plot is being shown by a FigureCanvas from matlplotlib.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, parent=None, figure=Figure(), path="", inputVar=None):
|
||||||
|
super(PickQualitiesFromXml, self).__init__(parent)
|
||||||
|
self.setWindowTitle("Get pick qualities from xml files")
|
||||||
|
self.fig = figure
|
||||||
|
self.chooseBox = QComboBox()
|
||||||
|
self.path = path
|
||||||
|
self.inputs = inputVar
|
||||||
|
self.setupUi()
|
||||||
|
|
||||||
|
|
||||||
|
def setupUi(self):
|
||||||
|
self.main_layout = QtWidgets.QVBoxLayout()
|
||||||
|
self.figureC = FigureCanvas(self.fig)
|
||||||
|
self.chooseBox = self.createComboBox()
|
||||||
|
if self.chooseBox: self.main_layout.addWidget(self.chooseBox)
|
||||||
|
self.main_layout.addWidget(self.figureC)
|
||||||
|
self.setLayout(self.main_layout)
|
||||||
|
|
||||||
|
def showUI(self):
|
||||||
|
self.show()
|
||||||
|
|
||||||
|
# Creates a QComboBox and adds all events in the current folder as options. Also gives the option to choose all events
|
||||||
|
def createComboBox(self):
|
||||||
|
self.chooseBox.addItems(glob.glob(os.path.join(os.path.dirname(self.path) + "/*/", '*.xml')))
|
||||||
|
self.chooseBox.addItem("All")
|
||||||
|
self.chooseBox.currentIndexChanged.connect(self.selectionChanged)
|
||||||
|
self.chooseBox.setCurrentIndex(self.chooseBox.count() - 1)
|
||||||
|
return self.chooseBox
|
||||||
|
|
||||||
|
# Function that gets called when the user changes the current selection in the QComboBox. Redraws the plot with the new data
|
||||||
|
def selectionChanged(self):
|
||||||
|
self.figureC.setParent(None)
|
||||||
|
if self.chooseBox.currentIndex() == self.chooseBox.count() - 1:
|
||||||
|
(_, _, plot) = getQualitiesfromxml(self.path, self.inputs.get('timeerrorsP'),
|
||||||
|
self.inputs.get('timeerrorsS'), plotflag=1)
|
||||||
|
self.figureC = FigureCanvas(plot)
|
||||||
|
else:
|
||||||
|
(_, _, plot) = getQualitiesfromxml(self.path, self.inputs.get('timeerrorsP'),
|
||||||
|
self.inputs.get('timeerrorsS'), plotflag=1,
|
||||||
|
xmlnames=[self.chooseBox.currentText()])
|
||||||
|
self.figureC = FigureCanvas(plot)
|
||||||
|
self.figureC.draw()
|
||||||
|
self.main_layout.addWidget(self.figureC)
|
||||||
|
self.setLayout(self.main_layout)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import doctest
|
import doctest
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user