got working window layout for postprocessing (no functions yet)

This commit is contained in:
Marcel Paffrath 2016-08-09 11:48:37 +02:00
parent 9f15376fd8
commit 28d2464aee
11 changed files with 109 additions and 46 deletions

View File

@ -9,7 +9,7 @@ matplotlib.rcParams['backend.qt4']='PySide'
from PySide import QtCore, QtGui from PySide import QtCore, QtGui
from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation
from pylot.core.active.gui.asp3d_layout import * from pylot.core.active.gui.asp3d_layout import *
from pylot.core.active.gui.windows import Gen_SeisArray, Gen_Survey_from_SA, Gen_Survey_from_SR, Call_autopicker, Call_FMTOMO, Call_VTK_dialog from pylot.core.active.gui.windows import Gen_SeisArray, Gen_Survey_from_SA, Gen_Survey_from_SR, Call_autopicker, Call_FMTOMO, Call_VTK_dialog, Postprocessing
from pylot.core.active.gui.windows import openFile, saveFile, browseDir, getMaxCPU from pylot.core.active.gui.windows import openFile, saveFile, browseDir, getMaxCPU
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
@ -43,6 +43,7 @@ class gui_control(object):
self.autopicker = None self.autopicker = None
self.fmtomo = None self.fmtomo = None
self.vtktools = None self.vtktools = None
self.postprocessing = None
def setInitStates(self): def setInitStates(self):
self.setPickState(False) self.setPickState(False)
@ -362,8 +363,9 @@ class gui_control(object):
if not self.checkSurveyState(): if not self.checkSurveyState():
self.printDialogMessage('No Survey defined.') self.printDialogMessage('No Survey defined.')
return return
self.survey.plotAllPicks() self.postprocessing = Postprocessing(self.mainwindow, self.survey)
self.refreshPickedWidgets() # wait until finished #self.survey.plotAllPicks()
#self.refreshPickedWidgets() # wait until finished
def load_survey(self): def load_survey(self):

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
import sys import sys
import math
import numpy as np import numpy as np
from pylot.core.active import seismicshot from pylot.core.active import seismicshot
from pylot.core.active.surveyUtils import cleanUp from pylot.core.active.surveyUtils import cleanUp
@ -672,10 +673,29 @@ class Survey(object):
''' '''
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import math
plt.interactive(True) plt.interactive(True)
from pylot.core.active.surveyPlotTools import regions from pylot.core.active.surveyPlotTools import regions
dist, pick, snrlog, pickerror, spe = self.preparePlotAllPicks(plotRemoved)
color = {'log10SNR': snrlog,
'pickerror': pickerror,
'spe': spe}
self.color = color
if refreshPlot is False:
ax, cbar, sc = self.createPlot(dist, pick, color[colorByVal],
label='%s' % colorByVal)
region = regions(ax, cbar, self)
ax.legend()
return (ax, region)
if refreshPlot is True:
ax, cbar, sc = self.createPlot(dist, pick, color[colorByVal],
label='%s' % colorByVal, ax=ax,
cbar=cbar)
ax.legend()
return ax
def preparePlotAllPicks(self, plotRemoved = False):
dist = [] dist = []
pick = [] pick = []
snrlog = [] snrlog = []
@ -693,23 +713,9 @@ class Survey(object):
pickerror.append(shot.getPickError(traceID)) pickerror.append(shot.getPickError(traceID))
spe.append(shot.getSymmetricPickError(traceID)) spe.append(shot.getSymmetricPickError(traceID))
color = {'log10SNR': snrlog, return dist, pick, snrlog, pickerror, spe
'pickerror': pickerror,
'spe': spe}
self.color = color
if refreshPlot is False:
ax, cbar = self.createPlot(dist, pick, color[colorByVal],
label='%s' % colorByVal)
region = regions(ax, cbar, self)
ax.legend()
return (ax, region)
if refreshPlot is True:
ax, cbar = self.createPlot(dist, pick, color[colorByVal],
label='%s' % colorByVal, ax=ax,
cbar=cbar)
ax.legend()
return ax
def createPlot(self, dist, pick, inkByVal, label, ax=None, cbar=None): def createPlot(self, dist, pick, inkByVal, label, ax=None, cbar=None):
''' '''
Used by plotAllPicks. Used by plotAllPicks.
@ -732,14 +738,15 @@ class Survey(object):
else: else:
sc = ax.scatter(dist, pick, cmap=cm, c=inkByVal, s=5, sc = ax.scatter(dist, pick, cmap=cm, c=inkByVal, s=5,
edgecolors='none', label=label) edgecolors='none', label=label)
cbar = plt.colorbar(sc, cax=cbar.ax) if cbar is not None:
cbar.set_label(label) cbar = plt.colorbar(sc, cax=cbar.ax)
cbar.set_label(label)
ax.set_xlabel('Distance [m]') ax.set_xlabel('Distance [m]')
ax.set_ylabel('Time [s]') ax.set_ylabel('Time [s]')
ax.text(0.5, 0.95, 'Plot of all picks', transform=ax.transAxes, ax.text(0.5, 0.95, 'Plot of all picks', transform=ax.transAxes,
horizontalalignment='center') horizontalalignment='center')
return (ax, cbar) return ax, cbar, sc
def _update_progress(self, shotname, tend, progress): def _update_progress(self, shotname, tend, progress):
sys.stdout.write( sys.stdout.write(
'Working on shot %s. ETC is %02d:%02d:%02d [%2.2f %%]\r' % ( 'Working on shot %s. ETC is %02d:%02d:%02d [%2.2f %%]\r' % (

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'asp3d_layout.ui' # Form implementation generated from reading ui file 'asp3d_layout.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:26 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'fmtomo_parameters_layout.ui' # Form implementation generated from reading ui file 'fmtomo_parameters_layout.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:26 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'generate_seisarray_layout.ui' # Form implementation generated from reading ui file 'generate_seisarray_layout.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:26 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'generate_survey_layout.ui' # Form implementation generated from reading ui file 'generate_survey_layout.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:26 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'generate_survey_layout_minimal.ui' # Form implementation generated from reading ui file 'generate_survey_layout_minimal.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:27 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'picking_parameters_layout.ui' # Form implementation generated from reading ui file 'picking_parameters_layout.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:27 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'postprocessing_layout.ui' # Form implementation generated from reading ui file 'postprocessing_layout.ui'
# #
# Created: Tue Aug 9 10:36:58 2016 # Created: Tue Aug 9 11:40:27 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!
@ -12,7 +12,7 @@ from PySide import QtCore, QtGui
class Ui_postprocessing(object): class Ui_postprocessing(object):
def setupUi(self, postprocessing): def setupUi(self, postprocessing):
postprocessing.setObjectName("postprocessing") postprocessing.setObjectName("postprocessing")
postprocessing.resize(640, 479) postprocessing.resize(640, 480)
self.verticalLayout_2 = QtGui.QVBoxLayout(postprocessing) self.verticalLayout_2 = QtGui.QVBoxLayout(postprocessing)
self.verticalLayout_2.setObjectName("verticalLayout_2") self.verticalLayout_2.setObjectName("verticalLayout_2")
self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout = QtGui.QVBoxLayout()
@ -91,19 +91,15 @@ class Ui_postprocessing(object):
self.horizontalLayout_3.addWidget(self.pushButton_spe) self.horizontalLayout_3.addWidget(self.pushButton_spe)
self.gridLayout.addLayout(self.horizontalLayout_3, 1, 1, 1, 1) self.gridLayout.addLayout(self.horizontalLayout_3, 1, 1, 1, 1)
self.verticalLayout.addLayout(self.gridLayout) self.verticalLayout.addLayout(self.gridLayout)
self.verticalLayout_2.addLayout(self.verticalLayout)
self.verticalLayout_plot = QtGui.QVBoxLayout()
self.verticalLayout_plot.setObjectName("verticalLayout_plot")
self.horizontalLayout_plot = QtGui.QHBoxLayout() self.horizontalLayout_plot = QtGui.QHBoxLayout()
self.horizontalLayout_plot.setObjectName("horizontalLayout_plot") self.horizontalLayout_plot.setObjectName("horizontalLayout_plot")
self.verticalLayout.addLayout(self.horizontalLayout_plot) self.verticalLayout_plot.addLayout(self.horizontalLayout_plot)
self.verticalLayout_2.addLayout(self.verticalLayout) self.verticalLayout_2.addLayout(self.verticalLayout_plot)
self.buttonBox = QtGui.QDialogButtonBox(postprocessing)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout_2.addWidget(self.buttonBox)
self.retranslateUi(postprocessing) self.retranslateUi(postprocessing)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), postprocessing.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), postprocessing.reject)
QtCore.QMetaObject.connectSlotsByName(postprocessing) QtCore.QMetaObject.connectSlotsByName(postprocessing)
def retranslateUi(self, postprocessing): def retranslateUi(self, postprocessing):

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'vtk_tools_layout.ui' # Form implementation generated from reading ui file 'vtk_tools_layout.ui'
# #
# Created: Thu Aug 4 13:55:47 2016 # Created: Tue Aug 9 11:40:27 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!

View File

@ -1,6 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from PySide import QtCore, QtGui from PySide import QtCore, QtGui
from pylot.core.active import surveyUtils, activeSeismoPick, seismicArrayPreparation, fmtomoUtils from pylot.core.active import surveyUtils, activeSeismoPick, seismicArrayPreparation, fmtomoUtils
from generate_survey_layout import Ui_generate_survey from generate_survey_layout import Ui_generate_survey
@ -8,11 +11,9 @@ from generate_survey_layout_minimal import Ui_generate_survey_minimal
from generate_seisarray_layout import Ui_generate_seisarray from generate_seisarray_layout import Ui_generate_seisarray
from picking_parameters_layout import Ui_picking_parameters from picking_parameters_layout import Ui_picking_parameters
from fmtomo_parameters_layout import Ui_fmtomo_parameters from fmtomo_parameters_layout import Ui_fmtomo_parameters
from pylot.core.active.gui.vtk_tools_layout import Ui_vtk_tools from vtk_tools_layout import Ui_vtk_tools
from postprocessing_layout import Ui_postprocessing
import numpy as np
import matplotlib
matplotlib.use('Qt4Agg') matplotlib.use('Qt4Agg')
matplotlib.rcParams['backend.qt4']='PySide' matplotlib.rcParams['backend.qt4']='PySide'
@ -597,3 +598,60 @@ class Call_VTK_dialog(object):
def newFileVTK(self): def newFileVTK(self):
self.ui.lineEdit_vgout.setText(saveFile()) self.ui.lineEdit_vgout.setText(saveFile())
class Postprocessing(object):
def __init__(self, mainwindow, survey):
self.mainwindow = mainwindow
self.survey = survey
self.init_dialog()
self.start_dialog()
def init_dialog(self):
qwidget = QtGui.QWidget()#
ui = Ui_postprocessing()
ui.setupUi(qwidget)
self.ui = ui
self.qwidget = qwidget
self.initPlot()
self.plot()
#self.connectButtons()
def start_dialog(self):
self.qwidget.show()
# if self.qwidget.exec_():
# #self.refresh_selection()
# self.executed = True
# else:
# self.refresh_selection()
# self.executed = False
def initPlot(self):
self.figure = Figure()
self.canvas = FigureCanvas(self.figure)
self.ui.verticalLayout_plot.addWidget(self.canvas)
self.toolbar = NavigationToolbar(self.canvas, self.mainwindow)
self.ui.verticalLayout_plot.addWidget(self.toolbar)
def plot(self):
survey = self.survey
ax = self.figure.add_subplot(111)
dist, pick, snrlog, pickerror, spe = survey.preparePlotAllPicks(plotRemoved = False)
ax, cbar, sc = survey.createPlot(dist, pick, snrlog, '123', ax = ax, cbar = None)
self.cbar = self.figure.colorbar(sc, fraction=0.05)
self.ax = ax
# def refresh_selection(self):
# self.obsdir = self.ui.lineEdit_obs.text()
# self.fstart = self.ui.fstart.text()
# self.fend = self.ui.fend.text()
def update_survey(self, survey):
self.survey = survey
def get_survey(self):
return self.survey
# def connectButtons(self):
# QtCore.QObject.connect(self.ui.pushButton_obs, QtCore.SIGNAL("clicked()"), self.chooseObsdir)
# def chooseObsdir(self):
# self.ui.lineEdit_obs.setText(browseDir('Choose observation directory.'))