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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user