several bugfixes, mainly on map_projection with updated pick structure as part of event class
This commit is contained in:
		
							parent
							
								
									55bc0de036
								
							
						
					
					
						commit
						d81fb3e2e9
					
				
							
								
								
									
										30
									
								
								QtPyLoT.py
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								QtPyLoT.py
									
									
									
									
									
								
							| @ -912,6 +912,7 @@ class MainWindow(QMainWindow): | |||||||
|         self.refreshTabs() |         self.refreshTabs() | ||||||
|          |          | ||||||
|     def refreshTabs(self): |     def refreshTabs(self): | ||||||
|  |         plotted=False | ||||||
|         if self._eventChanged[0] or self._eventChanged[1]: |         if self._eventChanged[0] or self._eventChanged[1]: | ||||||
|             event = self.getCurrentEvent() |             event = self.getCurrentEvent() | ||||||
|             if not event.picks: |             if not event.picks: | ||||||
| @ -927,19 +928,24 @@ class MainWindow(QMainWindow): | |||||||
|                     if len(self.project.eventlist) > 0: |                     if len(self.project.eventlist) > 0: | ||||||
|                         if self._eventChanged[0]: |                         if self._eventChanged[0]: | ||||||
|                             self.newWFplot() |                             self.newWFplot() | ||||||
|  |                             plotted=True | ||||||
|             if self.tabs.currentIndex() == 1: |             if self.tabs.currentIndex() == 1: | ||||||
|                 if self._eventChanged[1]: |                 if self._eventChanged[1]: | ||||||
|                     self.refresh_array_map() |                     self.refresh_array_map() | ||||||
|  |                     if not plotted and self._eventChanged[0]: | ||||||
|  |                         self.newWFplot(False) | ||||||
|         if self.tabs.currentIndex() == 2: |         if self.tabs.currentIndex() == 2: | ||||||
|             self.init_event_table() |             self.init_event_table() | ||||||
| 
 | 
 | ||||||
|     def newWFplot(self): |     def newWFplot(self, plot=True): | ||||||
|         self.loadWaveformDataThread() |         self.loadWaveformDataThread(plot) | ||||||
|  |         if plot: | ||||||
|             self._eventChanged[0] = False |             self._eventChanged[0] = False | ||||||
|      |      | ||||||
|     def loadWaveformDataThread(self): |     def loadWaveformDataThread(self, plot=True): | ||||||
|         wfd_thread = Thread(self, self.loadWaveformData, |         wfd_thread = Thread(self, self.loadWaveformData, | ||||||
|                             progressText='Reading data input...') |                             progressText='Reading data input...') | ||||||
|  |         if plot: | ||||||
|             wfd_thread.finished.connect(self.plotWaveformDataThread) |             wfd_thread.finished.connect(self.plotWaveformDataThread) | ||||||
|         wfd_thread.start() |         wfd_thread.start() | ||||||
|          |          | ||||||
| @ -1845,12 +1851,6 @@ class Event(object): | |||||||
|         self._testEvent = False |         self._testEvent = False | ||||||
|         self._refEvent = False |         self._refEvent = False | ||||||
| 
 | 
 | ||||||
|     def addPicks(self, picks): |  | ||||||
|         self.picks = picks |  | ||||||
| 
 |  | ||||||
|     def addAutopicks(self, autopicks): |  | ||||||
|         self.autopicks = autopicks |  | ||||||
| 
 |  | ||||||
|     def addNotes(self, notes): |     def addNotes(self, notes): | ||||||
|         self.notes = notes |         self.notes = notes | ||||||
| 
 | 
 | ||||||
| @ -1871,25 +1871,37 @@ class Event(object): | |||||||
|         self._testEvent = bool |         self._testEvent = bool | ||||||
|         if bool: self._refEvent = False |         if bool: self._refEvent = False | ||||||
| 
 | 
 | ||||||
|  |     def addPicks(self, picks): | ||||||
|  |         for station in picks: | ||||||
|  |             self.picks[station] = picks[station] | ||||||
|  |          | ||||||
|  |     def addAutopicks(self, autopicks): | ||||||
|  |         for station in autopicks: | ||||||
|  |             self.autopicks[station] = autopicks[station] | ||||||
|  |          | ||||||
|     def setPick(self, station, pick): |     def setPick(self, station, pick): | ||||||
|  |         if pick: | ||||||
|             self.picks[station] = pick |             self.picks[station] = pick | ||||||
| 
 | 
 | ||||||
|     def setPicks(self, picks): |     def setPicks(self, picks): | ||||||
|         self.picks = picks |         self.picks = picks | ||||||
|          |          | ||||||
|     def getPick(self, station): |     def getPick(self, station): | ||||||
|  |         if station in self.picks.keys(): | ||||||
|             return self.picks[station] |             return self.picks[station] | ||||||
| 
 | 
 | ||||||
|     def getPicks(self): |     def getPicks(self): | ||||||
|         return self.picks |         return self.picks | ||||||
| 
 | 
 | ||||||
|     def setAutopick(self, station, autopick): |     def setAutopick(self, station, autopick): | ||||||
|  |         if autopick: | ||||||
|             self.autopicks[station] = autopick |             self.autopicks[station] = autopick | ||||||
| 
 | 
 | ||||||
|     def setAutopicks(self, autopicks): |     def setAutopicks(self, autopicks): | ||||||
|         self.autopicks = autopicks |         self.autopicks = autopicks | ||||||
|          |          | ||||||
|     def getAutopick(self, station): |     def getAutopick(self, station): | ||||||
|  |         if station in self.autopicks.keys(): | ||||||
|             return self.autopicks[station] |             return self.autopicks[station] | ||||||
| 
 | 
 | ||||||
|     def getAutopicks(self): |     def getAutopicks(self): | ||||||
|  | |||||||
| @ -1 +1 @@ | |||||||
| ba58-dirty | 55bc-dirty | ||||||
|  | |||||||
| @ -50,7 +50,12 @@ class map_projection(QtGui.QWidget): | |||||||
|                                   station=station, |                                   station=station, | ||||||
|                                   picks=self._parent.getCurrentEvent().getPick(station), |                                   picks=self._parent.getCurrentEvent().getPick(station), | ||||||
|                                   autopicks=self._parent.getCurrentEvent().getAutopick(station)) |                                   autopicks=self._parent.getCurrentEvent().getAutopick(station)) | ||||||
|  |             except Exception as e: | ||||||
|  |                 message = 'Could not generate Plot for station {st}.\n{er}'.format(st=station, er=e) | ||||||
|  |                 self._warn(message) | ||||||
|  |                 print(message, e) | ||||||
|             pyl_mw = self._parent |             pyl_mw = self._parent | ||||||
|  |             #try: | ||||||
|             if pickDlg.exec_(): |             if pickDlg.exec_(): | ||||||
|                 pyl_mw.setDirty(True) |                 pyl_mw.setDirty(True) | ||||||
|                 pyl_mw.update_status('picks accepted ({0})'.format(station)) |                 pyl_mw.update_status('picks accepted ({0})'.format(station)) | ||||||
| @ -64,8 +69,10 @@ class map_projection(QtGui.QWidget): | |||||||
|                     pyl_mw.draw() |                     pyl_mw.draw() | ||||||
|             else: |             else: | ||||||
|                 pyl_mw.update_status('picks discarded ({0})'.format(station)) |                 pyl_mw.update_status('picks discarded ({0})'.format(station)) | ||||||
|             except Exception as e: |             # except Exception as e: | ||||||
|                 print('Could not generate Plot for station {st}.\n{er}'.format(st=station, er=e)) |             #     message = 'Could not save picks for station {st}.\n{er}'.format(st=station, er=e) | ||||||
|  |             #     self._warn(message) | ||||||
|  |             #     print(message, e) | ||||||
| 
 | 
 | ||||||
|     def connectSignals(self): |     def connectSignals(self): | ||||||
|         self.comboBox_phase.currentIndexChanged.connect(self._refresh_drawings) |         self.comboBox_phase.currentIndexChanged.connect(self._refresh_drawings) | ||||||
| @ -92,9 +99,9 @@ class map_projection(QtGui.QWidget): | |||||||
|         self.comboBox_phase.insertItem(0, 'P') |         self.comboBox_phase.insertItem(0, 'P') | ||||||
|         self.comboBox_phase.insertItem(1, 'S') |         self.comboBox_phase.insertItem(1, 'S') | ||||||
| 
 | 
 | ||||||
|         # self.comboBox_am = QtGui.QComboBox() |         self.comboBox_am = QtGui.QComboBox() | ||||||
|         # self.comboBox_am.insertItem(0, 'auto') |         self.comboBox_am.insertItem(0, 'auto') | ||||||
|         # self.comboBox_am.insertItem(1, 'manual')         |         self.comboBox_am.insertItem(1, 'manual')         | ||||||
|          |          | ||||||
|         self.top_row.addWidget(QtGui.QLabel('Select a phase: ')) |         self.top_row.addWidget(QtGui.QLabel('Select a phase: ')) | ||||||
|         self.top_row.addWidget(self.comboBox_phase) |         self.top_row.addWidget(self.comboBox_phase) | ||||||
| @ -134,7 +141,11 @@ class map_projection(QtGui.QWidget): | |||||||
| 
 | 
 | ||||||
|         def get_picks_rel(picks): |         def get_picks_rel(picks): | ||||||
|             picks_rel=[] |             picks_rel=[] | ||||||
|             minp = min(picks)     |             picks_utc = [] | ||||||
|  |             for pick in picks: | ||||||
|  |                 if type(pick) is obspy.core.utcdatetime.UTCDateTime: | ||||||
|  |                     picks_utc.append(pick) | ||||||
|  |             minp = min(picks_utc) | ||||||
|             for pick in picks: |             for pick in picks: | ||||||
|                 if type(pick) is obspy.core.utcdatetime.UTCDateTime:                 |                 if type(pick) is obspy.core.utcdatetime.UTCDateTime:                 | ||||||
|                     pick -= minp |                     pick -= minp | ||||||
| @ -148,7 +159,6 @@ class map_projection(QtGui.QWidget): | |||||||
|         def remove_nan_picks(picks): |         def remove_nan_picks(picks): | ||||||
|             picks_no_nan=[] |             picks_no_nan=[] | ||||||
|             for pick in picks: |             for pick in picks: | ||||||
|                 if pick: |  | ||||||
|                 if not np.isnan(pick): |                 if not np.isnan(pick): | ||||||
|                     picks_no_nan.append(pick) |                     picks_no_nan.append(pick) | ||||||
|             return picks_no_nan |             return picks_no_nan | ||||||
| @ -225,7 +235,18 @@ class map_projection(QtGui.QWidget): | |||||||
|         self.cid = self.canvas.mpl_connect('pick_event', self.onpick) |         self.cid = self.canvas.mpl_connect('pick_event', self.onpick) | ||||||
| 
 | 
 | ||||||
|     def scatter_picked_stations(self): |     def scatter_picked_stations(self): | ||||||
|         self.sc_picked = self.basemap.scatter(self.lon_no_nan, self.lat_no_nan, s=50, facecolor='white', |         lon = self.lon_no_nan | ||||||
|  |         lat = self.lat_no_nan | ||||||
|  | 
 | ||||||
|  |         #workaround because of an issue with latlon transformation of arrays with len <3 | ||||||
|  |         if len(lon) <= 2 and len(lat) <= 2: | ||||||
|  |             self.sc_picked = self.basemap.scatter(lon[0], lat[0], s=50, facecolor='white', | ||||||
|  |                                                   c=self.picks_no_nan[0], latlon=True, zorder=11, label='Picked') | ||||||
|  |         if len(lon) == 2 and len(lat) == 2:             | ||||||
|  |             self.sc_picked = self.basemap.scatter(lon[1], lat[1], s=50, facecolor='white', | ||||||
|  |                                                   c=self.picks_no_nan[1], latlon=True, zorder=11) | ||||||
|  |         else: | ||||||
|  |             self.sc_picked = self.basemap.scatter(lon, lat, s=50, facecolor='white', | ||||||
|                                                   c=self.picks_no_nan, latlon=True, zorder=11, label='Picked') |                                                   c=self.picks_no_nan, latlon=True, zorder=11, label='Picked') | ||||||
| 
 | 
 | ||||||
|     def annotate_ax(self): |     def annotate_ax(self): | ||||||
| @ -254,6 +275,7 @@ class map_projection(QtGui.QWidget): | |||||||
|             self.init_picks() |             self.init_picks() | ||||||
|             self.init_picks_active() |             self.init_picks_active() | ||||||
|             self.init_stations_active() |             self.init_stations_active() | ||||||
|  |             if len(self.picks_no_nan) >= 3: | ||||||
|                 self.init_picksgrid() |                 self.init_picksgrid() | ||||||
|                 self.draw_contour_filled() |                 self.draw_contour_filled() | ||||||
|         self.scatter_all_stations() |         self.scatter_all_stations() | ||||||
| @ -297,4 +319,9 @@ class map_projection(QtGui.QWidget): | |||||||
|         for annotation in self.annotations: |         for annotation in self.annotations: | ||||||
|             annotation.remove() |             annotation.remove() | ||||||
|      |      | ||||||
|  |     def _warn(self, message): | ||||||
|  |         self.qmb = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Warning, | ||||||
|  |                                      'Warning', message) | ||||||
|  |         self.qmb.show()         | ||||||
|  |              | ||||||
|      |      | ||||||
|  | |||||||
| @ -693,6 +693,7 @@ class PickDlg(QDialog): | |||||||
| 
 | 
 | ||||||
|         # finally layout the entire dialog |         # finally layout the entire dialog | ||||||
|         self.setLayout(_outerlayout) |         self.setLayout(_outerlayout) | ||||||
|  |         self.resize(1280, 720)         | ||||||
| 
 | 
 | ||||||
|     def disconnectPressEvent(self): |     def disconnectPressEvent(self): | ||||||
|         widget = self.getPlotWidget() |         widget = self.getPlotWidget() | ||||||
| @ -1390,8 +1391,12 @@ class TuneAutopicker(QWidget): | |||||||
|             if not station in stations: |             if not station in stations: | ||||||
|                 stations.append(str(station)) |                 stations.append(str(station)) | ||||||
|         stations.sort() |         stations.sort() | ||||||
|  |         model = self.stationBox.model() | ||||||
|         for station in stations: |         for station in stations: | ||||||
|             self.stationBox.addItem(str(station)) |             item = QtGui.QStandardItem(str(station)) | ||||||
|  |             if station in self.get_current_event().picks: | ||||||
|  |                 item.setBackground(QtGui.QColor(200, 210, 230, 255)) | ||||||
|  |             model.appendRow(item) | ||||||
| 
 | 
 | ||||||
|     def init_figure_tabs(self): |     def init_figure_tabs(self): | ||||||
|         self.figure_tabs = QtGui.QTabWidget() |         self.figure_tabs = QtGui.QTabWidget() | ||||||
| @ -1415,8 +1420,11 @@ class TuneAutopicker(QWidget): | |||||||
|     def add_buttons(self): |     def add_buttons(self): | ||||||
|         self.pick_button = QtGui.QPushButton('Pick Trace') |         self.pick_button = QtGui.QPushButton('Pick Trace') | ||||||
|         self.pick_button.clicked.connect(self.call_picker) |         self.pick_button.clicked.connect(self.call_picker) | ||||||
|  |         self.close_button = QtGui.QPushButton('Close') | ||||||
|  |         self.close_button.clicked.connect(self.hide) | ||||||
|         self.trace_layout.addWidget(self.pick_button) |         self.trace_layout.addWidget(self.pick_button) | ||||||
|         self.trace_layout.setStretch(0, 1) |         self.trace_layout.setStretch(0, 1) | ||||||
|  |         self.parameter_layout.addWidget(self.close_button) | ||||||
| 
 | 
 | ||||||
|     def add_log(self): |     def add_log(self): | ||||||
|         self.listWidget = QtGui.QListWidget() |         self.listWidget = QtGui.QListWidget() | ||||||
| @ -1468,6 +1476,7 @@ class TuneAutopicker(QWidget): | |||||||
|         pickDlg.update_picks.connect(self.picks_from_pickdlg) |         pickDlg.update_picks.connect(self.picks_from_pickdlg) | ||||||
|         pickDlg.update_picks.connect(self.parent.fill_eventbox) |         pickDlg.update_picks.connect(self.parent.fill_eventbox) | ||||||
|         pickDlg.update_picks.connect(self.fill_eventbox) |         pickDlg.update_picks.connect(self.fill_eventbox) | ||||||
|  |         pickDlg.update_picks.connect(self.fill_stationbox) | ||||||
|         self.pickDlg = QtGui.QWidget() |         self.pickDlg = QtGui.QWidget() | ||||||
|         hl = QtGui.QHBoxLayout() |         hl = QtGui.QHBoxLayout() | ||||||
|         self.pickDlg.setLayout(hl) |         self.pickDlg.setLayout(hl) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user