diff --git a/PyLoT.py b/PyLoT.py index deee5399..42b81974 100755 --- a/PyLoT.py +++ b/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() diff --git a/pylot.yml b/pylot.yml index c7134cd1..892ee823 100644 --- a/pylot.yml +++ b/pylot.yml @@ -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: diff --git a/pylot/core/io/data.py b/pylot/core/io/data.py index 746df729..3c3c772a 100644 --- a/pylot/core/io/data.py +++ b/pylot/core/io/data.py @@ -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: diff --git a/pylot/core/util/array_map.py b/pylot/core/util/array_map.py index 26338f3c..ffea9bad 100644 --- a/pylot/core/util/array_map.py +++ b/pylot/core/util/array_map.py @@ -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: diff --git a/pylot/core/util/widgets.py b/pylot/core/util/widgets.py index a91b5971..9ca07add 100644 --- a/pylot/core/util/widgets.py +++ b/pylot/core/util/widgets.py @@ -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