busy adding VTK tools to main UI

This commit is contained in:
Marcel Paffrath 2016-07-05 13:59:01 +02:00
parent 5c7123af66
commit 0be69de6f7
9 changed files with 345 additions and 23 deletions

View File

@ -12,6 +12,7 @@ from generate_survey_layout import *
from generate_survey_layout_minimal import * from generate_survey_layout_minimal import *
from generate_seisarray_layout import * from generate_seisarray_layout import *
from picking_parameters_layout import * from picking_parameters_layout import *
from vtk_tools_layout import *
from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
@ -50,6 +51,7 @@ class gui_control(object):
QtCore.QObject.connect(self.mainUI.picker, QtCore.SIGNAL("clicked()"), self.callPicker) 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.postprocessing, QtCore.SIGNAL("clicked()"), self.postprocessing)
QtCore.QObject.connect(self.mainUI.fmtomo, QtCore.SIGNAL("clicked()"), self.startFMTOMO) 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.comboBox, QtCore.SIGNAL("activated(int)"), self.replotStat) QtCore.QObject.connect(self.mainUI.comboBox, QtCore.SIGNAL("activated(int)"), self.replotStat)
def gen_seisarray(self): def gen_seisarray(self):
@ -73,7 +75,10 @@ class gui_control(object):
srcfile = self.gen_new_seisarray.lineEdit_src.text() srcfile = self.gen_new_seisarray.lineEdit_src.text()
recfile = self.gen_new_seisarray.lineEdit_rec.text() recfile = self.gen_new_seisarray.lineEdit_rec.text()
ptsfile = self.gen_new_seisarray.lineEdit_pts.text() ptsfile = self.gen_new_seisarray.lineEdit_pts.text()
self.seisarray = seismicArrayPreparation.SeisArray(recfile) 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: if len(srcfile) > 0:
self.seisarray.addSourceLocations(srcfile) self.seisarray.addSourceLocations(srcfile)
if len(ptsfile) > 0: if len(ptsfile) > 0:
@ -247,6 +252,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
if not self.checkPickState():
self.printDialogMessage('Survey not picked.')
return
fmtomo_parameters = QtGui.QDialog(self.mainwindow) fmtomo_parameters = QtGui.QDialog(self.mainwindow)
ui = Ui_fmtomo_parameters() ui = Ui_fmtomo_parameters()
ui.setupUi(fmtomo_parameters) ui.setupUi(fmtomo_parameters)
@ -256,6 +264,15 @@ class gui_control(object):
self.connectButtons_startFMTOMO() self.connectButtons_startFMTOMO()
self.getFMTOMOparameters(ui, fmtomo_parameters) self.getFMTOMOparameters(ui, fmtomo_parameters)
def startVTKtools(self):
vtk_tools = QtGui.QDialog(self.mainwindow)
ui = Ui_vtk_tools()
ui.setupUi(vtk_tools)
self.vtk_tools_ui = ui
self.connectButtons_vtk_tools()
#self.getFMTOMOparameters(ui, fmtomo_parameters)
def getFMTOMOparameters(self, ui, fmtomo_parameters): def getFMTOMOparameters(self, ui, fmtomo_parameters):
if fmtomo_parameters.exec_(): if fmtomo_parameters.exec_():
fmtomo_dir = ui.fmtomo_dir.text() fmtomo_dir = ui.fmtomo_dir.text()
@ -291,6 +308,40 @@ class gui_control(object):
QtCore.QObject.connect(self.fmtomo_parameters_ui.browse_customgrid, QtCore.SIGNAL("clicked()"), self.chooseCustomgrid) 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) 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)
QtCore.QObject.connect(self.vtk_tools_ui.pushButton_vgref, QtCore.SIGNAL("clicked()"), self.chooseVgridref)
QtCore.QObject.connect(self.vtk_tools_ui.pushButton_rays, QtCore.SIGNAL("clicked()"), self.chooseRaysIn)
QtCore.QObject.connect(self.vtk_tools_ui.pushButton_raysout, QtCore.SIGNAL("clicked()"), self.chooseRaysOutDir)
QtCore.QObject.connect(self.vtk_tools_ui.start_vg, QtCore.SIGNAL("clicked()"), self.startvgvtk)
QtCore.QObject.connect(self.vtk_tools_ui.start_rays, QtCore.SIGNAL("clicked()"), self.startraysvtk)
def chooseVgrid(self):
self.vtk_tools_ui.lineEdit_vg.setText(self.openFile())
def chooseVgridref(self):
self.vtk_tools_ui.lineEdit_vgref.setText(self.openFile())
def chooseRaysIn(self):
self.vtk_tools_ui.lineEdit_rays.setText(self.openFile())
def chooseRaysOutDir(self):
self.vtk_tools_ui.lineEdit_raysout.setText(self.browseDir())
def startvgvtk(self):
if self.vtk_tools_ui.radioButton_abs.isChecked():
fmtomoUtils.vgrids2VTK(inputfile = self.vtk_tools_ui.lineEdit_vg.text(),
outputfile = 'vgrids_rel.vtk',
absOrRel='abs')
elif self.vtk_tools_ui.radioButton_rel.isChecked():
fmtomoUtils.vgrids2VTK(inputfile = self.vtk_tools_ui.lineEdit_vg.text(),
outputfile = 'vgrids_rel.vtk',
absOrRel='rel',
inputfileref = self.vtk_tools_ui.lineEdit_vgref.text())
def startraysvtk(self):
fmtomoUtils.rays2VTK()
def chooseFMTOMOdir(self): def chooseFMTOMOdir(self):
self.fmtomo_parameters_ui.fmtomo_dir.setText(self.browseDir()) self.fmtomo_parameters_ui.fmtomo_dir.setText(self.browseDir())

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: Tue Jun 28 14:40:06 2016 # Created: Tue Jul 5 13:55:55 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!
@ -27,8 +27,8 @@ class Ui_MainWindow(object):
MainWindow.setWindowIcon(icon) MainWindow.setWindowIcon(icon)
self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.horizontalLayout_4 = QtGui.QHBoxLayout(self.centralwidget) self.gridLayout = QtGui.QGridLayout(self.centralwidget)
self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.gridLayout.setObjectName("gridLayout")
self.formLayout = QtGui.QFormLayout() self.formLayout = QtGui.QFormLayout()
self.formLayout.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint) self.formLayout.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)
@ -237,6 +237,24 @@ class Ui_MainWindow(object):
self.fmtomo = QtGui.QPushButton(self.centralwidget) self.fmtomo = QtGui.QPushButton(self.centralwidget)
self.fmtomo.setObjectName("fmtomo") self.fmtomo.setObjectName("fmtomo")
self.verticalLayout_4.addWidget(self.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.verticalLayout_3.addLayout(self.verticalLayout_4) self.verticalLayout_3.addLayout(self.verticalLayout_4)
self.verticalLayout_5.addLayout(self.verticalLayout_3) self.verticalLayout_5.addLayout(self.verticalLayout_3)
self.formLayout.setLayout(0, QtGui.QFormLayout.LabelRole, self.verticalLayout_5) self.formLayout.setLayout(0, QtGui.QFormLayout.LabelRole, self.verticalLayout_5)
@ -259,7 +277,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_br.setObjectName("horizontalLayout_br") self.horizontalLayout_br.setObjectName("horizontalLayout_br")
self.verticalLayout_right.addLayout(self.horizontalLayout_br) self.verticalLayout_right.addLayout(self.horizontalLayout_br)
self.formLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.verticalLayout_right) self.formLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.verticalLayout_right)
self.horizontalLayout_4.addLayout(self.formLayout) self.gridLayout.addLayout(self.formLayout, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow) self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 905, 23)) self.menubar.setGeometry(QtCore.QRect(0, 0, 905, 23))
@ -304,4 +322,7 @@ class Ui_MainWindow(object):
self.label_8.setText(QtGui.QApplication.translate("MainWindow", "Simulation", 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.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.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))

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: Tue Jun 28 14:40:06 2016 # Created: Tue Jul 5 13:55:55 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: Tue Jun 28 14:40:06 2016 # Created: Tue Jul 5 13:55:55 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_generate_seisarray(object): class Ui_generate_seisarray(object):
def setupUi(self, generate_seisarray): def setupUi(self, generate_seisarray):
generate_seisarray.setObjectName("generate_seisarray") generate_seisarray.setObjectName("generate_seisarray")
generate_seisarray.resize(400, 221) generate_seisarray.resize(403, 221)
generate_seisarray.setMinimumSize(QtCore.QSize(400, 220)) generate_seisarray.setMinimumSize(QtCore.QSize(400, 220))
icon = QtGui.QIcon() icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("../asp3d_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon.addPixmap(QtGui.QPixmap("../asp3d_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
@ -23,14 +23,27 @@ class Ui_generate_seisarray(object):
self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setObjectName("verticalLayout")
self.verticalLayout_4 = QtGui.QVBoxLayout() self.verticalLayout_4 = QtGui.QVBoxLayout()
self.verticalLayout_4.setObjectName("verticalLayout_4") self.verticalLayout_4.setObjectName("verticalLayout_4")
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_rec = QtGui.QLabel(generate_seisarray) self.label_rec = QtGui.QLabel(generate_seisarray)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_rec.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.label_rec.sizePolicy().hasHeightForWidth())
self.label_rec.setSizePolicy(sizePolicy) self.label_rec.setSizePolicy(sizePolicy)
self.label_rec.setToolTip("")
self.label_rec.setObjectName("label_rec") self.label_rec.setObjectName("label_rec")
self.verticalLayout_4.addWidget(self.label_rec) self.horizontalLayout.addWidget(self.label_rec)
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.radioButton_normal = QtGui.QRadioButton(generate_seisarray)
self.radioButton_normal.setChecked(True)
self.radioButton_normal.setObjectName("radioButton_normal")
self.horizontalLayout.addWidget(self.radioButton_normal)
self.radioButton_interpolatable = QtGui.QRadioButton(generate_seisarray)
self.radioButton_interpolatable.setObjectName("radioButton_interpolatable")
self.horizontalLayout.addWidget(self.radioButton_interpolatable)
self.verticalLayout_4.addLayout(self.horizontalLayout)
self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4 = QtGui.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.lineEdit_rec = QtGui.QLineEdit(generate_seisarray) self.lineEdit_rec = QtGui.QLineEdit(generate_seisarray)
@ -95,11 +108,27 @@ class Ui_generate_seisarray(object):
def retranslateUi(self, generate_seisarray): def retranslateUi(self, generate_seisarray):
generate_seisarray.setWindowTitle(QtGui.QApplication.translate("generate_seisarray", "Generate new Seismic Array", None, QtGui.QApplication.UnicodeUTF8)) generate_seisarray.setWindowTitle(QtGui.QApplication.translate("generate_seisarray", "Generate new Seismic Array", None, QtGui.QApplication.UnicodeUTF8))
self.label_rec.setToolTip(QtGui.QApplication.translate("generate_seisarray", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" self.label_rec.setText(QtGui.QApplication.translate("generate_seisarray", "Measured Receivers", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_normal.setToolTip(QtGui.QApplication.translate("generate_seisarray", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n" "p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Load<span style=\" font-weight:600;\"> measured </span>receiver input file. The input file must be in the following format:</p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Load <span style=\" font-weight:600;\">normal </span>measured receiver input file. The input file must be in the following format:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Containing in each line, separated by spaces:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">[trace ID (int)] [X (float)] [Y (float)] [Z (float)]</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">For example:</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Geophone with the trace ID 50 and the coordinates (10.5 [m], 20.4 [m], 30.3 [m]).</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">50 10.5 20.4 30.3</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_normal.setText(QtGui.QApplication.translate("generate_seisarray", "normal [?]", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_interpolatable.setToolTip(QtGui.QApplication.translate("generate_seisarray", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Load<span style=\" font-weight:600;\"> </span>measured receiver input file that can be <span style=\" font-weight:600;\">interpolated</span>. The input file must be in the following format:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n" "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Containing in each line, separated by spaces:</p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Containing in each line, separated by spaces:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n" "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
@ -109,7 +138,7 @@ class Ui_generate_seisarray(object):
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Third geophone on the second receiver line with the trace ID 50 and the coordinates (10.5 [m], 20.4 [m], 30.3 [m]).</p>\n" "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Third geophone on the second receiver line with the trace ID 50 and the coordinates (10.5 [m], 20.4 [m], 30.3 [m]).</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n" "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">50 2 3 10.5 20.4 30.3</p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">50 2 3 10.5 20.4 30.3</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.label_rec.setText(QtGui.QApplication.translate("generate_seisarray", "Measured Receivers [?]", None, QtGui.QApplication.UnicodeUTF8)) self.radioButton_interpolatable.setText(QtGui.QApplication.translate("generate_seisarray", "interpolatable [?]", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_rec.setText(QtGui.QApplication.translate("generate_seisarray", "Browse", 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", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" self.label_src.setToolTip(QtGui.QApplication.translate("generate_seisarray", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"

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: Tue Jun 28 14:40:06 2016 # Created: Tue Jul 5 13:55:56 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: Tue Jun 28 14:40:07 2016 # Created: Tue Jul 5 13:55:56 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: Tue Jun 28 14:40:07 2016 # Created: Tue Jul 5 13:55:56 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

@ -17,18 +17,29 @@ class SeisArray(object):
Note: Source and Receiver files for FMTOMO will be generated by the Survey object (because traveltimes will be added directly). Note: Source and Receiver files for FMTOMO will be generated by the Survey object (because traveltimes will be added directly).
''' '''
def __init__(self, recfile): def __init__(self, recfile, interpolatable = False):
self.recfile = recfile self.recfile = recfile
self._receiverlines = {}
self._receiverCoords = {} self._receiverCoords = {}
self._measuredReceivers = {} self._measuredReceivers = {}
self._measuredTopo = {} self._measuredTopo = {}
self._sourceCoords = {} self._sourceCoords = {}
self._geophoneNumbers = {}
self._receiverlist = open(self.recfile, 'r').readlines() self._receiverlist = open(self.recfile, 'r').readlines()
self._generateReceiverlines() if interpolatable == True:
self._setReceiverCoords() self._init_interpolatable()
elif interpolatable == False:
self._init_normal()
def _init_normal(self):
self.interpolatable = False
self._setReceiverCoords_normal()
def _init_interpolatable(self):
self.interpolatable = True
self._receiverlines = {}
self._geophoneNumbers = {}
self._setReceiverCoords_interp()
self._setGeophoneNumbers() self._setGeophoneNumbers()
self._generateReceiverlines()
def _generateReceiverlines(self): def _generateReceiverlines(self):
''' '''
@ -42,9 +53,10 @@ class SeisArray(object):
self._receiverlines[lineID] = [] self._receiverlines[lineID] = []
self._receiverlines[lineID].append(traceID) self._receiverlines[lineID].append(traceID)
def _setReceiverCoords(self): def _setReceiverCoords_interp(self):
''' '''
Fills the three x, y, z dictionaries with measured coordinates Fills the three x, y, z dictionaries with measured coordinates
in case of interpolatable measured input data.
''' '''
for line in self._getReceiverlist(): for line in self._getReceiverlist():
traceID = int(line.split()[0]) traceID = int(line.split()[0])
@ -54,6 +66,18 @@ class SeisArray(object):
self._receiverCoords[traceID] = (x, y, z) self._receiverCoords[traceID] = (x, y, z)
self._measuredReceivers[traceID] = (x, y, z) self._measuredReceivers[traceID] = (x, y, z)
def _setReceiverCoords_normal(self):
'''
Fills the three x, y, z dictionaries with measured coordinates
'''
for line in self._getReceiverlist():
traceID = int(line.split()[0])
x = float(line.split()[1])
y = float(line.split()[2])
z = float(line.split()[3])
self._receiverCoords[traceID] = (x, y, z)
self._measuredReceivers[traceID] = (x, y, z)
def _setGeophoneNumbers(self): def _setGeophoneNumbers(self):
for line in self._getReceiverlist(): for line in self._getReceiverlist():
traceID = int(line.split()[0]) traceID = int(line.split()[0])
@ -159,10 +183,17 @@ class SeisArray(object):
self._getReceiverValue(traceID1, coordinate) - self._getReceiverValue(traceID2, coordinate)) / num_spaces self._getReceiverValue(traceID1, coordinate) - self._getReceiverValue(traceID2, coordinate)) / num_spaces
return mean_distance return mean_distance
def checkInterpolatable(self):
if self.interpolatable == False:
print('Not interpolatable.')
return self.interpolatable
def interpolateValues(self, coordinate): def interpolateValues(self, coordinate):
''' '''
Interpolates and sets all values (linear) for coordinate = 'X', 'Y' or 'Z' Interpolates and sets all values (linear) for coordinate = 'X', 'Y' or 'Z'
''' '''
if not self.checkInterpolatable():
return
for lineID in self._getReceiverlines().keys(): for lineID in self._getReceiverlines().keys():
number_measured = len(self._getReceiverlines()[lineID]) number_measured = len(self._getReceiverlines()[lineID])
for index, traceID1 in enumerate(self._getReceiverlines()[lineID]): for index, traceID1 in enumerate(self._getReceiverlines()[lineID]):
@ -314,6 +345,8 @@ class SeisArray(object):
self.interpolateValues(coordinate) self.interpolateValues(coordinate)
def interpolateAll(self): def interpolateAll(self):
if not self.checkInterpolatable():
return
self._interpolateXY4rec() self._interpolateXY4rec()
self.interpZcoords4rec() self.interpZcoords4rec()
print('Interpolated receiver locations.') print('Interpolated receiver locations.')
@ -811,7 +844,7 @@ class SeisArray(object):
ax.set_xlabel('X [m]') ax.set_xlabel('X [m]')
ax.set_ylabel('Y [m]') ax.set_ylabel('Y [m]')
ax.set_aspect('equal') ax.set_aspect('equal')
ax.legend() ax.legend(prop={'size':7})
if annotations == True: if annotations == True:
for traceID in self.getReceiverCoordinates().keys(): for traceID in self.getReceiverCoordinates().keys():
ax.annotate((' ' + str(traceID)), xy=(self._getXreceiver(traceID), self._getYreceiver(traceID)), ax.annotate((' ' + str(traceID)), xy=(self._getXreceiver(traceID), self._getYreceiver(traceID)),

View File

@ -0,0 +1,188 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'vtk_tools_layout.ui'
#
# Created: Tue Jul 5 13:55:56 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2
#
# WARNING! All changes made in this file will be lost!
from PySide import QtCore, QtGui
class Ui_vtk_tools(object):
def setupUi(self, vtk_tools):
vtk_tools.setObjectName("vtk_tools")
vtk_tools.resize(406, 407)
self.verticalLayout_8 = QtGui.QVBoxLayout(vtk_tools)
self.verticalLayout_8.setObjectName("verticalLayout_8")
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.verticalLayout_4 = QtGui.QVBoxLayout()
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_rec = QtGui.QLabel(vtk_tools)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_rec.sizePolicy().hasHeightForWidth())
self.label_rec.setSizePolicy(sizePolicy)
self.label_rec.setToolTip("")
self.label_rec.setObjectName("label_rec")
self.horizontalLayout.addWidget(self.label_rec)
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.radioButton_abs = QtGui.QRadioButton(vtk_tools)
self.radioButton_abs.setChecked(True)
self.radioButton_abs.setObjectName("radioButton_abs")
self.horizontalLayout.addWidget(self.radioButton_abs)
self.radioButton_rel = QtGui.QRadioButton(vtk_tools)
self.radioButton_rel.setObjectName("radioButton_rel")
self.horizontalLayout.addWidget(self.radioButton_rel)
self.verticalLayout_4.addLayout(self.horizontalLayout)
self.verticalLayout_6 = QtGui.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_3 = QtGui.QLabel(vtk_tools)
self.label_3.setObjectName("label_3")
self.verticalLayout_6.addWidget(self.label_3)
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.lineEdit_vg = QtGui.QLineEdit(vtk_tools)
self.lineEdit_vg.setObjectName("lineEdit_vg")
self.horizontalLayout_2.addWidget(self.lineEdit_vg)
self.pushButton_vg = QtGui.QPushButton(vtk_tools)
self.pushButton_vg.setObjectName("pushButton_vg")
self.horizontalLayout_2.addWidget(self.pushButton_vg)
self.verticalLayout_6.addLayout(self.horizontalLayout_2)
self.verticalLayout_4.addLayout(self.verticalLayout_6)
self.verticalLayout_7 = QtGui.QVBoxLayout()
self.verticalLayout_7.setObjectName("verticalLayout_7")
self.label_4 = QtGui.QLabel(vtk_tools)
self.label_4.setObjectName("label_4")
self.verticalLayout_7.addWidget(self.label_4)
self.horizontalLayout_4 = QtGui.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.lineEdit_vgref = QtGui.QLineEdit(vtk_tools)
self.lineEdit_vgref.setEnabled(False)
self.lineEdit_vgref.setObjectName("lineEdit_vgref")
self.horizontalLayout_4.addWidget(self.lineEdit_vgref)
self.pushButton_vgref = QtGui.QPushButton(vtk_tools)
self.pushButton_vgref.setEnabled(False)
self.pushButton_vgref.setObjectName("pushButton_vgref")
self.horizontalLayout_4.addWidget(self.pushButton_vgref)
self.verticalLayout_7.addLayout(self.horizontalLayout_4)
self.start_vg = QtGui.QPushButton(vtk_tools)
self.start_vg.setEnabled(False)
self.start_vg.setObjectName("start_vg")
self.verticalLayout_7.addWidget(self.start_vg)
self.verticalLayout_4.addLayout(self.verticalLayout_7)
self.verticalLayout.addLayout(self.verticalLayout_4)
self.verticalLayout_2 = QtGui.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.line = QtGui.QFrame(vtk_tools)
self.line.setFrameShape(QtGui.QFrame.HLine)
self.line.setFrameShadow(QtGui.QFrame.Sunken)
self.line.setObjectName("line")
self.verticalLayout_2.addWidget(self.line)
self.label_src = QtGui.QLabel(vtk_tools)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_src.sizePolicy().hasHeightForWidth())
self.label_src.setSizePolicy(sizePolicy)
self.label_src.setObjectName("label_src")
self.verticalLayout_2.addWidget(self.label_src)
self.verticalLayout_3 = QtGui.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.label = QtGui.QLabel(vtk_tools)
self.label.setObjectName("label")
self.verticalLayout_3.addWidget(self.label)
self.horizontalLayout_6 = QtGui.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.lineEdit_rays = QtGui.QLineEdit(vtk_tools)
self.lineEdit_rays.setObjectName("lineEdit_rays")
self.horizontalLayout_6.addWidget(self.lineEdit_rays)
self.pushButton_rays = QtGui.QPushButton(vtk_tools)
self.pushButton_rays.setObjectName("pushButton_rays")
self.horizontalLayout_6.addWidget(self.pushButton_rays)
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
self.verticalLayout_2.addLayout(self.verticalLayout_3)
self.verticalLayout_5 = QtGui.QVBoxLayout()
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.label_2 = QtGui.QLabel(vtk_tools)
self.label_2.setObjectName("label_2")
self.verticalLayout_5.addWidget(self.label_2)
self.horizontalLayout_5 = QtGui.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.lineEdit_raysout = QtGui.QLineEdit(vtk_tools)
self.lineEdit_raysout.setObjectName("lineEdit_raysout")
self.horizontalLayout_5.addWidget(self.lineEdit_raysout)
self.pushButton_raysout = QtGui.QPushButton(vtk_tools)
self.pushButton_raysout.setObjectName("pushButton_raysout")
self.horizontalLayout_5.addWidget(self.pushButton_raysout)
self.verticalLayout_5.addLayout(self.horizontalLayout_5)
self.start_rays = QtGui.QPushButton(vtk_tools)
self.start_rays.setEnabled(False)
self.start_rays.setObjectName("start_rays")
self.verticalLayout_5.addWidget(self.start_rays)
self.verticalLayout_2.addLayout(self.verticalLayout_5)
self.verticalLayout.addLayout(self.verticalLayout_2)
self.verticalLayout_8.addLayout(self.verticalLayout)
self.buttonBox = QtGui.QDialogButtonBox(vtk_tools)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout_8.addWidget(self.buttonBox)
self.retranslateUi(vtk_tools)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), vtk_tools.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), vtk_tools.reject)
QtCore.QMetaObject.connectSlotsByName(vtk_tools)
def retranslateUi(self, vtk_tools):
vtk_tools.setWindowTitle(QtGui.QApplication.translate("vtk_tools", "VTK tools", None, QtGui.QApplication.UnicodeUTF8))
self.label_rec.setText(QtGui.QApplication.translate("vtk_tools", "Velocity grid to VTK", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_abs.setToolTip(QtGui.QApplication.translate("vtk_tools", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Load <span style=\" font-weight:600;\">normal </span>measured receiver input file. The input file must be in the following format:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Containing in each line, separated by spaces:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">[trace ID (int)] [X (float)] [Y (float)] [Z (float)]</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">For example:</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Geophone with the trace ID 50 and the coordinates (10.5 [m], 20.4 [m], 30.3 [m]).</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">50 10.5 20.4 30.3</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_abs.setText(QtGui.QApplication.translate("vtk_tools", "absolute [?]", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_rel.setToolTip(QtGui.QApplication.translate("vtk_tools", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Load<span style=\" font-weight:600;\"> </span>measured receiver input file that can be <span style=\" font-weight:600;\">interpolated</span>. The input file must be in the following format:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Containing in each line, separated by spaces:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">[trace ID (int)] [receiver line ID (int)] [number of the geophone on receiver line (int)] [X (float)] [Y (float)] [Z (float)]</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">For example:</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Third geophone on the second receiver line with the trace ID 50 and the coordinates (10.5 [m], 20.4 [m], 30.3 [m]).</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">50 2 3 10.5 20.4 30.3</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_rel.setText(QtGui.QApplication.translate("vtk_tools", "relative [?]", None, QtGui.QApplication.UnicodeUTF8))
self.label_3.setText(QtGui.QApplication.translate("vtk_tools", "Browse for velocity grid file (\'vgrids.in\'):", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_vg.setText(QtGui.QApplication.translate("vtk_tools", "Browse", None, QtGui.QApplication.UnicodeUTF8))
self.label_4.setText(QtGui.QApplication.translate("vtk_tools", "Browse for reference velocity grid file (\'vgridsref.in\'):", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_vgref.setText(QtGui.QApplication.translate("vtk_tools", "Browse", None, QtGui.QApplication.UnicodeUTF8))
self.start_vg.setText(QtGui.QApplication.translate("vtk_tools", "Start", None, QtGui.QApplication.UnicodeUTF8))
self.label_src.setToolTip(QtGui.QApplication.translate("vtk_tools", "Create VTK files from the FMTOMO output file \'rays.dat\'.\n"
"This will generate one file of ray paths for each individual source.", None, QtGui.QApplication.UnicodeUTF8))
self.label_src.setText(QtGui.QApplication.translate("vtk_tools", "Rays to VTK [?]", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("vtk_tools", "Browse for input file (\'rays.dat\'):", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_rays.setText(QtGui.QApplication.translate("vtk_tools", "Browse", None, QtGui.QApplication.UnicodeUTF8))
self.label_2.setText(QtGui.QApplication.translate("vtk_tools", "Specify output directory:", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_raysout.setText(QtGui.QApplication.translate("vtk_tools", "Browse", None, QtGui.QApplication.UnicodeUTF8))
self.start_rays.setText(QtGui.QApplication.translate("vtk_tools", "Start", None, QtGui.QApplication.UnicodeUTF8))