Implemented merge suggestions #11
This commit is contained in:
parent
a738dc57ec
commit
321a871d62
7
PyLoT.py
7
PyLoT.py
@ -36,10 +36,6 @@ import traceback
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
# set environment variables to use Qt5 and don't convert to Qt4 syntax
|
||||
# os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5'
|
||||
# os.environ["QT_API"] = "pyqt5"
|
||||
|
||||
matplotlib.use('Qt5Agg')
|
||||
|
||||
from PySide2 import QtGui, QtCore, QtWidgets
|
||||
@ -3249,8 +3245,6 @@ class MainWindow(QMainWindow):
|
||||
'auto': event.pylot_autopicks}
|
||||
ma_count = {'manual': 0,
|
||||
'auto': 0}
|
||||
#ma_count_total = {'manual': 0,
|
||||
# 'auto': 0}
|
||||
|
||||
for ma in ma_props.keys():
|
||||
if ma_props[ma]:
|
||||
@ -3260,7 +3254,6 @@ class MainWindow(QMainWindow):
|
||||
continue
|
||||
if pick.get('spe'):
|
||||
ma_count[ma] += 1
|
||||
#ma_count_total[ma] += 1
|
||||
|
||||
# init table items for current row
|
||||
item_delete = QTableWidgetItem()
|
||||
|
@ -115,4 +115,4 @@ dependencies:
|
||||
- zipp=3.4.1=pyhd8ed1ab_0
|
||||
- zlib=1.2.11=h516909a_1010
|
||||
- zstd=1.4.9=ha95c52a_0
|
||||
prefix: /home/kaan/.conda/envs/pylot_py35
|
||||
prefix:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env pyth n
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import copy
|
||||
@ -21,10 +21,6 @@ from pylot.core.util.obspyDMT_interface import qml_from_obspyDMT
|
||||
from pylot.core.util.utils import fnConstructor, full_range, check4rotated, \
|
||||
check4gapsAndMerge, trim_station_components
|
||||
|
||||
try:
|
||||
str_TypeLst = [str, unicode] # if python 2.X
|
||||
except NameError:
|
||||
str_TypeLst = [str] # if python 3.*
|
||||
|
||||
class Data(object):
|
||||
"""
|
||||
@ -52,7 +48,7 @@ class Data(object):
|
||||
elif isinstance(evtdata, dict):
|
||||
evt = readPILOTEvent(**evtdata)
|
||||
evtdata = evt
|
||||
elif type(evtdata) in str_TypeLst:
|
||||
elif isinstance(evtdata, str):
|
||||
try:
|
||||
cat = read_events(evtdata)
|
||||
if len(cat) != 1:
|
||||
|
@ -8,16 +8,12 @@ import matplotlib
|
||||
from PySide2 import QtCore, QtGui, QtWidgets
|
||||
from PySide2.QtCore import Qt
|
||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
|
||||
from matplotlib.figure import Figure
|
||||
import matplotlib.patheffects as PathEffects
|
||||
|
||||
import cartopy.crs as ccrs
|
||||
import matplotlib.pyplot as plt
|
||||
import cartopy.feature as cf
|
||||
import cartopy.io.shapereader as shpr
|
||||
from cartopy.feature import ShapelyFeature
|
||||
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
|
||||
from cartopy.mpl.gridliner import LongitudeFormatter, LatitudeFormatter
|
||||
|
||||
import traceback
|
||||
import obspy
|
||||
@ -30,7 +26,6 @@ from pylot.core.pick.utils import get_quality_class
|
||||
matplotlib.use('Qt5Agg')
|
||||
|
||||
|
||||
|
||||
class MplCanvas(FigureCanvas):
|
||||
|
||||
def __init__(self, parent=None, extern_axes=None, width=5, height=4, dpi=100):
|
||||
@ -47,7 +42,6 @@ class MplCanvas(FigureCanvas):
|
||||
class Array_map(QtWidgets.QWidget):
|
||||
def __init__(self, parent, metadata, parameter=None, axes=None, annotate=True, pointsize=25.,
|
||||
linewidth=1.5, width=5e6, height=2e6):
|
||||
# super(Array_map, self).__init__(parent)
|
||||
QtWidgets.QWidget.__init__(self)
|
||||
|
||||
assert (parameter is not None or parent is not None), 'either parent or parameter has to be set'
|
||||
@ -95,7 +89,7 @@ class Array_map(QtWidgets.QWidget):
|
||||
|
||||
def init_graphics(self):
|
||||
"""
|
||||
Initializes all GUI components and figure elements to be populeted by other functions
|
||||
Initializes all GUI components and figure elements to be populated by other functions
|
||||
"""
|
||||
# initialize figure elements
|
||||
|
||||
@ -111,7 +105,6 @@ class Array_map(QtWidgets.QWidget):
|
||||
self.map_reset_button = QtWidgets.QPushButton('Reset Map View')
|
||||
self.save_map_button = QtWidgets.QPushButton('Save Map')
|
||||
self.go2eq_button = QtWidgets.QPushButton('Go to Event Location')
|
||||
# self.map_reset_button.resize(150, 50)
|
||||
|
||||
self.main_box = QtWidgets.QVBoxLayout()
|
||||
self.setLayout(self.main_box)
|
||||
@ -151,7 +144,6 @@ class Array_map(QtWidgets.QWidget):
|
||||
self.top_row.addWidget(self.refresh_button)
|
||||
|
||||
self.main_box.addWidget(self.plotWidget, 1)
|
||||
# self.main_box.addWidget(NavigationToolbar(self.plotWidget, self), 0)
|
||||
|
||||
self.bot_row = QtWidgets.QHBoxLayout()
|
||||
self.main_box.addLayout(self.bot_row, 0.3)
|
||||
@ -177,21 +169,17 @@ class Array_map(QtWidgets.QWidget):
|
||||
# parallels and meridians
|
||||
self.add_merid_paral()
|
||||
|
||||
# self.canvas.axes.set_global()
|
||||
self.canvas.fig.tight_layout()
|
||||
# self.plotWidget.draw_idle()
|
||||
|
||||
def add_merid_paral(self):
|
||||
self.gridlines = self.canvas.axes.gridlines(draw_labels=False, alpha=0.8, color='gray', linewidth=self.linewidth/2, zorder=7)
|
||||
# current cartopy version does not support label removal. Devs are working on it.
|
||||
# Should be fixed with next cartopy version
|
||||
# TODO: current cartopy version does not support label removal. Devs are working on it.
|
||||
# Should be fixed with next cartopy version
|
||||
# self.gridlines.xformatter = LONGITUDE_FORMATTER
|
||||
# self.gridlines.yformatter = LATITUDE_FORMATTER
|
||||
|
||||
def remove_merid_paral(self):
|
||||
if len(self.gridlines.xline_artists):
|
||||
# for i in self.gridlines.xline_artists:
|
||||
# i.remove()
|
||||
self.gridlines.xline_artists[0].remove()
|
||||
self.gridlines.yline_artists[0].remove()
|
||||
|
||||
@ -477,8 +465,6 @@ class Array_map(QtWidgets.QWidget):
|
||||
facecolors='none', zorder=12,
|
||||
transform=ccrs.PlateCarree(), label='deleted'))
|
||||
|
||||
# self.canvas.idle_draw()
|
||||
|
||||
def openPickDlg(self, ind):
|
||||
data = self._parent.get_data().getWFData()
|
||||
for index in ind:
|
||||
|
@ -53,13 +53,12 @@ from pylot.core.util.utils import prepTimeAxis, full_range, demeanTrace, isSorte
|
||||
pick_linestyle_plt, pick_color_plt, \
|
||||
check4rotated, check4doubled, merge_stream, identifyPhase, \
|
||||
loopIdentifyPhase, trim_station_components, transformFilteroptions2String, \
|
||||
identifyPhaseID, get_Bool, get_None, pick_color, getAutoFilteroptions, SetChannelComponents,\
|
||||
identifyPhaseID, get_Bool, get_None, pick_color, getAutoFilteroptions, SetChannelComponents, \
|
||||
station_id_remove_channel
|
||||
from autoPyLoT import autoPyLoT
|
||||
from pylot.core.util.thread import Thread
|
||||
from pylot.core.util.dataprocessing import Metadata
|
||||
|
||||
|
||||
if sys.version_info.major == 3:
|
||||
import icons_rc_3 as icons_rc
|
||||
elif sys.version_info.major == 2:
|
||||
@ -67,6 +66,7 @@ elif sys.version_info.major == 2:
|
||||
else:
|
||||
raise ImportError('Could not determine python version.')
|
||||
|
||||
|
||||
# workaround to prevent PyCharm from deleting icons_rc import when optimizing imports
|
||||
# icons_rc = icons_rc
|
||||
|
||||
@ -302,7 +302,7 @@ class AddMetadataWidget(QWidget):
|
||||
item = QtGui.QStandardItem(inventory_path)
|
||||
item.setEditable(False)
|
||||
self.inventories_add.append(inventory_path)
|
||||
self.list_model.appendRow(item) # adds path to visible list
|
||||
self.list_model.appendRow(item) # adds path to visible list
|
||||
self.selection_box.setText("")
|
||||
|
||||
def remove_item(self):
|
||||
@ -313,8 +313,8 @@ class AddMetadataWidget(QWidget):
|
||||
"""
|
||||
for index in reversed(sorted(self.list_view.selectionModel().selectedIndexes())):
|
||||
item = self.list_model.itemData(index)
|
||||
inventory_path = item[0] # marked path
|
||||
self.list_model.removeRow(index.row()) # aus der Anzeige-Liste gelöscht
|
||||
inventory_path = item[0] # marked path
|
||||
self.list_model.removeRow(index.row()) # aus der Anzeige-Liste gelöscht
|
||||
if inventory_path in self.inventories_add:
|
||||
self.inventories_add.remove(inventory_path)
|
||||
else:
|
||||
@ -876,7 +876,8 @@ class WaveformWidgetPG(QtWidgets.QWidget):
|
||||
times = np.array([time for index, time in enumerate(time_ax) if not index % nth_sample])
|
||||
times_syn = np.array(
|
||||
[time for index, time in enumerate(time_ax_syn) if not index % nth_sample] if st_syn else [])
|
||||
trace.data = np.array([datum * gain + n for index, datum in enumerate(trace.data) if not index % nth_sample])
|
||||
trace.data = np.array(
|
||||
[datum * gain + n for index, datum in enumerate(trace.data) if not index % nth_sample])
|
||||
trace_syn.data = np.array([datum + n for index, datum in enumerate(trace_syn.data)
|
||||
if not index % nth_sample] if st_syn else [])
|
||||
plots.append((times, trace.data,
|
||||
@ -1518,8 +1519,6 @@ class SingleTextLineDialog(QtWidgets.QDialog):
|
||||
self._buttonbox.rejected.connect(self.reject)
|
||||
|
||||
|
||||
|
||||
|
||||
class PhaseDefaults(QtWidgets.QDialog):
|
||||
def __init__(self, parent=None, nrow=10,
|
||||
phase_defaults=['P', 'S'],
|
||||
@ -2236,7 +2235,6 @@ class PickDlg(QDialog):
|
||||
self.draw()
|
||||
else:
|
||||
self.draw()
|
||||
# self.pick_block = self.togglePickBlocker()
|
||||
self.disconnect_pick_delete()
|
||||
|
||||
def deactivatePicking(self):
|
||||
@ -2447,7 +2445,7 @@ class PickDlg(QDialog):
|
||||
data.normalize()
|
||||
if not data:
|
||||
QtWidgets.QMessageBox.warning(self, 'No channel to plot',
|
||||
'No channel to plot for phase: {}.'.format(phase))
|
||||
'No channel to plot for phase: {}.'.format(phase))
|
||||
self.leave_picking_mode()
|
||||
return
|
||||
|
||||
@ -2461,7 +2459,8 @@ class PickDlg(QDialog):
|
||||
# wfdata.filter(**filteroptions)# MP MP removed filtering of original data
|
||||
except ValueError as e:
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Information,
|
||||
'Denied', 'setIniPick{}: Could not filter waveform: {}'.format(phase, e))
|
||||
'Denied',
|
||||
'setIniPick{}: Could not filter waveform: {}'.format(phase, e))
|
||||
self.qmb.show()
|
||||
|
||||
snr = []
|
||||
@ -2546,7 +2545,7 @@ class PickDlg(QDialog):
|
||||
wfdata.filter(**filteroptions)
|
||||
except ValueError as e:
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Information,
|
||||
'Denied', 'setPick: Could not filter waveform: {}'.format(e))
|
||||
'Denied', 'setPick: Could not filter waveform: {}'.format(e))
|
||||
self.qmb.show()
|
||||
|
||||
# get earliest and latest possible pick and symmetric pick error
|
||||
@ -2586,9 +2585,8 @@ class PickDlg(QDialog):
|
||||
minFMSNR = parameter.get('minFMSNR')
|
||||
quality = get_quality_class(spe, parameter.get('timeerrorsP'))
|
||||
if quality <= minFMweight and snr >= minFMSNR:
|
||||
FM = fmpicker(self.getWFData().select(channel=channel), wfdata, parameter.get('fmpickwin'),
|
||||
pick -stime_diff)
|
||||
|
||||
FM = fmpicker(self.getWFData().select(channel=channel), wfdata, parameter.get('fmpickwin'),
|
||||
pick - stime_diff)
|
||||
|
||||
# save pick times for actual phase
|
||||
phasepicks = dict(epp=epp, lpp=lpp, mpp=mpp, spe=spe, fm=FM,
|
||||
@ -2603,8 +2601,6 @@ class PickDlg(QDialog):
|
||||
self.disconnectPressEvent()
|
||||
self.enable_ar_buttons()
|
||||
self.zoomAction.setEnabled(True)
|
||||
# self.pick_block = self.togglPickBlocker()
|
||||
# self.resetZoom()
|
||||
|
||||
self.leave_picking_mode()
|
||||
|
||||
@ -2618,7 +2614,7 @@ class PickDlg(QDialog):
|
||||
|
||||
def warn_unknown_phase(self, phase=None):
|
||||
QtWidgets.QMessageBox.warning(self, 'Unknown phase ID',
|
||||
'Could not identify phase ID: {}.'.format(phase))
|
||||
'Could not identify phase ID: {}.'.format(phase))
|
||||
|
||||
def disconnectPressEvent(self):
|
||||
self.multicompfig.mpl_disconnect(self.cidpress)
|
||||
@ -2799,7 +2795,7 @@ class PickDlg(QDialog):
|
||||
self.renamePhaseInDict(picks, phase, new_phase)
|
||||
except KeyError as e:
|
||||
QtWidgets.QMessageBox.warning(self, 'Could not rename phase',
|
||||
'Could not rename phase {} to {}: {}'.format(phase, new_phase, e))
|
||||
'Could not rename phase {} to {}: {}'.format(phase, new_phase, e))
|
||||
self.leave_rename_phase()
|
||||
self.refreshPlot()
|
||||
|
||||
@ -2906,11 +2902,6 @@ class PickDlg(QDialog):
|
||||
if phase:
|
||||
filtoptions = self.getFilterOptions(self.getPhaseID(phase), gui_filter=True).parseFilterOptions()
|
||||
|
||||
# if self.filterActionP.isChecked() or self.filterActionS.isChecked():
|
||||
# if not phase:
|
||||
# filtoptions = FilterOptionsDialog.getFilterObject()
|
||||
# filtoptions = filtoptions.parseFilterOptions()
|
||||
|
||||
if filtoptions is not None:
|
||||
data.detrend('linear')
|
||||
data.taper(0.02, type='cosine')
|
||||
@ -3029,8 +3020,6 @@ class PickDlg(QDialog):
|
||||
|
||||
# set channel labels
|
||||
self.multicompfig.setYTickLabels(pos, labels)
|
||||
# self.multicompfig.setXLims(ax, self.getXLims())
|
||||
# self.multicompfig.setYLims(ax, self.getYLims())
|
||||
|
||||
def zoom(self):
|
||||
if self.zoomAction.isChecked() and self.pick_block:
|
||||
@ -3065,7 +3054,7 @@ class PickDlg(QDialog):
|
||||
else:
|
||||
self.refreshPlot()
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Information,
|
||||
'Denied', 'New picks rejected!')
|
||||
'Denied', 'New picks rejected!')
|
||||
self.qmb.show()
|
||||
|
||||
def accept(self):
|
||||
@ -3074,7 +3063,7 @@ class PickDlg(QDialog):
|
||||
QDialog.accept(self)
|
||||
else:
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Information,
|
||||
'Accepted', 'New picks applied!')
|
||||
'Accepted', 'New picks applied!')
|
||||
self.qmb.show()
|
||||
|
||||
|
||||
@ -3092,7 +3081,7 @@ class CanvasWidget(QWidget):
|
||||
'''
|
||||
|
||||
def __init__(self, parent, canvas):
|
||||
QtWidgets.QWidget.__init__(self, parent)#, 1)
|
||||
QtWidgets.QWidget.__init__(self, parent) # , 1)
|
||||
canvas = canvas
|
||||
self.main_layout = QtWidgets.QVBoxLayout()
|
||||
self.setLayout(self.main_layout)
|
||||
@ -3812,7 +3801,7 @@ class TuneAutopicker(QWidget):
|
||||
'savexml': False,
|
||||
'obspyDMT_wfpath': wfpath}
|
||||
event = self.get_current_event()
|
||||
#self.parent().saveData(event, event.path, '.xml') MP MP uncommented because overwriting pick files in tune mode
|
||||
# self.parent().saveData(event, event.path, '.xml') MP MP uncommented because overwriting pick files in tune mode
|
||||
for key in self.fig_dict.keys():
|
||||
if not key == 'plot_style':
|
||||
self.fig_dict[key].clear()
|
||||
@ -3888,7 +3877,7 @@ class TuneAutopicker(QWidget):
|
||||
|
||||
def _warn(self, message, info=None):
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Warning,
|
||||
'Warning', message)
|
||||
'Warning', message)
|
||||
self.qmb.setDetailedText(str(info))
|
||||
self.qmb.show()
|
||||
|
||||
@ -4131,7 +4120,7 @@ class PylotParaBox(QtWidgets.QWidget):
|
||||
layout = QtWidgets.QVBoxLayout()
|
||||
dialog.setLayout(layout)
|
||||
buttonbox = QtWidgets.QDialogButtonBox(QDialogButtonBox.Ok |
|
||||
QDialogButtonBox.Cancel)
|
||||
QDialogButtonBox.Cancel)
|
||||
buttonbox.accepted.connect(dialog.accept)
|
||||
buttonbox.accepted.connect(self.refresh)
|
||||
buttonbox.accepted.connect(self.params_from_gui)
|
||||
@ -4315,7 +4304,7 @@ class PylotParaBox(QtWidgets.QWidget):
|
||||
|
||||
def _warn(self, message):
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Warning,
|
||||
'Warning', message)
|
||||
'Warning', message)
|
||||
self.qmb.show()
|
||||
|
||||
|
||||
@ -4685,7 +4674,7 @@ class InputsTab(PropTab):
|
||||
"data/Structure": self.structureSelect.setCurrentIndex(index),
|
||||
"tstart": self.tstartBox.setValue(0),
|
||||
"tstop": self.tstopBox.setValue(1e6),
|
||||
"autosaveXML": self.autosaveXML_checkbox.setChecked(True),}
|
||||
"autosaveXML": self.autosaveXML_checkbox.setChecked(True), }
|
||||
return values
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user