diff --git a/pylot/RELEASE-VERSION b/pylot/RELEASE-VERSION index e760bf7c..30ada269 100644 --- a/pylot/RELEASE-VERSION +++ b/pylot/RELEASE-VERSION @@ -1 +1 @@ -8714-dirty +55a58-dirty diff --git a/pylot/core/active/ActiveSeismoPick3D_GUI.py b/pylot/core/active/ActiveSeismoPick3D_GUI.py index 01449aec..558fddc8 100755 --- a/pylot/core/active/ActiveSeismoPick3D_GUI.py +++ b/pylot/core/active/ActiveSeismoPick3D_GUI.py @@ -1,19 +1,17 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- import os +import sys import matplotlib matplotlib.use('Qt4Agg') matplotlib.rcParams['backend.qt4']='PySide' -from PySide import QtCore, QtGui, QtCore -from asp3d_layout import * -from fmtomo_parameters_layout import * -from generate_survey_layout import * -from generate_survey_layout_minimal import * -from generate_seisarray_layout import * -from picking_parameters_layout import * -from vtk_tools_layout import * +from PySide import QtCore, QtGui from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation +from pylot.core.active.gui.asp3d_layout import * +from pylot.core.active.gui.vtk_tools_layout import * +from pylot.core.active.gui.windows import Gen_SeisArray, Gen_Survey_from_SA, Gen_Survey_from_SR, Call_autopicker, Call_FMTOMO +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 NavigationToolbar2QT as NavigationToolbar @@ -37,6 +35,14 @@ class gui_control(object): self.mainUI.progressBar.setVisible(False) self.printSurveyTextbox() self.printSeisArrayTextbox() + self.initWindowObjects() + + def initWindowObjects(self): + self.gsa = None + self.gssa = None + self.gssr = None + self.autopicker = None + self.fmtomo = None def setInitStates(self): self.setPickState(False) @@ -45,18 +51,19 @@ class gui_control(object): self.setConnected2SurveyState(False) def connectButtons(self): - QtCore.QObject.connect(self.mainUI.gen_new_seisarray, QtCore.SIGNAL("clicked()"), self.gen_seisarray) - QtCore.QObject.connect(self.mainUI.load_seisarray, QtCore.SIGNAL("clicked()"), self.load_seisarray) - QtCore.QObject.connect(self.mainUI.save_seisarray, QtCore.SIGNAL("clicked()"), self.save_seisarray) - QtCore.QObject.connect(self.mainUI.connect_to_survey, QtCore.SIGNAL("clicked()"), self.connect2Survey) - QtCore.QObject.connect(self.mainUI.interpolate_receivers, QtCore.SIGNAL("clicked()"), self.interpolate_receivers) - QtCore.QObject.connect(self.mainUI.gen_new_survey, QtCore.SIGNAL("clicked()"), self.gen_survey) - QtCore.QObject.connect(self.mainUI.load_survey, QtCore.SIGNAL("clicked()"), self.load_survey) - QtCore.QObject.connect(self.mainUI.save_survey, QtCore.SIGNAL("clicked()"), self.save_survey) - QtCore.QObject.connect(self.mainUI.picker, QtCore.SIGNAL("clicked()"), self.callPicker) - QtCore.QObject.connect(self.mainUI.postprocessing, QtCore.SIGNAL("clicked()"), self.postprocessing) - QtCore.QObject.connect(self.mainUI.fmtomo, QtCore.SIGNAL("clicked()"), self.startFMTOMO) - QtCore.QObject.connect(self.mainUI.vtk_tools, QtCore.SIGNAL("clicked()"), self.startVTKtools) + QtCore.QObject.connect(self.mainUI.actionGenerate_new_Seismic_Array, QtCore.SIGNAL("triggered()"), self.gen_seisarray) + QtCore.QObject.connect(self.mainUI.actionLoad_Seismic_Array, QtCore.SIGNAL("triggered()"), self.load_seisarray) + QtCore.QObject.connect(self.mainUI.actionSave_Seismic_Array, QtCore.SIGNAL("triggered()"), self.save_seisarray) + QtCore.QObject.connect(self.mainUI.actionLoad_Survey, QtCore.SIGNAL("triggered()"), self.load_survey) + QtCore.QObject.connect(self.mainUI.actionSave_Survey, QtCore.SIGNAL("triggered()"), self.save_survey) + QtCore.QObject.connect(self.mainUI.actionConnect_to_Survey, QtCore.SIGNAL("triggered()"), self.connect2Survey) + QtCore.QObject.connect(self.mainUI.actionInterpolate_Receivers, QtCore.SIGNAL("triggered()"), self.interpolate_receivers) + QtCore.QObject.connect(self.mainUI.actionGenerate_new_Survey, QtCore.SIGNAL("triggered()"), self.gen_survey) + QtCore.QObject.connect(self.mainUI.actionAutomatic_Picking, QtCore.SIGNAL("triggered()"), self.startPicker) + QtCore.QObject.connect(self.mainUI.actionPostprocessing, QtCore.SIGNAL("triggered()"), self.postprocessing) + QtCore.QObject.connect(self.mainUI.actionStart_FMTOMO_Simulation, QtCore.SIGNAL("triggered()"), self.startFMTOMO) + QtCore.QObject.connect(self.mainUI.actionVTK_Visualization, QtCore.SIGNAL("triggered()"), self.startVTKtools) + QtCore.QObject.connect(self.mainUI.actionExit, QtCore.SIGNAL("triggered()"), self.exitApp) QtCore.QObject.connect(self.mainUI.comboBox_stats, QtCore.SIGNAL("activated(int)"), self.refreshPickedWidgets) QtCore.QObject.connect(self.mainUI.shot_left, QtCore.SIGNAL("clicked()"), self.decreaseShotnumber) QtCore.QObject.connect(self.mainUI.shot_right, QtCore.SIGNAL("clicked()"), self.increaseShotnumber) @@ -74,81 +81,57 @@ class gui_control(object): else: self.survey.seisarray = None disconnect = True - qdialog = QtGui.QDialog(self.mainwindow) - ui = Ui_generate_seisarray() - ui.setupUi(qdialog) - self.gen_new_seisarray = ui - self.connectButtons_gen_seisarray() - if qdialog.exec_(): - srcfile = self.gen_new_seisarray.lineEdit_src.text() - recfile = self.gen_new_seisarray.lineEdit_rec.text() - ptsfile = self.gen_new_seisarray.lineEdit_pts.text() - if self.gen_new_seisarray.radioButton_interpolatable.isChecked(): - self.seisarray = seismicArrayPreparation.SeisArray(recfile, True) - elif self.gen_new_seisarray.radioButton_normal.isChecked(): - self.seisarray = seismicArrayPreparation.SeisArray(recfile, False) - if len(srcfile) > 0: - self.seisarray.addSourceLocations(srcfile) - if len(ptsfile) > 0: - self.seisarray.addMeasuredTopographyPoints(ptsfile) + + if self.gsa is None: + self.gsa = Gen_SeisArray(self.mainwindow) + else: + self.gsa.start_dialog() + + if self.gsa.executed: + self.seisarray = self.gsa.get_seisarray() if disconnect: self.setConnected2SurveyState(False) self.setSeisArrayState(True) + def gen_survey(self): if self.checkSurveyState(): if not self.continueDialogExists('Survey'): return if self.checkSeisArrayState(): - if self.continueDialogMessage('Use geometry information of active Seismic Array?'): - if self.gen_survey_fromSeisArray(): - self.initNewSurvey() - return - else: - return - if self.gen_survey_fromSRfiles(): + if len(self.seisarray.getSourceCoordinates()) > 0: + if self.continueDialogMessage('Use geometry information of active Seismic Array?'): + if self.gssa is None: + self.gssa = Gen_Survey_from_SA(self.mainwindow, self.seisarray) + else: + self.gssa.start_dialog() + if self.gssa.executed: + self.survey = self.gssa.get_survey() + self.initNewSurvey() + self.setConnected2SurveyState(True) + self.setPickState(False) + return + else: + if not self.continueDialogMessage('Can not use current Seismic Array,' + ' because there are no sources given.'): + return + if self.gssr is None: + self.gssr = Gen_Survey_from_SR(self.mainwindow) + else: + self.gssr.start_dialog() + if self.gssr.executed: + self.survey = self.gssr.get_survey() + self.seisarray = self.survey.seisarray self.initNewSurvey() + self.setSeisArrayState(True) + self.setConnected2SurveyState(True) + def initNewSurvey(self): - self.survey.setArtificialPick(0, 0) # artificial pick at source origin - surveyUtils.setDynamicFittedSNR(self.survey.getShotDict()) + self.survey.setArtificialPick(0, 0) # artificial pick at source origin self.setSurveyState(True) self.setPickState(False) - def gen_survey_fromSeisArray(self): - qdialog = QtGui.QDialog(self.mainwindow) - ui = Ui_generate_survey_minimal() - ui.setupUi(qdialog) - self.gen_new_survey_min = ui - self.connectButtons_gen_survey_min() - if qdialog.exec_(): - obsdir = self.gen_new_survey_min.lineEdit_obs.text() - fstart = self.gen_new_survey_min.fstart.text() - fend = self.gen_new_survey_min.fend.text() - self.survey = activeSeismoPick.Survey(obsdir, seisArray = self.seisarray, - useDefaultParas = True, fstart = fstart, - fend = fend) - self.setConnected2SurveyState(True) - self.setPickState(False) - return True - - def gen_survey_fromSRfiles(self): - qdialog = QtGui.QDialog(self.mainwindow) - ui = Ui_generate_survey() - ui.setupUi(qdialog) - self.gen_new_survey = ui - self.connectButtons_gen_survey() - if qdialog.exec_(): - srcfile = self.gen_new_survey.lineEdit_src.text() - recfile = self.gen_new_survey.lineEdit_rec.text() - obsdir = self.gen_new_survey.lineEdit_obs.text() - fstart = self.gen_new_survey.fstart.text() - fend = self.gen_new_survey.fend.text() - self.survey = activeSeismoPick.Survey(obsdir, srcfile, recfile, - useDefaultParas = True, - fstart = fstart, fend = fend) - self.setConnected2SurveyState(False) - return True def addArrayPlot(self): self.seisArrayFigure = Figure() @@ -157,11 +140,13 @@ class gui_control(object): self.seisArrayToolbar = NavigationToolbar(self.seisArrayCanvas, self.mainwindow) self.mainUI.verticalLayout_tr1.addWidget(self.seisArrayToolbar) + def addSurfacePlot(self): self.surfaceFigure = Figure() self.surfaceCanvas = FigureCanvas(self.surfaceFigure) self.mainUI.horizontalLayout_tr.addWidget(self.surfaceCanvas) + def addStatPlots(self): self.statFigure_left = Figure() self.statCanvas_left = FigureCanvas(self.statFigure_left) @@ -178,6 +163,7 @@ class gui_control(object): self.addItems2StatsComboBox() + def addItems2StatsComboBox(self): self.mainUI.comboBox_stats.insertItem(0, 'picked traces') self.mainUI.comboBox_stats.insertItem(1, 'mean SNR') @@ -186,6 +172,7 @@ class gui_control(object): self.mainUI.comboBox_stats.insertItem(4, 'median SPE') self.enablePickedTools(False) + def addItems2ShotsComboBox(self): shotnumbers = self.survey.data.keys() shotnumbers.sort() @@ -193,6 +180,7 @@ class gui_control(object): self.mainUI.comboBox_shots.insertItem(index, 'Shot: %s'%shotnumber) self.mainUI.comboBox_shots.setMaxCount(len(shotnumbers)) + def increaseShotnumber(self): currentIndex = self.mainUI.comboBox_shots.currentIndex() maxindex = self.mainUI.comboBox_shots.maxCount() - 1 @@ -201,6 +189,7 @@ class gui_control(object): else: self.mainUI.comboBox_shots.setCurrentIndex(currentIndex + 1) + def decreaseShotnumber(self): currentIndex = self.mainUI.comboBox_shots.currentIndex() maxindex = self.mainUI.comboBox_shots.maxCount() - 1 @@ -208,21 +197,26 @@ class gui_control(object): self.mainUI.comboBox_shots.setCurrentIndex(maxindex) else: self.mainUI.comboBox_shots.setCurrentIndex(currentIndex - 1) + def plotShot(self): shotnumber = int(self.mainUI.comboBox_shots.currentText().split()[1]) self.survey.data[shotnumber].matshow() + def addArrayAxes(self): self.seisArrayAx = self.seisArrayFigure.add_subplot(111) + def addSurfaceAxes(self): self.surfaceAx = self.surfaceFigure.add_subplot(111, projection = '3d') + def addStatAxes(self): self.statAx_left = self.statFigure_left.add_subplot(111) self.statAx_right = self.statFigure_right.add_subplot(111) + def enablePickedTools(self, bool, twoDim = False): self.mainUI.comboBox_stats.setEnabled(bool) self.statToolbar_left.setEnabled(bool) @@ -235,26 +229,40 @@ class gui_control(object): if bool == False: self.mainUI.comboBox_shots.clear() + def replotArray(self): self.seisArrayFigure.clf() self.addArrayAxes() self.plotArray() self.seisArrayCanvas.draw() + def replotSurface(self): self.surfaceFigure.clf() self.addSurfaceAxes() self.plotSurface() self.surfaceCanvas.draw() + def plotArray(self): self.seisarray.plotArray2D(self.seisArrayAx, highlight_measured = True, plot_topo = True, twoDim = self.seisarray.twoDim) + def plotSurface(self): if not self.seisarray.twoDim: self.seisarray.plotSurface3D(ax = self.surfaceAx, exag = True) self.seisarray.plotArray3D(ax = self.surfaceAx, legend = False, markersize = 3) + + def InitPickedWidgets(self): + if self.checkPickState(): + surveyUtils.plotScatterStats4Receivers(self.survey, self.mainUI.comboBox_stats.currentText(), + self.statAx_left, twoDim = self.survey.twoDim) + surveyUtils.plotScatterStats4Shots(self.survey, self.mainUI.comboBox_stats.currentText(), + self.statAx_right, twoDim = self.survey.twoDim) + self.addItems2ShotsComboBox() + + def refreshPickedWidgets(self): self.statFigure_left.clf() self.statFigure_right.clf() @@ -263,13 +271,6 @@ class gui_control(object): self.statCanvas_left.draw() self.statCanvas_right.draw() - def InitPickedWidgets(self): - if self.checkPickState(): - surveyUtils.plotScatterStats4Receivers(self.survey, self.mainUI.comboBox_stats.currentText(), - self.statAx_left, twoDim = self.survey.twoDim) - surveyUtils.plotScatterStats4Shots(self.survey, self.mainUI.comboBox_stats.currentText(), - self.statAx_right, twoDim = self.survey.twoDim) - self.addItems2ShotsComboBox() def printSurveyTextbox(self, init = True): if init == True: @@ -286,6 +287,7 @@ class gui_control(object): string = surveyTitle + surveyText self.mainUI.textBox_survey.setText(string) + def printSeisArrayTextbox(self, init = True): if init == True: seistup = (0, 0, 0) @@ -300,6 +302,7 @@ class gui_control(object): string = seisArrayTitle + seisArrayText self.mainUI.textBox_seisarray.setText(string) + def interpolate_receivers(self): if not self.checkSeisArrayState(): self.printDialogMessage('No Seismic Array defined.') @@ -307,21 +310,13 @@ class gui_control(object): self.seisarray.interpolateAll() self.refreshSeisArrayWidgets() + def refreshSeisArrayWidgets(self): self.replotArray() self.replotSurface() self.printSeisArrayTextbox(init = False) - - def getPickParameters(self, ui, Picking_parameters): - if Picking_parameters.exec_(): - ncores = int(ui.ncores.value()) - vmin = float(ui.lineEdit_vmin.text()) - vmax = float(ui.lineEdit_vmax.text()) - folm = float(ui.slider_folm.value())/100. - AIC = ui.checkBox_AIC.isChecked() - aicwindow = (int(ui.lineEdit_aicleft.text()), int(ui.lineEdit_aicright.text())) - return ncores, vmin, vmax, folm, AIC, aicwindow + def connect2Survey(self): if not self.checkSurveyState(): self.printDialogMessage('No Survey defined.') @@ -338,41 +333,24 @@ class gui_control(object): self.printSurveyTextbox(init = False) print('Connected Seismic Array to active Survey object.') - def getMaxCPU(self): - import multiprocessing - return multiprocessing.cpu_count() - def refreshFolm(self): - self.picker_ui.label_folm.setText('%s %%'%self.picker_ui.slider_folm.value()) - - def callPicker(self): + def startPicker(self): if not self.checkSurveyState(): self.printDialogMessage('No Survey defined.') return if self.checkPickState(): if not self.continueDialogMessage('Survey already picked. Continue?'): return - Picking_parameters = QtGui.QDialog(self.mainwindow) - ui = Ui_picking_parameters() - ui.setupUi(Picking_parameters) - ui.ncores.setMaximum(self.getMaxCPU()) - self.picker_ui = ui - QtCore.QObject.connect(self.picker_ui.slider_folm, QtCore.SIGNAL("valueChanged(int)"), self.refreshFolm) - try: - ncores, vmin, vmax, folm, AIC, aicwindow = self.getPickParameters(ui, Picking_parameters) - except TypeError: - return - - if AIC == True: - HosAic = 'aic' - else: - HosAic = 'hos' - self.survey.pickAllShots(vmin = vmin, vmax = vmax, - folm = folm, HosAic = HosAic, - aicwindow = aicwindow, cores = ncores) - self.setPickState(True) - self.printSurveyTextbox(init = False) + if self.autopicker is None: + self.autopicker = Call_autopicker(self.mainwindow, self.survey) + else: + self.autopicker.start_dialog() + + if self.autopicker.executed: + self.setPickState(True) + self.printSurveyTextbox(init = False) + def startFMTOMO(self): if not self.checkSurveyState(): @@ -381,14 +359,14 @@ class gui_control(object): if not self.checkPickState(): self.printDialogMessage('Survey not picked.') return - fmtomo_parameters = QtGui.QDialog(self.mainwindow) - ui = Ui_fmtomo_parameters() - ui.setupUi(fmtomo_parameters) - ui.nproc.setMaximum(self.getMaxCPU()) - self.fmtomo_parameters_ui = ui - self.connectButtons_startFMTOMO() - self.getFMTOMOparameters(ui, fmtomo_parameters) + if self.fmtomo is None: + self.fmtomo = Call_FMTOMO(self.mainwindow, self.survey) + else: + self.fmtomo.start_dialog() + + #if self.fmtomo.executed: + def startVTKtools(self): vtk_tools = QtGui.QDialog(self.mainwindow) @@ -399,45 +377,10 @@ class gui_control(object): self.connectButtons_vtk_tools() self.openVTKdialog(ui, vtk_tools) + def openVTKdialog(self, ui, vtk_tools): vtk_tools.exec_() - def getFMTOMOparameters(self, ui, fmtomo_parameters): - if fmtomo_parameters.exec_(): - fmtomo_dir = ui.fmtomo_dir.text() - nIter = int(ui.nIter.value()) - nproc = int(ui.nproc.value()) - btop = float(ui.btop.text()) - bbot = float(ui.bbot.text()) - propgrid = (int(ui.pgrid_x.text()), int(ui.pgrid_y.text()), int(ui.pgrid_z.text())) - vgrid = (int(ui.invgrid_x.text()), int(ui.invgrid_y.text()), int(ui.invgrid_z.text())) - cushionfactor = float(ui.cushion.text())/100. - customgrid = ui.customgrid.text() - simuldir = ui.simuldir.text() - picks_dir = os.path.join(simuldir, 'picks') - - if not os.path.isdir(picks_dir): - err = os.mkdir(picks_dir) - - self.survey.exportFMTOMO(picks_dir) - - cwd = os.getcwd() - interpolationMethod = 'linear' - os.chdir(simuldir) - if self.seisarray.twoDim: - interpolationMethod = 'nearest' - self.survey.seisarray.generateFMTOMOinputFromArray(propgrid, vgrid, (bbot, btop), cushionfactor, - interpolationMethod, customgrid = customgrid, - writeVTK = False) - os.chdir(cwd) - - tomo = fmtomoUtils.Tomo3d(fmtomo_dir, simuldir) - tomo.runTOMO3D(nproc, nIter) - - def connectButtons_startFMTOMO(self): - QtCore.QObject.connect(self.fmtomo_parameters_ui.browse_tomodir, QtCore.SIGNAL("clicked()"), self.chooseFMTOMOdir) - QtCore.QObject.connect(self.fmtomo_parameters_ui.browse_customgrid, QtCore.SIGNAL("clicked()"), self.chooseCustomgrid) - QtCore.QObject.connect(self.fmtomo_parameters_ui.browse_simuldir, QtCore.SIGNAL("clicked()"), self.chooseSimuldir) def connectButtons_vtk_tools(self): QtCore.QObject.connect(self.vtk_tools_ui.pushButton_vg, QtCore.SIGNAL("clicked()"), self.chooseVgrid) @@ -451,17 +394,21 @@ class gui_control(object): QtCore.QObject.connect(self.vtk_tools_ui.radioButton_rel, QtCore.SIGNAL("clicked()"), self.activateVgref) QtCore.QObject.connect(self.vtk_tools_ui.radioButton_abs, QtCore.SIGNAL("clicked()"), self.deactivateVgref) + def openFileParaview(self): os.system('paraview %s &'%self.vtk_tools_ui.lineEdit_vgout.text()) + def activateVgref(self): self.vtk_tools_ui.lineEdit_vgref.setEnabled(True) self.vtk_tools_ui.pushButton_vgref.setEnabled(True) + def deactivateVgref(self): self.vtk_tools_ui.lineEdit_vgref.setEnabled(False) self.vtk_tools_ui.pushButton_vgref.setEnabled(False) + def checkVgStartButton(self): ui = self.vtk_tools_ui if ui.radioButton_rel.isChecked(): @@ -475,6 +422,7 @@ class gui_control(object): else: ui.start_vg.setEnabled(False) + def checkRaysStartButton(self): ui = self.vtk_tools_ui if ui.lineEdit_rays.text() != '' and ui.lineEdit_raysout.text() != '': @@ -482,22 +430,27 @@ class gui_control(object): else: ui.start_rays.setEnabled(False) + def chooseVgrid(self): - self.vtk_tools_ui.lineEdit_vg.setText(self.openFile()) + self.vtk_tools_ui.lineEdit_vg.setText(openFile()) self.checkVgStartButton() + def chooseVgridref(self): - self.vtk_tools_ui.lineEdit_vgref.setText(self.openFile()) + self.vtk_tools_ui.lineEdit_vgref.setText(openFile()) self.checkVgStartButton() + def chooseRaysIn(self): - self.vtk_tools_ui.lineEdit_rays.setText(self.openFile()) + self.vtk_tools_ui.lineEdit_rays.setText(openFile()) self.checkRaysStartButton() + def chooseRaysOutDir(self): - self.vtk_tools_ui.lineEdit_raysout.setText(self.browseDir()) + self.vtk_tools_ui.lineEdit_raysout.setText(browseDir()) self.checkRaysStartButton() + def startvgvtk(self): ui = self.vtk_tools_ui if ui.lineEdit_vgout.text() == '': @@ -513,24 +466,15 @@ class gui_control(object): absOrRel='rel', inputfileref = ui.lineEdit_vgref.text()) + def startraysvtk(self): ui = self.vtk_tools_ui fmtomoUtils.rays2VTK(ui.lineEdit_rays.text(), ui.lineEdit_raysout.text()) + def newFileVTK(self): - self.vtk_tools_ui.lineEdit_vgout.setText(self.saveFile()) + self.vtk_tools_ui.lineEdit_vgout.setText(saveFile()) - def chooseFMTOMOdir(self): - self.fmtomo_parameters_ui.fmtomo_dir.setText(self.browseDir()) - - def chooseCustomgrid(self): - self.fmtomo_parameters_ui.customgrid.setText(self.openFile()) - - def chooseSimuldir(self): - self.fmtomo_parameters_ui.simuldir.setText(self.browseDir()) - - def chooseSeisarray(self): - self.fmtomo_parameters_ui.seisarray.setText(self.openFile()) def postprocessing(self): if not self.checkSurveyState(): @@ -538,12 +482,13 @@ class gui_control(object): return self.survey.plotAllPicks() self.refreshPickedWidgets() # wait until finished + def load_survey(self): if self.checkSurveyState(): if not self.continueDialogExists('Survey'): return - filename = self.openFile() + filename = openFile() if filename is None: return try: @@ -575,6 +520,7 @@ class gui_control(object): self.setSeisArrayState(False) self.printDialogMessage('Loaded Survey.') + def load_seisarray(self): disconnect = False if self.checkSeisArrayState(): @@ -588,7 +534,7 @@ class gui_control(object): self.survey.seisarray = None disconnect = True - filename = self.openFile() + filename = openFile() if filename is None: return try: @@ -605,24 +551,27 @@ class gui_control(object): self.seisarray = seisarray self.setSeisArrayState(True) + def save_seisarray(self): if not self.checkSeisArrayState(): self.printDialogMessage('No Seismic Array defined.') return - filename = self.saveFile() + filename = saveFile() if filename is None: return self.seisarray.saveSeisArray(filename) + def save_survey(self): if not self.checkSurveyState(): self.printDialogMessage('No Survey defined.') return - filename = self.saveFile() + filename = saveFile() if filename is None: return self.survey.saveSurvey(filename) + def setSurveyState(self, state): if state == True: self.mainUI.survey_active.setPixmap(self.applypixmap) @@ -630,18 +579,21 @@ class gui_control(object): elif state == False: self.mainUI.survey_active.setPixmap(self.cancelpixmap) + def checkSurveyState(self): if self.survey == None: return False else: return True + def checkSeisArrayState(self): if self.seisarray == None: return False else: return True + def setPickState(self, state): if state == True and self.checkSurveyState(): self.mainUI.picked_active.setPixmap(self.applypixmap) @@ -659,6 +611,7 @@ class gui_control(object): self.enablePickedTools(False) self.survey.picked = False + def setSeisArrayState(self, state): if state == True: self.mainUI.seisarray_active.setPixmap(self.applypixmap) @@ -670,12 +623,14 @@ class gui_control(object): if self.seisArrayFigure is not None: self.seisArrayFigure.clf() + def setConnected2SurveyState(self, state): if state == True: self.mainUI.seisarray_on_survey_active.setPixmap(self.applypixmap) elif state == False: self.mainUI.seisarray_on_survey_active.setPixmap(self.cancelpixmap) + def checkConnected2SurveyState(self): if self.checkSurveyState(): if self.survey.seisarray != None: @@ -683,12 +638,14 @@ class gui_control(object): else: return False + def checkPickState(self): if not self.survey: self.printDialogMessage('No Survey defined.') return return self.survey.picked + def printDialogMessage(self, message): qmb = QtGui.QMessageBox() qmb.setText(message) @@ -696,6 +653,7 @@ class gui_control(object): qmb.setIcon(QtGui.QMessageBox.Warning) qmb.exec_() + def continueDialogExists(self, name): qmb = QtGui.QMessageBox() qmb.setText('%s object already exists. Overwrite?'%name) @@ -707,6 +665,7 @@ class gui_control(object): else: return False + def continueDialogMessage(self, message): qmb = QtGui.QMessageBox() qmb.setText(message) @@ -718,63 +677,12 @@ class gui_control(object): else: return False - def connectButtons_gen_survey(self): - QtCore.QObject.connect(self.gen_new_survey.pushButton_rec, QtCore.SIGNAL("clicked()"), self.chooseReceiverfile) - QtCore.QObject.connect(self.gen_new_survey.pushButton_src, QtCore.SIGNAL("clicked()"), self.chooseSourcefile) - QtCore.QObject.connect(self.gen_new_survey.pushButton_obs, QtCore.SIGNAL("clicked()"), self.chooseObsdir) - def connectButtons_gen_survey_min(self): - QtCore.QObject.connect(self.gen_new_survey_min.pushButton_obs, QtCore.SIGNAL("clicked()"), self.chooseObsdir_min) + def exitApp(self): + QtCore.QCoreApplication.instance().quit() - def connectButtons_gen_seisarray(self): - QtCore.QObject.connect(self.gen_new_seisarray.pushButton_rec, QtCore.SIGNAL("clicked()"), self.chooseMeasuredRec) - QtCore.QObject.connect(self.gen_new_seisarray.pushButton_src, QtCore.SIGNAL("clicked()"), self.chooseMeasuredSrc) - QtCore.QObject.connect(self.gen_new_seisarray.pushButton_obs, QtCore.SIGNAL("clicked()"), self.chooseMeasuredPts) - - def chooseMeasuredSrc(self): - self.gen_new_seisarray.lineEdit_src.setText(self.openFile('Open measured sources file.')) - - def chooseMeasuredRec(self): - self.gen_new_seisarray.lineEdit_rec.setText(self.openFile('Open measured receivers file.')) - - def chooseMeasuredPts(self): - self.gen_new_seisarray.lineEdit_pts.setText(self.openFile('Open measured points file.')) - - def chooseSourcefile(self): - self.gen_new_survey.lineEdit_src.setText(self.openFile('Open sourcefile.')) - - def chooseReceiverfile(self): - self.gen_new_survey.lineEdit_rec.setText(self.openFile('Open receiverfile.')) - - def chooseObsdir(self): - self.gen_new_survey.lineEdit_obs.setText(self.browseDir('Choose observation directory.')) - - def chooseObsdir_min(self): - self.gen_new_survey_min.lineEdit_obs.setText(self.browseDir('Choose observation directory.')) - - def openFile(self, name = 'Open'): - dialog = QtGui.QFileDialog() - dialog.setWindowTitle(name) #not working yet - filename = dialog.getOpenFileName() - if len(filename[0]) > 0: - return filename[0] - - def saveFile(self, name = 'Save'): - dialog = QtGui.QFileDialog() - dialog.setWindowTitle(name) - filename = dialog.getSaveFileName() - if len(filename[0]) > 0: - return filename[0] - - def browseDir(self, name = 'Open Directory'): - dialog = QtGui.QFileDialog() - dialog.setWindowTitle(name) - directory = dialog.getExistingDirectory() - if len(directory) > 0: - return directory if __name__ == "__main__": - import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() diff --git a/pylot/core/active/__init__.py b/pylot/core/active/__init__.py index 9ef8ae9f..aafb279b 100644 --- a/pylot/core/active/__init__.py +++ b/pylot/core/active/__init__.py @@ -1,2 +1,2 @@ # -*- coding: utf-8 -*- -__author__ = 'sebastianw' +__author__ = 'marcel' diff --git a/pylot/core/active/asp3d_test.py b/pylot/core/active/asp3d_test.py deleted file mode 100644 index 1ef23d06..00000000 --- a/pylot/core/active/asp3d_test.py +++ /dev/null @@ -1,264 +0,0 @@ -# -*- coding: utf-8 -*- - -import sys -from PySide import QtCore, QtGui -from pylot.core.active import activeSeismoPick - -class Ui_ActiveSeismoPick3D(object): - def __init__(self): - self.survey = None - - def setupUi(self, MainWindow): - MainWindow.setObjectName("MainWindow") - MainWindow.resize(550, 350) - - self.centralwidget = QtGui.QWidget(MainWindow) - self.centralwidget.setObjectName("centralwidget") - self.addBrowseButtons() - self.addButtons() - self.addLineEdits() - self.addLabels() - - MainWindow.setCentralWidget(self.centralwidget) - - self.setMenubar(MainWindow) - - self.menuPreferences = QtGui.QMenu(self.menubar) - self.menuPreferences.setObjectName("menuPreferences") - MainWindow.setMenuBar(self.menubar) - - self.statusbar = QtGui.QStatusBar(MainWindow) - self.statusbar.setObjectName("statusbar") - MainWindow.setStatusBar(self.statusbar) - self.menubar.addAction(self.menuPreferences.menuAction()) - - self.retranslateUi(MainWindow) - self.connectButtons() - - def setMenubar(self, window): - self.menubar = QtGui.QMenuBar(window) - self.menubar.setGeometry(QtCore.QRect(0, 0, 603, 21)) - self.menubar.setObjectName("menubar") - - def connectButtons(self): - QtCore.QObject.connect(self.browseButton_rec, QtCore.SIGNAL("clicked()"), self.chooseReceiverfile) - QtCore.QObject.connect(self.browseButton_src, QtCore.SIGNAL("clicked()"), self.chooseSourcefile) - QtCore.QObject.connect(self.browseButton_obsdir, QtCore.SIGNAL("clicked()"), self.chooseObsdir) - QtCore.QObject.connect(self.start_picking, QtCore.SIGNAL("clicked()"), self.callPicker) - QtCore.QObject.connect(self.gen_survey, QtCore.SIGNAL("clicked()"), self.generateSurvey) - QtCore.QMetaObject.connectSlotsByName(MainWindow) - - def addLabels(self): - self.label = QtGui.QLabel(self.centralwidget) - self.label.setGeometry(QtCore.QRect(40, 70, 131, 20)) - self.label.setObjectName("label") - - self.label_2 = QtGui.QLabel(self.centralwidget) - self.label_2.setGeometry(QtCore.QRect(40, 110, 131, 20)) - self.label_2.setObjectName("label_2") - - self.label_3 = QtGui.QLabel(self.centralwidget) - self.label_3.setGeometry(QtCore.QRect(40, 150, 131, 20)) - self.label_3.setObjectName("label_3") - - def addLineEdits(self): - self.receiverfile_lineEdit = QtGui.QLineEdit(self.centralwidget) - self.receiverfile_lineEdit.setGeometry(QtCore.QRect(192, 70, 231, 20)) - self.receiverfile_lineEdit.setObjectName("receiverfile_lineEdit") - - self.sourcefile_lineEdit = QtGui.QLineEdit(self.centralwidget) - self.sourcefile_lineEdit.setGeometry(QtCore.QRect(192, 110, 231, 20)) - self.sourcefile_lineEdit.setObjectName("sourcefile_lineEdit") - - self.obsdir_lineEdit = QtGui.QLineEdit(self.centralwidget) - self.obsdir_lineEdit.setGeometry(QtCore.QRect(192, 150, 231, 20)) - self.obsdir_lineEdit.setText("") - self.obsdir_lineEdit.setObjectName("obsdir_lineEdit") - - def addBrowseButtons(self): - self.browseButton_rec = QtGui.QPushButton(self.centralwidget) - self.browseButton_rec.setGeometry(QtCore.QRect(440, 70, 75, 23)) - self.browseButton_rec.setObjectName("browseButton_rec") - - self.browseButton_src = QtGui.QPushButton(self.centralwidget) - self.browseButton_src.setGeometry(QtCore.QRect(440, 110, 75, 23)) - self.browseButton_src.setObjectName("browseButton_src") - - self.browseButton_obsdir = QtGui.QPushButton(self.centralwidget) - self.browseButton_obsdir.setGeometry(QtCore.QRect(440, 150, 75, 23)) - self.browseButton_obsdir.setObjectName("browseButton_obsdir") - - def addButtons(self): - self.gen_survey = QtGui.QPushButton(self.centralwidget) - self.gen_survey.setGeometry(QtCore.QRect(80, 230, 61, 61)) - self.gen_survey.setObjectName("gen_survey") - - self.start_picking = QtGui.QPushButton(self.centralwidget) - self.start_picking.setGeometry(QtCore.QRect(160, 230, 61, 61)) - self.start_picking.setObjectName("start_picking") - - def addProgressBar(self): - self.progressBar = QtGui.QProgressBar(self.centralwidget) - self.progressBar.setGeometry(QtCore.QRect(470, 280, 118, 23)) - self.progressBar.setObjectName("progressBar") - - def updateProgressBar(self): - self.progressBar.setProperty("value", 24) - - def browseFile(self): - dialog = QtGui.QFileDialog() - filename = dialog.getOpenFileName() - return filename[0] - - def browseDir(self): - dialog = QtGui.QFileDialog() - directory = dialog.getExistingDirectory() - return directory - - def chooseSourcefile(self): - self.sourcefile_lineEdit.setText(self.browseFile()) - - def chooseReceiverfile(self): - self.receiverfile_lineEdit.setText(self.browseFile()) - - def chooseObsdir(self): - self.obsdir_lineEdit.setText(self.browseDir()) - - def getSourcefile(self): - return self.sourcefile_lineEdit.text() - - def getReceiverfile(self): - return self.receiverfile_lineEdit.text() - - def getObsdir(self): - return self.obsdir_lineEdit.text() - - def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "ActiveSeismoPick3D", None, QtGui.QApplication.UnicodeUTF8)) - self.browseButton_rec.setText(QtGui.QApplication.translate("MainWindow", "Browse", None, QtGui.QApplication.UnicodeUTF8)) - self.browseButton_src.setText(QtGui.QApplication.translate("MainWindow", "Browse", None, QtGui.QApplication.UnicodeUTF8)) - self.label.setText(QtGui.QApplication.translate("MainWindow", "Receiver File", None, QtGui.QApplication.UnicodeUTF8)) - self.label_2.setText(QtGui.QApplication.translate("MainWindow", "Source File", None, QtGui.QApplication.UnicodeUTF8)) - self.start_picking.setText(QtGui.QApplication.translate("MainWindow", "Start\n" -"Picking", None, QtGui.QApplication.UnicodeUTF8)) - self.browseButton_obsdir.setText(QtGui.QApplication.translate("MainWindow", "Browse", None, QtGui.QApplication.UnicodeUTF8)) - self.gen_survey.setText(QtGui.QApplication.translate("MainWindow", "Gemerate\nSurvey", None, QtGui.QApplication.UnicodeUTF8)) - self.label_3.setText(QtGui.QApplication.translate("MainWindow", "Seismogram Directory", None, QtGui.QApplication.UnicodeUTF8)) - self.menuPreferences.setTitle(QtGui.QApplication.translate("MainWindow", "Preferences", None, QtGui.QApplication.UnicodeUTF8)) - - def generateSurvey(self): - obsdir = self.getObsdir() - self.survey = activeSeismoPick.Survey(self.getObsdir(), self.getSourcefile(), self.getReceiverfile(), - useDefaultParas = True) - - - def callPicker(self): - Picking_parameters = QtGui.QDialog(self.centralwidget) - ui = Ui_Picking_parameters() - ui.setupUi(Picking_parameters) - ncores, vmin, vmax, folm, AIC, aicwindow = ui.getParameters(Picking_parameters) - if AIC == True: - HosAic = 'aic' - else: - HosAic = 'hos' - if self.survey is None: - print('Survey not defined.') - return - - self.survey.pickAllShots(vmin = vmin, vmax = vmax, - folm = folm, HosAic = HosAic, - aicwindow = aicwindow, cores = ncores) - - -class Ui_Picking_parameters(object): - def setupUi(self, Picking_parameters): - Picking_parameters.setObjectName("Picking_parameters") - Picking_parameters.resize(300, 300) - self.gridLayoutWidget = QtGui.QWidget(Picking_parameters) - self.gridLayoutWidget.setGeometry(QtCore.QRect(20, 20, 250, 211)) - self.gridLayoutWidget.setObjectName("gridLayoutWidget") - self.gridLayout = QtGui.QGridLayout(self.gridLayoutWidget) - self.gridLayout.setContentsMargins(0, 0, 0, 0) - self.gridLayout.setObjectName("gridLayout") - self.label_cores = QtGui.QLabel(self.gridLayoutWidget) - self.label_cores.setObjectName("label_cores") - self.gridLayout.addWidget(self.label_cores, 0, 0, 1, 1) - self.label_vmax = QtGui.QLabel(self.gridLayoutWidget) - self.label_vmax.setObjectName("label_vmax") - self.gridLayout.addWidget(self.label_vmax, 2, 0, 1, 1) - self.label_vmin = QtGui.QLabel(self.gridLayoutWidget) - self.label_vmin.setObjectName("label_vmin") - self.gridLayout.addWidget(self.label_vmin, 1, 0, 1, 1) - self.lineEdit_ncores = QtGui.QLineEdit(self.gridLayoutWidget) - self.lineEdit_ncores.setObjectName("lineEdit_ncores") - self.gridLayout.addWidget(self.lineEdit_ncores, 0, 1, 1, 1) - self.lineEdit_vmin = QtGui.QLineEdit(self.gridLayoutWidget) - self.lineEdit_vmin.setObjectName("lineEdit_vmin") - self.gridLayout.addWidget(self.lineEdit_vmin, 1, 1, 1, 1) - self.lineEdit_vmax = QtGui.QLineEdit(self.gridLayoutWidget) - self.lineEdit_vmax.setObjectName("lineEdit_vmax") - self.gridLayout.addWidget(self.lineEdit_vmax, 2, 1, 1, 1) - self.checkBox = QtGui.QCheckBox(self.gridLayoutWidget) - self.checkBox.setObjectName("checkBox") - self.gridLayout.addWidget(self.checkBox, 4, 1, 1, 1) - self.label_folm = QtGui.QLabel(self.gridLayoutWidget) - self.label_folm.setObjectName("label_folm") - self.gridLayout.addWidget(self.label_folm, 3, 0, 1, 1) - self.label_aic = QtGui.QLabel(self.gridLayoutWidget) - self.label_aic.setObjectName("label_aic") - self.gridLayout.addWidget(self.label_aic, 4, 0, 1, 1) - self.lineEdit_folm = QtGui.QLineEdit(self.gridLayoutWidget) - self.lineEdit_folm.setObjectName("lineEdit_folm") - self.gridLayout.addWidget(self.lineEdit_folm, 3, 1, 1, 1) - self.label_aicwindow = QtGui.QLabel(self.gridLayoutWidget) - self.label_aicwindow.setObjectName("label_aicwindow") - self.gridLayout.addWidget(self.label_aicwindow, 5, 0, 1, 1) - self.lineEdit_aicwindow = QtGui.QLineEdit(self.gridLayoutWidget) - self.lineEdit_aicwindow.setObjectName("lineEdit_aicwindow") - self.gridLayout.addWidget(self.lineEdit_aicwindow, 5, 1, 1, 1) - self.buttonBox = QtGui.QDialogButtonBox(Picking_parameters) - self.buttonBox.setOrientation(QtCore.Qt.Horizontal) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) - self.buttonBox.setObjectName("buttonBox") - self.buttonBox.setGeometry(QtCore.QRect(10, 240, 250, 32)) - - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), Picking_parameters.accept) - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Picking_parameters.reject) - self.retranslateUi(Picking_parameters) - QtCore.QMetaObject.connectSlotsByName(Picking_parameters) - - def getParameters(self, Picking_parameters): - if Picking_parameters.exec_(): - ncores = int(self.lineEdit_ncores.text()) - vmin = float(self.lineEdit_vmin.text()) - vmax = float(self.lineEdit_vmax.text()) - folm = float(self.lineEdit_folm.text()) - AIC = self.checkBox.isChecked() - aicwindow = [float(val) for val in self.lineEdit_aicwindow.text().split(',')] - - return ncores, vmin, vmax, folm, AIC, tuple(aicwindow) - - def retranslateUi(self, Picking_parameters): - Picking_parameters.setWindowTitle(QtGui.QApplication.translate("Picking_parameters", "Picking_parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.label_cores.setText(QtGui.QApplication.translate("Picking_parameters", "Number of cores", None, QtGui.QApplication.UnicodeUTF8)) - self.label_vmax.setText(QtGui.QApplication.translate("Picking_parameters", "Vmax (default = 5000m/s)", None, QtGui.QApplication.UnicodeUTF8)) - self.label_vmin.setText(QtGui.QApplication.translate("Picking_parameters", "Vmin (default = 333 m/s)", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit_ncores.setText(QtGui.QApplication.translate("Picking_parameters", "1", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit_vmin.setText(QtGui.QApplication.translate("Picking_parameters", "333", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit_vmax.setText(QtGui.QApplication.translate("Picking_parameters", "5000", None, QtGui.QApplication.UnicodeUTF8)) - self.label_folm.setText(QtGui.QApplication.translate("Picking_parameters", "Fraction of local maximum\n" -"(default = 0.6)", None, QtGui.QApplication.UnicodeUTF8)) - self.label_aic.setText(QtGui.QApplication.translate("Picking_parameters", "AIC", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit_folm.setText(QtGui.QApplication.translate("Picking_parameters", "0.6", None, QtGui.QApplication.UnicodeUTF8)) - self.label_aicwindow.setText(QtGui.QApplication.translate("Picking_parameters", "AIC window (only if AIC\n" -" is checked)", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit_aicwindow.setText(QtGui.QApplication.translate("Picking_parameters", "15, 0", None, QtGui.QApplication.UnicodeUTF8)) - -if __name__ == "__main__": - app = QtGui.QApplication(sys.argv) - MainWindow = QtGui.QMainWindow() - ui = Ui_ActiveSeismoPick3D() - ui.setupUi(MainWindow) - MainWindow.show() - sys.exit(app.exec_()) - diff --git a/pylot/core/active/gui/__init__.py b/pylot/core/active/gui/__init__.py new file mode 100644 index 00000000..aafb279b --- /dev/null +++ b/pylot/core/active/gui/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +__author__ = 'marcel' diff --git a/pylot/core/active/asp3d_layout.py b/pylot/core/active/gui/asp3d_layout.py similarity index 65% rename from pylot/core/active/asp3d_layout.py rename to pylot/core/active/gui/asp3d_layout.py index 3392a068..f958fdee 100644 --- a/pylot/core/active/asp3d_layout.py +++ b/pylot/core/active/gui/asp3d_layout.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'asp3d_layout.ui' # -# Created: Tue Jul 12 21:41:12 2016 +# Created: Wed Jul 27 11:15:05 2016 # by: pyside-uic 0.2.15 running on PySide 1.2.2 # # WARNING! All changes made in this file will be lost! @@ -53,22 +53,6 @@ class Ui_MainWindow(object): self.label_2.setAlignment(QtCore.Qt.AlignCenter) self.label_2.setObjectName("label_2") self.verticalLayout.addWidget(self.label_2) - self.gen_new_seisarray = QtGui.QPushButton(self.centralwidget) - self.gen_new_seisarray.setEnabled(True) - self.gen_new_seisarray.setObjectName("gen_new_seisarray") - self.verticalLayout.addWidget(self.gen_new_seisarray) - self.load_seisarray = QtGui.QPushButton(self.centralwidget) - self.load_seisarray.setObjectName("load_seisarray") - self.verticalLayout.addWidget(self.load_seisarray) - self.save_seisarray = QtGui.QPushButton(self.centralwidget) - self.save_seisarray.setObjectName("save_seisarray") - self.verticalLayout.addWidget(self.save_seisarray) - self.interpolate_receivers = QtGui.QPushButton(self.centralwidget) - self.interpolate_receivers.setObjectName("interpolate_receivers") - self.verticalLayout.addWidget(self.interpolate_receivers) - self.connect_to_survey = QtGui.QPushButton(self.centralwidget) - self.connect_to_survey.setObjectName("connect_to_survey") - self.verticalLayout.addWidget(self.connect_to_survey) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.seisarray_active = QtGui.QLabel(self.centralwidget) @@ -142,15 +126,6 @@ class Ui_MainWindow(object): self.label_3.setAlignment(QtCore.Qt.AlignCenter) self.label_3.setObjectName("label_3") self.verticalLayout_2.addWidget(self.label_3) - self.gen_new_survey = QtGui.QPushButton(self.centralwidget) - self.gen_new_survey.setObjectName("gen_new_survey") - self.verticalLayout_2.addWidget(self.gen_new_survey) - self.load_survey = QtGui.QPushButton(self.centralwidget) - self.load_survey.setObjectName("load_survey") - self.verticalLayout_2.addWidget(self.load_survey) - self.save_survey = QtGui.QPushButton(self.centralwidget) - self.save_survey.setObjectName("save_survey") - self.verticalLayout_2.addWidget(self.save_survey) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.survey_active = QtGui.QLabel(self.centralwidget) @@ -202,79 +177,10 @@ class Ui_MainWindow(object): self.textBox_survey.setObjectName("textBox_survey") self.verticalLayout_2.addWidget(self.textBox_survey) self.verticalLayout_5.addLayout(self.verticalLayout_2) - self.line_3 = QtGui.QFrame(self.centralwidget) - self.line_3.setMinimumSize(QtCore.QSize(0, 5)) - self.line_3.setFrameShape(QtGui.QFrame.HLine) - self.line_3.setFrameShadow(QtGui.QFrame.Sunken) - self.line_3.setObjectName("line_3") - self.verticalLayout_5.addWidget(self.line_3) self.verticalLayout_3 = QtGui.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") - self.label_7 = QtGui.QLabel(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth()) - self.label_7.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("Sans Serif") - font.setPointSize(10) - font.setWeight(75) - font.setBold(True) - self.label_7.setFont(font) - self.label_7.setAlignment(QtCore.Qt.AlignCenter) - self.label_7.setObjectName("label_7") - self.verticalLayout_3.addWidget(self.label_7) - self.picker = QtGui.QPushButton(self.centralwidget) - self.picker.setObjectName("picker") - self.verticalLayout_3.addWidget(self.picker) - self.postprocessing = QtGui.QPushButton(self.centralwidget) - self.postprocessing.setObjectName("postprocessing") - self.verticalLayout_3.addWidget(self.postprocessing) - self.line_2 = QtGui.QFrame(self.centralwidget) - self.line_2.setMinimumSize(QtCore.QSize(0, 5)) - self.line_2.setFrameShape(QtGui.QFrame.HLine) - self.line_2.setFrameShadow(QtGui.QFrame.Sunken) - self.line_2.setObjectName("line_2") - self.verticalLayout_3.addWidget(self.line_2) self.verticalLayout_4 = QtGui.QVBoxLayout() self.verticalLayout_4.setObjectName("verticalLayout_4") - self.label_8 = QtGui.QLabel(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth()) - self.label_8.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("Sans Serif") - font.setPointSize(10) - font.setWeight(75) - font.setBold(True) - self.label_8.setFont(font) - self.label_8.setAlignment(QtCore.Qt.AlignCenter) - self.label_8.setObjectName("label_8") - self.verticalLayout_4.addWidget(self.label_8) - self.fmtomo = QtGui.QPushButton(self.centralwidget) - self.fmtomo.setObjectName("fmtomo") - self.verticalLayout_4.addWidget(self.fmtomo) - self.label_9 = QtGui.QLabel(self.centralwidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth()) - self.label_9.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setFamily("Sans Serif") - font.setPointSize(10) - font.setWeight(75) - font.setBold(True) - self.label_9.setFont(font) - self.label_9.setAlignment(QtCore.Qt.AlignCenter) - self.label_9.setObjectName("label_9") - self.verticalLayout_4.addWidget(self.label_9) - self.vtk_tools = QtGui.QPushButton(self.centralwidget) - self.vtk_tools.setObjectName("vtk_tools") - self.verticalLayout_4.addWidget(self.vtk_tools) self.progressBar = QtGui.QProgressBar(self.centralwidget) self.progressBar.setEnabled(True) self.progressBar.setProperty("value", 0) @@ -369,10 +275,73 @@ class Ui_MainWindow(object): self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1029, 23)) self.menubar.setObjectName("menubar") + self.menuFile = QtGui.QMenu(self.menubar) + self.menuFile.setObjectName("menuFile") + self.menuSeismic_Array = QtGui.QMenu(self.menubar) + self.menuSeismic_Array.setObjectName("menuSeismic_Array") + self.menuSurvey = QtGui.QMenu(self.menubar) + self.menuSurvey.setObjectName("menuSurvey") + self.menuPicking = QtGui.QMenu(self.menubar) + self.menuPicking.setObjectName("menuPicking") + self.menuSimulation = QtGui.QMenu(self.menubar) + self.menuSimulation.setObjectName("menuSimulation") + self.menuTools = QtGui.QMenu(self.menubar) + self.menuTools.setObjectName("menuTools") MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) + self.actionLoad_Seismic_Array = QtGui.QAction(MainWindow) + self.actionLoad_Seismic_Array.setCheckable(False) + self.actionLoad_Seismic_Array.setObjectName("actionLoad_Seismic_Array") + self.actionSave_Seismic_Array = QtGui.QAction(MainWindow) + self.actionSave_Seismic_Array.setObjectName("actionSave_Seismic_Array") + self.actionLoad_Survey = QtGui.QAction(MainWindow) + self.actionLoad_Survey.setObjectName("actionLoad_Survey") + self.actionSave_Survey = QtGui.QAction(MainWindow) + self.actionSave_Survey.setObjectName("actionSave_Survey") + self.actionExit = QtGui.QAction(MainWindow) + self.actionExit.setObjectName("actionExit") + self.actionGenerate_new_Seismic_Array = QtGui.QAction(MainWindow) + self.actionGenerate_new_Seismic_Array.setObjectName("actionGenerate_new_Seismic_Array") + self.actionInterpolate_Receivers = QtGui.QAction(MainWindow) + self.actionInterpolate_Receivers.setObjectName("actionInterpolate_Receivers") + self.actionConnect_to_Survey = QtGui.QAction(MainWindow) + self.actionConnect_to_Survey.setObjectName("actionConnect_to_Survey") + self.actionGenerate_new_Survey = QtGui.QAction(MainWindow) + self.actionGenerate_new_Survey.setObjectName("actionGenerate_new_Survey") + self.actionAutomatic_Picking = QtGui.QAction(MainWindow) + self.actionAutomatic_Picking.setObjectName("actionAutomatic_Picking") + self.actionPostprocessing = QtGui.QAction(MainWindow) + self.actionPostprocessing.setObjectName("actionPostprocessing") + self.actionStart_FMTOMO_Simulation = QtGui.QAction(MainWindow) + self.actionStart_FMTOMO_Simulation.setObjectName("actionStart_FMTOMO_Simulation") + self.actionVTK_Visualization = QtGui.QAction(MainWindow) + self.actionVTK_Visualization.setObjectName("actionVTK_Visualization") + self.actionSeismic_Array = QtGui.QAction(MainWindow) + self.actionSeismic_Array.setEnabled(False) + self.actionSeismic_Array.setObjectName("actionSeismic_Array") + self.menuFile.addSeparator() + self.menuFile.addAction(self.actionExit) + self.menuSeismic_Array.addAction(self.actionGenerate_new_Seismic_Array) + self.menuSeismic_Array.addAction(self.actionLoad_Seismic_Array) + self.menuSeismic_Array.addAction(self.actionSave_Seismic_Array) + self.menuSeismic_Array.addSeparator() + self.menuSeismic_Array.addAction(self.actionInterpolate_Receivers) + self.menuSeismic_Array.addAction(self.actionConnect_to_Survey) + self.menuSurvey.addAction(self.actionGenerate_new_Survey) + self.menuSurvey.addAction(self.actionLoad_Survey) + self.menuSurvey.addAction(self.actionSave_Survey) + self.menuPicking.addAction(self.actionAutomatic_Picking) + self.menuPicking.addAction(self.actionPostprocessing) + self.menuSimulation.addAction(self.actionStart_FMTOMO_Simulation) + self.menuTools.addAction(self.actionVTK_Visualization) + self.menubar.addAction(self.menuFile.menuAction()) + self.menubar.addAction(self.menuSurvey.menuAction()) + self.menubar.addAction(self.menuSeismic_Array.menuAction()) + self.menubar.addAction(self.menuPicking.menuAction()) + self.menubar.addAction(self.menuSimulation.menuAction()) + self.menubar.addAction(self.menuTools.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) @@ -380,41 +349,34 @@ class Ui_MainWindow(object): def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "ActiveSeismoPick 3D", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("MainWindow", "Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) - self.gen_new_seisarray.setToolTip(QtGui.QApplication.translate("MainWindow", "Generate a new Seismic Array object.", None, QtGui.QApplication.UnicodeUTF8)) - self.gen_new_seisarray.setText(QtGui.QApplication.translate("MainWindow", "Create new Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) - self.load_seisarray.setToolTip(QtGui.QApplication.translate("MainWindow", "Load an existing Seismic Array object saved as \'.pickle\' file.", None, QtGui.QApplication.UnicodeUTF8)) - self.load_seisarray.setText(QtGui.QApplication.translate("MainWindow", "Load Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) - self.save_seisarray.setToolTip(QtGui.QApplication.translate("MainWindow", "Save current Seismic Array object to \'.pickle\' file.", None, QtGui.QApplication.UnicodeUTF8)) - self.save_seisarray.setText(QtGui.QApplication.translate("MainWindow", "Save Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) - self.interpolate_receivers.setToolTip(QtGui.QApplication.translate("MainWindow", "Interpolate positions of receivers in between that were not manually measured.", None, QtGui.QApplication.UnicodeUTF8)) - self.interpolate_receivers.setText(QtGui.QApplication.translate("MainWindow", "Interpolate Receivers", None, QtGui.QApplication.UnicodeUTF8)) - self.connect_to_survey.setToolTip(QtGui.QApplication.translate("MainWindow", "Save the current Seismic Array to the current Survey object.", None, QtGui.QApplication.UnicodeUTF8)) - self.connect_to_survey.setText(QtGui.QApplication.translate("MainWindow", "Connect to Survey", None, QtGui.QApplication.UnicodeUTF8)) self.label_5.setText(QtGui.QApplication.translate("MainWindow", "active", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("MainWindow", "connected to Survey", None, QtGui.QApplication.UnicodeUTF8)) self.label_3.setText(QtGui.QApplication.translate("MainWindow", "Survey", None, QtGui.QApplication.UnicodeUTF8)) - self.gen_new_survey.setToolTip(QtGui.QApplication.translate("MainWindow", "Generate a new Survey object.", None, QtGui.QApplication.UnicodeUTF8)) - self.gen_new_survey.setText(QtGui.QApplication.translate("MainWindow", "Generate new Survey", None, QtGui.QApplication.UnicodeUTF8)) - self.load_survey.setToolTip(QtGui.QApplication.translate("MainWindow", "Load an existing Survey object from a \'.pickle\' file.", None, QtGui.QApplication.UnicodeUTF8)) - self.load_survey.setText(QtGui.QApplication.translate("MainWindow", "Load Survey", None, QtGui.QApplication.UnicodeUTF8)) - self.save_survey.setToolTip(QtGui.QApplication.translate("MainWindow", "Save current Survey object to \'.pickle\' file.", None, QtGui.QApplication.UnicodeUTF8)) - self.save_survey.setText(QtGui.QApplication.translate("MainWindow", "Save Survey", None, QtGui.QApplication.UnicodeUTF8)) self.label_4.setText(QtGui.QApplication.translate("MainWindow", "active", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("MainWindow", "picked", None, QtGui.QApplication.UnicodeUTF8)) - self.label_7.setText(QtGui.QApplication.translate("MainWindow", "Picking", None, QtGui.QApplication.UnicodeUTF8)) - self.picker.setToolTip(QtGui.QApplication.translate("MainWindow", "Choose parameters and call automatic picking routines.", None, QtGui.QApplication.UnicodeUTF8)) - self.picker.setText(QtGui.QApplication.translate("MainWindow", "Automatic Picking", None, QtGui.QApplication.UnicodeUTF8)) - self.postprocessing.setToolTip(QtGui.QApplication.translate("MainWindow", "Manual control and postprocessing of a picked Survey.", None, QtGui.QApplication.UnicodeUTF8)) - self.postprocessing.setText(QtGui.QApplication.translate("MainWindow", "Postprocessing", None, QtGui.QApplication.UnicodeUTF8)) - self.label_8.setText(QtGui.QApplication.translate("MainWindow", "Simulation", None, QtGui.QApplication.UnicodeUTF8)) - self.fmtomo.setToolTip(QtGui.QApplication.translate("MainWindow", "Set parameters and call Fast Marching Tomography algorithm.", None, QtGui.QApplication.UnicodeUTF8)) - self.fmtomo.setText(QtGui.QApplication.translate("MainWindow", "FMTOMO Simulation", None, QtGui.QApplication.UnicodeUTF8)) - self.label_9.setText(QtGui.QApplication.translate("MainWindow", "Visualization", None, QtGui.QApplication.UnicodeUTF8)) - self.vtk_tools.setToolTip(QtGui.QApplication.translate("MainWindow", "Set parameters and call Fast Marching Tomography algorithm.", None, QtGui.QApplication.UnicodeUTF8)) - self.vtk_tools.setText(QtGui.QApplication.translate("MainWindow", "VTK tools", None, QtGui.QApplication.UnicodeUTF8)) - self.label_11.setText(QtGui.QApplication.translate("MainWindow", "Plot Receiver and Shots of the Array colord by:", None, QtGui.QApplication.UnicodeUTF8)) + self.label_11.setText(QtGui.QApplication.translate("MainWindow", "Plot Receiver and Shots of the Array colored by:", None, QtGui.QApplication.UnicodeUTF8)) self.label_10.setText(QtGui.QApplication.translate("MainWindow", "Plot a single Shot:", None, QtGui.QApplication.UnicodeUTF8)) self.shot_left.setText(QtGui.QApplication.translate("MainWindow", "<", None, QtGui.QApplication.UnicodeUTF8)) self.shot_right.setText(QtGui.QApplication.translate("MainWindow", ">", None, QtGui.QApplication.UnicodeUTF8)) self.plot_shot.setText(QtGui.QApplication.translate("MainWindow", "Plot", None, QtGui.QApplication.UnicodeUTF8)) + self.menuFile.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8)) + self.menuSeismic_Array.setTitle(QtGui.QApplication.translate("MainWindow", "Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) + self.menuSurvey.setTitle(QtGui.QApplication.translate("MainWindow", "Survey", None, QtGui.QApplication.UnicodeUTF8)) + self.menuPicking.setTitle(QtGui.QApplication.translate("MainWindow", "Picking", None, QtGui.QApplication.UnicodeUTF8)) + self.menuSimulation.setTitle(QtGui.QApplication.translate("MainWindow", "Inversion", None, QtGui.QApplication.UnicodeUTF8)) + self.menuTools.setTitle(QtGui.QApplication.translate("MainWindow", "Tools", None, QtGui.QApplication.UnicodeUTF8)) + self.actionLoad_Seismic_Array.setText(QtGui.QApplication.translate("MainWindow", "Load Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) + self.actionSave_Seismic_Array.setText(QtGui.QApplication.translate("MainWindow", "Save Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) + self.actionLoad_Survey.setText(QtGui.QApplication.translate("MainWindow", "Load Survey", None, QtGui.QApplication.UnicodeUTF8)) + self.actionSave_Survey.setText(QtGui.QApplication.translate("MainWindow", "Save Survey", None, QtGui.QApplication.UnicodeUTF8)) + self.actionExit.setText(QtGui.QApplication.translate("MainWindow", "Exit", None, QtGui.QApplication.UnicodeUTF8)) + self.actionGenerate_new_Seismic_Array.setText(QtGui.QApplication.translate("MainWindow", "Generate new Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) + self.actionInterpolate_Receivers.setText(QtGui.QApplication.translate("MainWindow", "Interpolate Receivers", None, QtGui.QApplication.UnicodeUTF8)) + self.actionConnect_to_Survey.setText(QtGui.QApplication.translate("MainWindow", "Connect to Survey", None, QtGui.QApplication.UnicodeUTF8)) + self.actionGenerate_new_Survey.setText(QtGui.QApplication.translate("MainWindow", "Generate new Survey", None, QtGui.QApplication.UnicodeUTF8)) + self.actionAutomatic_Picking.setText(QtGui.QApplication.translate("MainWindow", "Automatic Picking", None, QtGui.QApplication.UnicodeUTF8)) + self.actionPostprocessing.setText(QtGui.QApplication.translate("MainWindow", "Postprocessing", None, QtGui.QApplication.UnicodeUTF8)) + self.actionStart_FMTOMO_Simulation.setText(QtGui.QApplication.translate("MainWindow", "Start FMTOMO Simulation", None, QtGui.QApplication.UnicodeUTF8)) + self.actionVTK_Visualization.setText(QtGui.QApplication.translate("MainWindow", "VTK Visualization", None, QtGui.QApplication.UnicodeUTF8)) + self.actionSeismic_Array.setText(QtGui.QApplication.translate("MainWindow", "Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/pylot/core/active/fmtomo_parameters_layout.py b/pylot/core/active/gui/fmtomo_parameters_layout.py similarity index 99% rename from pylot/core/active/fmtomo_parameters_layout.py rename to pylot/core/active/gui/fmtomo_parameters_layout.py index 04f4ad60..59db2dc4 100644 --- a/pylot/core/active/fmtomo_parameters_layout.py +++ b/pylot/core/active/gui/fmtomo_parameters_layout.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'fmtomo_parameters_layout.ui' # -# Created: Tue Jul 12 21:41:12 2016 +# Created: Wed Jul 27 11:15:05 2016 # by: pyside-uic 0.2.15 running on PySide 1.2.2 # # WARNING! All changes made in this file will be lost! @@ -270,7 +270,7 @@ class Ui_fmtomo_parameters(object): "Too low values will cause error.", None, QtGui.QApplication.UnicodeUTF8)) self.label_13.setText(QtGui.QApplication.translate("fmtomo_parameters", "Cushion factor [?]", None, QtGui.QApplication.UnicodeUTF8)) self.label_12.setText(QtGui.QApplication.translate("fmtomo_parameters", "%", None, QtGui.QApplication.UnicodeUTF8)) - self.label_4.setText(QtGui.QApplication.translate("fmtomo_parameters", "Number of Ponts", None, QtGui.QApplication.UnicodeUTF8)) + self.label_4.setText(QtGui.QApplication.translate("fmtomo_parameters", "Number of Points", None, QtGui.QApplication.UnicodeUTF8)) self.label_5.setText(QtGui.QApplication.translate("fmtomo_parameters", "X", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("fmtomo_parameters", "Y", None, QtGui.QApplication.UnicodeUTF8)) self.label_7.setText(QtGui.QApplication.translate("fmtomo_parameters", "Z", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/pylot/core/active/generate_seisarray_layout.py b/pylot/core/active/gui/generate_seisarray_layout.py similarity index 99% rename from pylot/core/active/generate_seisarray_layout.py rename to pylot/core/active/gui/generate_seisarray_layout.py index 98320874..3116febb 100644 --- a/pylot/core/active/generate_seisarray_layout.py +++ b/pylot/core/active/gui/generate_seisarray_layout.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'generate_seisarray_layout.ui' # -# Created: Tue Jul 12 21:41:13 2016 +# Created: Wed Jul 27 11:15:06 2016 # by: pyside-uic 0.2.15 running on PySide 1.2.2 # # WARNING! All changes made in this file will be lost! @@ -138,7 +138,7 @@ class Ui_generate_seisarray(object): "

Third geophone on the second receiver line with the trace ID 50 and the coordinates (10.5 [m], 20.4 [m], 30.3 [m]).

\n" "

\n" "

50 2 3 10.5 20.4 30.3

", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_interpolatable.setText(QtGui.QApplication.translate("generate_seisarray", "interpolatable [?]", None, QtGui.QApplication.UnicodeUTF8)) + self.radioButton_interpolatable.setText(QtGui.QApplication.translate("generate_seisarray", "interpolation [?]", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_rec.setText(QtGui.QApplication.translate("generate_seisarray", "Browse", None, QtGui.QApplication.UnicodeUTF8)) self.label_src.setToolTip(QtGui.QApplication.translate("generate_seisarray", "\n" "